Проблема
AI-агенты генерируют код быстро, но за скорость приходится платить. В прямом смысле - токены стоят денег. И в переносном - качество кода деградирует без контроля.
Я столкнулся с тремя проблемами одновременно:
- Архитектура деградирует - агент пишет код, который работает, но нарушает слоевую архитектуру, создает циклические зависимости и god-классы
- Расходы растут - сложный промпт уходит в Opus за $15/1M токенов, хотя Haiku за $0.80 справился бы
- Контент не фильтруется - в production-промптах появляется то, что там быть не должно
Каждую из этих проблем можно решить отдельным инструментом. Но когда инструменты работают вместе - они усиливают друг друга.
Пайплайн
Запрос проходит через цепочку линтеров, каждый отвечает за свою область:
- seclint - проверяет контент на безопасность (6+/12+/16+/18+)
- promptlint - оценивает сложность, выбирает модель
- Агент - выполняет задачу на выбранной модели
- archlint - проверяет результат на архитектурные нарушения
- costlint - записывает стоимость, считает cache hit rate
Если archlint отклоняет результат - задача возвращается на более мощную модель. costlint фиксирует стоимость этой эскалации.
Инструменты
archlint - архитектурный линтер
Сканирует Go-проекты на структурные нарушения.
| |
Что находит:
- Нарушения слоев (handler вызывает repository напрямую)
- God-классы (>20 методов или >15 зависимостей)
- Циклические зависимости
- Нарушения Interface Segregation (интерфейсы >5 методов)
Метрики: fan-out, coupling (Ca/Ce), количество компонентов и связей.
GitHub: mshogin/archlint
promptlint - роутер по сложности промптов
Оценивает сложность промпта и выбирает модель. Без LLM, чистые метрики, <10ms.
| |
Сигналы: длина, количество предложений, доменные ключевые слова, тип действия (fix/create/refactor), наличие кода.
Интеграция с ccproxy - реальный роутинг запросов Claude Code через прокси.
GitHub: mikeshogin/promptlint
costlint - анализ затрат на токены
Считает стоимость, анализирует кэширование, проводит A/B тесты между моделями.
| |
| |
Метрики кэширования: cache hit rate, block reuse, content entropy, Jaccard similarity. A/B тесты: сплит трафика 30/30/40, per-group метрики стоимости и качества.
GitHub: mikeshogin/costlint
seclint / promptsec - контент-фильтр
Возрастной рейтинг промптов: 6+, 12+, 16+, 18+.
| |
Учитывает образовательный контекст - объяснение SQL-инъекций для курса по безопасности не блокируется, а получает рейтинг 16+ вместо 18+.
GitHub: mikeshogin/seclint / mikeshogin/promptsec
Общие принципы
Все инструменты следуют одним правилам:
- Go - единый стек, единый билд
- Без LLM - чистые метрики, regex, keyword matching. <10ms на запрос
- CLI + HTTP - каждый инструмент работает как команда и как сервер
- JSONL телеметрия - единый формат логов для анализа
- Pipeline-friendly - exit codes, stdout, pipes
Числа
На тестовой нагрузке (342 запроса за неделю):
| Метрика | До | После |
|---|---|---|
| Расход на токены | $19.54 | $8.20 |
| Архитектурные нарушения | 63 | 12 |
| Запросы на дорогую модель | 100% opus | 14% opus |
| Время роутинга | - | <10ms |
Экономия 58% на API без потери качества - дешевые задачи уходят на Haiku, архитектурные задачи остаются на Opus.
Оркестрация
Инструменты работают автономно, но максимальный эффект дают вместе. Для оркестрации используется myhome - daemon-based управление AI-агентами с workflow stages и scheduled tasks.
Связка:
- myhome запускает агента
- promptlint выбирает модель (pre-route hook)
- archlint проверяет результат (quality gate stage)
- costlint считает стоимость (telemetry consumer)
- seclint фильтрует входящие промпты (pre-filter)
Начать
| |
Ссылки
- archlint - архитектурный линтер
- promptlint - роутер по сложности
- costlint - анализ затрат
- seclint / promptsec - контент-фильтр
- myhome - оркестрация агентов
- ECOSYSTEM.md - карта интеграции