Этот файл описывает, как AI-агенты должны работать с ClickAdvisor.
ClickAdvisor — local-first анализатор ClickHouse SQL. Доверенный runtime path: детерминированный rule engine, ML evaluation surface и локальный retrieval. Generative LLM не должен становиться источником production-рекомендаций внутри CLI/MCP.
- Начинай с чтения
README.md,docs/ARCHITECTURE.md,docs/evaluation.mdи релевантных файлов изdocs/rules/. - Проверяй текущее состояние через
git status -sb. - Не перетирай пользовательские изменения и не используй destructive git commands без явной просьбы.
- Для поиска используй
rg/rg --files.
- У каждого runtime rule должен быть card в
docs/rules/cards/. - У каждого card со статусом implemented должна быть зарегистрированная
реализация в
clickadvisor/rules/registry.py. - Нельзя добавлять duplicate
rule_id. - Если правилу нужен schema/environment/explain context, отсутствие контекста
должно давать
None, а не догадочную находку. - Tier 2 правила являются advisory. Не добавляй automatic rewrite, если card явно не содержит безопасный шаблон.
- Environment rules должны читать только
QueryContext.environmentи дополнительные доступные context-поля.
Для нового или измененного правила нужны прямые unit-тесты:
- positive case;
- no-trigger или no-context case;
- проверка ожидаемого
rule_id.
Если правило можно представить в benchmark schema, добавь case в
benchmark/cases/synthetic_expanded/.
Benchmark labels должны отражать реальные multi-label overlaps. В strict mode не должно быть неожиданных FP/FN.
- Основная документация репозитория ведется на русском языке.
- README должен соответствовать фактическим счетчикам rules/tests/benchmark.
- Не заявляй speedup, production LLM, query replay или автоматические DDL изменения, если этого нет в коде и проверках.
- Enterprise/security формулировки должны подчеркивать zero data egress: SQL, DDL, EXPLAIN и environment context не отправляются во внешние LLM/API.
Перед финальным ответом или PR запускай:
poetry run python scripts/rules/validate_catalog.py
poetry run python scripts/benchmark/validate_cases.py
poetry run pytest --ignore=tests/integration -q
poetry run ruff check clickadvisor tests scripts
poetry run mypy clickadvisor
poetry run python scripts/eval/run_benchmark.py --cases-dir benchmark/cases/synthetic_expanded --mode strictЕсли проверку невозможно запустить, явно напиши причину.
- Следуй существующим паттернам в
clickadvisor/rules/tier1/,clickadvisor/rules/detectors/,clickadvisor/rules/environment.py. - Не добавляй тяжёлую абстракцию ради одного правила.
- Комментарии оставляй только там, где они помогают понять нетривиальную логику.
- Не добавляй сетевые зависимости в critical path анализа.
- Работай маленькими ветками от свежего
origin/main. - Коммит должен быть тематически цельным.
- Перед push убедись, что рабочее дерево содержит только изменения текущей задачи.