Шпаргалка

Шпаргалка харнес агента: компоненты, файлы, проблемы и чек-лист запуска

Обновлено: · Skillaria.Top

Харнес агента состоит из пяти подсистем: инструкции, инструменты, среда, состояние и обратная связь. Минимальный набор файлов — AGENTS.md как короткий роутер, скрипт проверки (make check, verify.sh), файл прогресса и список фич со статусами; статус готовности ставит скрипт, а не агент.

Пять подсистем харнеса

ПодсистемаЧто этоАртефактыСимптом поломки
ИнструкцииЧто агент должен знать о проектеAGENTS.md / CLAUDE.md, skills, docs/, ADRНарушает известные конвенции
ИнструментыЧто агент может сделатьshell, тесты, линтер, браузер, MCP-серверы«Хочет, но не может»
СредаГде агент работаетlock-файлы, Docker/devcontainer, git worktree, песочница, init.shСессия начинается с починки окружения
СостояниеЧто переживает перезапускPROGRESS.md, DECISIONS.md, feature_list.json, коммитыНовая сессия не знает, где остановились
Обратная связьКак агент узнаёт об ошибкеmake check, E2E, хуки, arch-check, оценщик«Готово», а не работает

Порядок внедрения с нуля: обратная связь → инструкции → состояние → среда → инструменты.

Файлы харнеса

ФайлНазначениеПравило
AGENTS.md / CLAUDE.mdВходная точка: что за проект, как запустить, как проверитьКороткий роутер (порядка 80 строк), ссылки на доки с условием «когда читать»
docs/*.mdПодробности по темамЧитаются по требованию, не целиком
.claude/skills/*/SKILL.mdПовторяемые процедуры (деплой, ревью)Подгружаются, когда задача совпала с описанием
PROGRESS.mdСостояние, сделано, блокеры, следующие шагиОбновлять в конце каждой сессии
DECISIONS.mdРешение, причина, отвергнутые вариантыЗаписывать путь, а не только вывод
feature_list.jsonФичи: behavior, verification, stateРовно одна фича active (WIP=1)
scripts/verify.shПроверка фичи и перевод в passingЕдинственный, кто ставит passing, с SHA коммита
scripts/arch-check.shАрхитектурные границыКод выхода 1 + WHY и FIX в выводе
scripts/init.shПроверка окружения перед работойОкружение, чистый git, зелёный make check, активная фича
sprint contractКонтракт на фичу до кодаВ скоупе / вне скоупа / открытые вопросы
.claude/settings.jsonРазрешения и хуки Claude CodeПроверки на событиях, а не в памяти агента

Скелет AGENTS.md

# Проект: платёжный бэкенд (FastAPI, PostgreSQL)

## Запуск
docker compose up -d && ./scripts/init.sh

## Проверка
make check   # линт, типы, юнит, arch-check
make e2e     # сквозные сценарии

## Definition of Done
- make check и make e2e — код 0
- фича переведена в passing скриптом scripts/verify.sh
- PROGRESS.md обновлён

## MUST
- запросы к БД только через репозитории
- секреты только из переменных окружения

## Документы
- docs/payments.md — когда задача касается оплаты и возвратов
- docs/migrations.md — когда меняется схема БД

Состояния фичи

СостояниеЗначениеКто переводит
pendingВ очередиПланировщик
activeВ работе (только одна)Агент при старте
passingПроверка пройденаТолько verify.sh
blockedНужно решение человекаАгент с описанием причины

Уровни верификации

УровеньЧтоКогда
1Линт, типыВсегда
2Юнит- и интеграционные тестыВсегда
3E2EИзменение больше одного слоя; перед «готово»
4arch-checkНовые межслойные импорты

Право на «готово» — только после верхнего уровня. Зелёные юниты — не готовность.

Механизация правил

УровеньИнструментЦена
grep-гвардСкрипт с поиском паттерна и сообщением WHY/FIXМинуты
Правило линтераimport-linter (Python), dependency-cruiser, eslint-plugin-boundaries (JS/TS)Час
Архитектурный тестТест в CI, падающий при нарушении слоёвБольше, но видно в make check
#!/usr/bin/env bash
fail=0
if grep -rn "from app.db" app/services/; then
  echo "WHY: сервисы не обращаются к БД напрямую"
  echo "FIX: используйте репозиторий из app/repositories/"
  fail=1
fi
exit $fail

