Примечание: для локальной агентной работы root-level source of truth теперь находится в
AGENTS.md. Этот документ сохраняется как расширенный справочник по режимам и принципам, но при конфликте приоритет уAGENTS.md.
Этот документ содержит все правила работы агента Analyzer Machine. Используйте его как контекст при работе с проектом в OpenAI Codex или других AI-инструментах.
- Не выдумывать данные/цифры/ответы API
- Если данных нет — указывать, какая команда/файл нужны
- Все цифры должны быть из evidence (workbook, кэш, вывод CLI)
- Никаких секретов в выводе: токены/ключи/credentials не печатать
- Не записывать секреты в репозиторий
- Секреты только в переменных окружения (
.envфайлы, не в git)
- Все расчёты (дельты, вклады, топы) должны считаться кодом/скриптами
- Не считать "в голове" и не просить LLM считать
- LLM используется только для интерпретации результатов кода
- Любые правки файлов — аккуратно
- Не удалять существующее без причины
- Каждый сайт = отдельная папка
clients/<client_name>/config.yaml - Секреты: только локально (
.envилиclients/<client_name>/.env.local) - Эти файлы всегда в
.gitignoreи.cursorindexingignore - Отчёты/артефакты складывать в
reports/и/илиreports/<client_name>/
Если пользователь не указывает режим явно, используется MODE: OPERATOR.
Цель: Выполнить расследование используя существующие capabilities, создать evidence-based отчёт.
Жёсткие правила:
- НЕ изменять код или документы в режиме OPERATOR
- Все цифры/выводы ОБЯЗАТЕЛЬНО должны быть из evidence файлов (raw/norm/workbook), созданных CLI
- LLM не должен "считать" метрики; только интерпретировать результаты кода
- Никогда не печатать и не логировать секреты (токены, client secrets)
Процесс:
- Распарсить запрос пользователя, вывести гипотезы
- Сопоставить гипотезы с доступными capabilities из
docs/hypotheses/hypothesis_to_data_map.mdилиcapabilities_registry.yaml - Запустить минимальный набор CLI команд для сбора evidence (raw/norm/workbook)
- Если команда упала: диагностировать и повторить только операционными шагами (без изменения кода)
- Если нужные данные/срез не поддерживаются: вывести "CAPABILITY MISSING" и создать DEV-TICKET:
- какие данные нужны (endpoint/dimensions/metrics/filters)
- ожидаемые CLI команды
- ожидаемые cache/workbook артефакты
- DoD (как проверить)
- затем ОСТАНОВИТЬСЯ (не импровизировать выводы)
- Вывод: выполненные команды + пути к evidence + краткий отчёт со ссылками на evidence
Цель: Реализовать/исправить capabilities, чтобы режим OPERATOR мог работать.
Жёсткие правила:
- Изменения кода разрешены ТОЛЬКО в режиме BUILDER
- Каждое изменение должно заканчиваться smoke test (команды для запуска + ожидаемые артефакты)
- Обновлять документацию при добавлении/изменении capabilities (если эти документы есть в репозитории):
docs/spec.mddocs/api_catalog.mddocs/hypotheses/hypothesis_to_data_map.md
- Никогда не печатать и не логировать секреты
Процесс:
- Указать точный scope изменений (какие файлы изменить, почему)
- Реализовать минимальные изменения для удовлетворения DEV-TICKET / исправления бага
- Запустить smoke tests локально (или предоставить точные команды) и подтвердить артефакты (raw/norm/workbook)
- Вернуть краткий changelog (изменённые файлы) + команды для проверки
- Затем указать перезапустить в
MODE: OPERATORдля реального расследования
- Переформулировать задачу в 2–4 строки: client, периоды, KPI (трафик/конверсии/ecommerce)
- Выбрать существующие capabilities/команды CLI, которые нужны, и перечислить точные команды
- Указать, какие артефакты будут созданы автоматически:
data_cache/<client>— у команды есть флаг--refresh, использовать его по умолчанию- Если
--refreshне поддерживается, продолжить без него (без остановки)
- Прочитать созданный workbook(и) из
data_cache/<client>/ - Во время Run НЕ менять код и документы
- Выполнять команды через встроенный терминал
- Собирать артефакты в
data_cache/иreports/ - Любые цифры/выводы допускаются только если есть "evidence": путь к workbook/кэшу/выводу CLI
- Запрещено читать "в голове" и не просить LLM считать
- Секреты никогда не печатать и не записывать в репозиторий
Отчёт должен содержать:
- Executive summary — главные выводы (2–3 предложения)
- Facts — факты (цифры) с путями к evidence
- Drivers — топ вкладов (что больше всего повлияло)
- Hypotheses — 5–8 гипотез + какие данные нужны для проверки
- Next actions — приоритетные действия
Evidence pack:
- Создать
reports/<client>/<investigation_name>_evidence.txtсо списком путей к workbook и кэшам
Если пользователь просит анализ (падение/рост/аномалия/разобраться/почему), считать это запросом на Run.
Пользователь НЕ обязан упоминать: runbook, AGENT_LOOP, workbook, data_cache, evidence, команды CLI.
Агент сам подбирает команды и сам управляет файлами/путями/папками по правилам выше.
Workbook — это агрегированные результаты анализа, сохранённые в JSON.
Структура:
{
"meta": {
"client": "...",
"counter_id": 12345678,
"p1_start": "2024-01-01",
"p1_end": "2024-01-31",
"p2_start": "2025-01-01",
"p2_end": "2025-01-31",
"generated_at": "2025-12-26T12:00:00.000000Z",
"limit": 50,
"refresh_used": false
},
"totals": {
"total_visits_p1": 50000.0,
"total_visits_p2": 40000.0,
"total_delta_abs": -10000.0,
"total_delta_pct": -20.0
},
"rows": [
{
"source": "Search engine traffic",
"visits_p1": 40000.0,
"visits_p2": 30000.0,
"delta_abs": -10000.0,
"delta_pct": -25.0,
"contribution_pct": 100.0
}
]
}Примеры: см. docs/samples/workbook_*.json
Normalized данные — это нормализованные ответы API, сохранённые в JSON.
Формат: массив объектов
Пример: см. docs/samples/normalized_data_example.json
python -m app.cli analyze-sources <client> <p1_start> <p1_end> <p2_start> <p2_end> [--limit N] [--refresh]python -m app.cli analyze-pages <client> <p1_start> <p1_end> <p2_start> <p2_end> [--limit N] [--refresh]python -m app.cli analyze-pages-by-source <client> <p1_start> <p1_end> <p2_start> <p2_end> --source "<source>" [--limit N] [--refresh]python -m app.cli analyze-goals-by-source <client> <p1_start> <p1_end> <p2_start> <p2_end> --goal-id <goal_id> [--limit N] [--refresh]python -m app.cli analyze-goals-by-page <client> <p1_start> <p1_end> <p2_start> <p2_end> --goal-id <goal_id> [--limit N] [--refresh]python -m app.cli analyze-gsc-queries <client> <p1_start> <p1_end> <p2_start> <p2_end> [--limit N] [--refresh]python -m app.cli analyze-gsc-pages <client> <p1_start> <p1_end> <p2_start> <p2_end> [--limit N] [--refresh]python -m app.cli metrika-goals-list <client> [--refresh]Реестр всех capabilities агента находится в capabilities_registry.yaml.
Каждая capability содержит:
id— уникальный идентификаторname— человеко-читаемое имяstatus— implemented / planned_tier1 / planned_tier2 / planned_tier3command_template— шаблон CLI командыartifacts— список артефактов (workbook, cache)checks_hypotheses— список ID гипотез, которые можно проверитьpriority— числовой приоритет
Маппинг гипотез к данным находится в:
docs/hypotheses/hypothesis_to_data_map.mddocs/hypotheses/seo_hypothesis_library.md
Полная документация проекта:
docs/AGENT_LOOP.md— стандарт работы агентаdocs/spec.md— спецификация проектаdocs/api_catalog.md— каталог API запросовdocs/analysis_rules.md— правила анализаdocs/capability_matrix.md— матрица capabilitiesdocs/data_sources/— каталоги источников данных
- Стандарт процесса:
docs/AGENT_LOOP.md - Принципы работы:
docs/AGENT_LOOP.md - Пример работы агента:
docs/agent_example_run.md