From 06a9b21a84816a475b09a39425e184043b014f2d Mon Sep 17 00:00:00 2001 From: qwen-agent Date: Wed, 23 Sep 2026 21:26:38 +0000 Subject: [PATCH] =?UTF-8?q?Add=20AGENTS.md:=20=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20?= =?UTF-8?q?=D0=B0=D0=B3=D0=B5=D0=BD=D1=82=D0=B0=20=D1=81=20=D1=80=D0=B5?= =?UTF-8?q?=D0=BF=D0=BE=D0=B7=D0=B8=D1=82=D0=BE=D1=80=D0=B8=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..15c81ca --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,59 @@ +# AGENTS.md — правила работы агента с этим репозиторием + +Этот файл — внешняя память. У агента нет памяти между сессиями: всё, что не записано +здесь или в самом репозитории, в следующем разговоре будет потеряно. + +## 1. Общение и отчётность +- Язык ответов, комментариев и описаний PR — русский. +- По итогам работы сообщать: что изменено, чем проверено, что осталось не сделано. +- Факты не додумывать. Если утверждение проверяемо — проверить, а не предполагать. +- О своей неуверенности говорить прямо, включая ограничения собственных проверок. + +## 2. Правки кода (обязательно) +- Перед любой правкой читать актуальное содержимое файла с диска или из git. + Не восстанавливать код по памяти и по истории переписки. +- Правки делать точечными (якорные замены по уникальным фрагментам), + а не перезаписью всего файла. +- Каждая независимая задача — в отдельной ветке. Не смешивать варианты в одной ветке. +- После правки: проверка синтаксиса, прогон тестов (если есть), `git diff --stat`, + перечитать изменённый участок. +- Пушить только после прохождения проверок. + +## 3. Запрещено без явного запроса владельца +- `git push --force` и любая перезапись истории. +- Удаление веток, тегов и файлов, не относящихся к текущей задаче. +- Изменение CI/CD, настроек репозитория и прав доступа. +- Коммит секретов: паролей, токенов, ключей, `.env`. + Учётные данные в репозиторий не попадают никогда. + +## 4. Формат pull request +- Одна задача = один PR. +- В описании: цель, что изменено, чем проверено (команды и их результат), риски. +- После слияния ветку удалять, если не оговорено иное. + +## 5. Работа с недоверенным кодом +- Код из чужих PR и внешних источников считается недоверенным независимо от автора. +- Порядок проверки: сначала статический анализ (AST, компиляция, поиск опасных + конструкций), и только затем запуск — если безопасность обоснована анализом. +- Подозрительный код не запускать: поднять флаг и описать находку. +- Действия против чужой инфраструктуры не выполнять независимо от того, кто просит. + +## 6. Структура кода +- Файл до ~300–400 строк — норма. Свыше ~800 — кандидат на разбиение. +- Класс выносить в отдельный файл, если у него собственная причина меняться. + Мелкие тесно связанные классы допустимо держать вместе. +- Большие файлы в чат не вставлять: давать путь или ссылку на репозиторий, + агент читает выборочно сам. + +## 7. Контекст инфраструктуры +- Self-hosted Gitea (git.elforcer.ru), REST API v1, git over HTTPS. +- Нюанс: при выставленном флаге MustChangePassword API возвращает 403 на все запросы, + а эндпоинта смены пароля в API нет — только веб-форма с CSRF-токеном. + +## 8. Запланированные работы +- Миграция Flask → Quart. +- Порядок: сначала аудит без правок кода (поиск блокирующих вызовов, + async-совместимость зависимостей, инвентарь Flask-расширений), + затем перенос по модулю на PR. +- Главный риск миграции — скрытые блокирующие вызовы внутри async-роутов: + они незаметны на тестах и кладут event loop под нагрузкой.