Типичные проблемы и решения

ПроблемаПодсистемаРешение
Правило в CLAUDE.md не соблюдаетсяИнструкцииСократить файл, правило превратить в проверку или хук
Агент не может запустить тестыИнструментыРазрешить команду, установить зависимости в образ
Разное поведение на разных машинахСредаlock-файлы, Docker/devcontainer, фиксированные версии рантайма
Амнезия между сессиямиСостояниеPROGRESS.md, session handoff, чтение в начале сессии
Три фичи начаты, ни одна не законченаСостояниеWIP=1 в feature_list.json
«Готово», а не работаетОбратная связьDoD, E2E, verify.sh, независимый оценщик
Тесты зелёные, фича сломанаОбратная связьE2E с реальной базой и конфигурацией
Агент копирует плохие паттерныОбратная связьarch-check с первого дня
Непонятно, что агент сделалСостояниеМелкие коммиты, отчёт в PROGRESS.md, DECISIONS.md
Агент сломал окружение за ночьСредаПесочница, git worktree, чекпоинты, откат через init.sh
Один и тот же комментарий на ревью дваждыХарнес в целомПревратить в проверку в make check, убрать текст из инструкций

Роли для долгих задач

РольДелаетНе делает
ПланировщикФичи с критериями приёмкиНе пишет код
ГенераторРеализует одну фичу, гоняет тестыНе решает, готово ли
ОценщикВердикт по рубрике со ссылками на файл, строку, логНе видит рассуждений генератора
МерджКоммит при review == passЭто код, а не агент

Бюджет автономной работы

  • Цель — одно предложение (например, довести все фичи до passing).
  • WIP=1, лимит времени и попыток на фичу.
  • Метрика растёт монотонно, регрессия — немедленный откат.
  • Миграции, инфраструктура, деньги — эскалация человеку.
  • После нескольких неудачных ревью — начать фичу с чистого контекста.

Чек-лист запуска агента

  1. Есть AGENTS.md: стек, запуск, команда проверки, DoD.
  2. make check проходит на чистом клоне.
  3. Окружение воспроизводимо: lock-файлы, Docker или devcontainer.
  4. Агенту доступны нужные команды, опасные — запрещены или в песочнице.
  5. Есть E2E хотя бы на главный сценарий.
  6. Есть PROGRESS.md и правило читать его в начале сессии.
  7. Фичи в списке со статусами, активна одна.
  8. Статус passing ставит скрипт.
  9. Сообщения проверок содержат WHY и FIX.
  10. Задача сформулирована с критериями приёмки и границами скоупа.
  11. Определено, что требует решения человека.
  12. Посчитан verification gap до изменений, чтобы было с чем сравнить.

Метрики харнеса

МетрикаКак считать
Verification gapДоля «готово» без подтверждения проверкой на 10 задачах
MTTRВремя от поломки до восстановления рабочего состояния
Холодный стартОтвечает ли новая сессия на вопросы «где мы, что дальше» без догадок
АбляцияПросадка при отключении одной подсистемы на фиксированном наборе задач

Коротко

Харнес — это контур, а не файл: инструкции, инструменты, среда, состояние и обратная связь. Начинайте с проверки, держите AGENTS.md коротким, отдайте статус готовности скрипту и пересматривайте харнес регулярно. Всё это собирается целиком на сквозном проекте в курсе по харнес-инжинирингу.

Частые вопросы

Чем AGENTS.md отличается от CLAUDE.md?

По назначению это одно и то же — файл инструкций для агента. CLAUDE.md читает Claude Code, AGENTS.md — общий формат для разных агентов; в CLAUDE.md можно просто сослаться на AGENTS.md.

Сколько строк должно быть в AGENTS.md?

Жёсткого лимита нет, но входной файл стоит держать коротким — порядка сотни строк, как оглавление. Детали выносятся в отдельные документы.

Нужен ли feature_list.json для маленького проекта?

Для разовых правок нет. Он окупается, когда агент работает над несколькими фичами подряд или в нескольких сессиях.

Где хранить секреты, к которым нужен доступ агенту?

В переменных окружения или менеджере секретов, а не в файлах инструкций и не в коде. Агенту даётся доступ к окружению, а не к значениям в тексте.

Разберите тему на видео

Эта тема подробно разобрана с практикой в курсе «Harness Engineering: инженерия надёжности AI-агентов».

Перейти к курсу