День 31: ветка через MCP и команда помощи
Что сделано
-
Локальный stdio-сервер MCP
mcpgit— один файл, без зависимостей, со своей копией JSON-RPC. Два инструмента, оба без аргументов:git.branchиgit.changed. -
Подключение — третьей записью в
.mcp.json. Сервер живёт только в сессии Claude Code на ноутбуке владельца: в образы и в выкатку он не входит. -
Скилл
/project-helpберёт ветку и изменённые файлы уmcpgit, спрашивает корпус проекта черезproject.search, читает названные файлы и отвечает со ссылками. Ответа в корпусе нет — говорит это, а не достраивает..agents/skills/project-help/SKILL.md · ADR 2026-10-18-1147, п. 1.5
-
Тест поднимает сервер дочерним процессом во временном git-репозитории и проверяет оба ответа и отказ на неизвестный метод.
Пробел: ни ветки через MCP, ни команды о проекте до этого дня не было — поиск по корпусу был, а эти два источника в одну команду не собирались.
Честно о границе: ветку и список изменённых файлов Claude Code получает и без MCP, одной строкой оболочки. Ценность дня — форма задания и показанный протокол, а не новая способность.
Как устроен протокол stdio у mcpgit
Сервер читает строки JSON-RPC из stdin и пишет ответы в stdout — ни HTTP, ни SDK, ни одной внешней зависимости. Своя копия протокола взята по образцу сервера новостей проекта: initialize, tools/list, tools/call, отказ инструмента полем isError.
Обе команды git — литералы через execFile: аргументов от модели инструменты не принимают вовсе, поэтому подставить в команду нечего. Рабочий каталог — корень проекта из окружения сессии.
Где смотреть: mcpgit/server.mjs, ADR 2026-10-18-1147, п. 1.
День 31 «Ассистент разработчика»: RAG по README + docs; MCP — минимум текущая git-ветка (по желанию список файлов / diff); команда помощи отвечает на вопросы о проекте с документацией и контекстом. Формат: видео + код.
День 32: AI-ревью PR по метке
Что сделано
-
Workflow на официальном действии
anthropics/claude-code-action, запуск — только по меткеai-review. Метку ставит владелец или агент-оркестратор; роли-исполнители и роли гейтов её не ставят..github/workflows/ai-review.yml · ADR 2026-10-18-1347 · PR #349
-
Авторизация — отдельный ключ API только для ревью. Токен подписки не используется: его отзыв — это выход из аккаунта на всех устройствах, то есть утечка выбила бы владельца из его собственного Claude Code.
-
Поиск по корпусу в ревью — существующий сервер
projectиз.mcp.json, его ключ приезжает секретом GitHub. Это четвёртое место, где живёт ключ, и перечень мест с чеклистом ротации держит инвариант I-15. -
Инструменты — только чтение и комментарий; оболочка не разрешена. Оболочка раскрыла бы значение секрета в тело публичного комментария, а подсказку для этого можно было бы положить прямо в дифф.
ADR 2026-10-18-1147, п. 2.5 · .github/workflows/ai-review.yml
-
Потолки одного запуска — 20 ходов и $5.00 стоимости; величину потолка назначил владелец. Сверх них — предел объёма диффа и предел времени задания.
Пробел: конвейера ревью на PR не было вовсе — ревью делали только роли агентов в сессиях владельца.
Прогоны ревью
| Прогон | Патч в контексте | Ходов | Стоимость, $ |
|---|---|---|---|
| 39167342284 | не передавался | 9 | 0.0192 |
| 39168905131 | не передавался | 6 | 0.0165 |
| 39172463573 | прочитан частью | 5 | 0.0254 |
| 39173658224 | не прочитан | 4 | 0.0214 |
| 39174606896 | прочитан частью | 5 | 0.0701 |
| 39175635220 | прочитан целиком | 5 | 0.1115 |
Стоимость показана с четырьмя знаками после запятой; полные значения и строки патча — в ADR 2026-10-18-2238. Четвёртый прогон патч получил, но не прочитал — счёл его отсутствующим.
Разброс стоимости на шести прогонах — от $0.0165 до $0.1115 за прогон (ADR 2026-10-18-2238). Это измерения, а не оценка: третий и пятый прогоны — одно и то же число ходов и одна и та же прочитанная часть патча, а стоят они по-разному.
Два прогона из шести закончились не штатно. Прогон 39167342284 оборвался по числу ходов — ревью он не опубликовал. Прогон 39173658224 ревью опубликовал, но с ложной причиной: написал, что патча в рабочем дереве нет и что дифф приложен в описании PR, — ложны оба утверждения, а настоящая причина так и не установлена.
Открыть живое ревью на PR #349
- Ревью от
github-actions[bot]в гейты мержа не входит и консенсуса не меняет: это демонстрация задания, а не замена ролям. - Подмена указаний через дифф не снята, а сужена: оболочки нет и записи в репозиторий нет, поэтому худший исход — ложное или пустое ревью.
- Секреты стали достижимы из неслитой ветки: workflow исполняется из самого PR. Это цена запуска на событиях PR, и она названа в ADR недели.
Почему прежняя стоимостная модель опровергнута
Сначала расход считали как «постоянная часть плюс цена хода». Прогоны 3 и 5 эту прямую сломали: число ходов одно и то же, прочитанная часть патча одна и та же, а стоимость различается в 2.8 раза. Значит ни ходы, ни объём прочитанного патча стоимость не объясняют, и публиковать наклон как оценку нельзя.
Поэтому здесь нет ни среднего, ни «обычно около»: показаны шесть измерений и границы наблюдённого разброса. Выше верхнего измерения ничего не подтверждено — прогонов дороже у проекта просто нет.
Отдельно названо, что потолок объёма держит только патч: описание PR тоже едет в контекст и растёт каждым кругом гейтов, а его не ограничивает ничто. Разбор — ADR 2026-10-18-2238.
День 32 «Автоматизация ревью кода»: GitHub Action на PR, ассистент получает diff и изменённые файлы, использует RAG (документация + код), выдаёт ревью: потенциальные баги, архитектурные проблемы, рекомендации.
День 33: ассистент поддержки
Ассистент поддержки делается в приложении аренды вилл: он ищет ответ по FAQ и документации и берёт контекст тикета через MCP. Решение сдавать этот день кодом другого репозитория и названная цена такого плана — ADR 2026-10-18-1147, пп. 3.1 и 3.3.
Что увидят проверяющие
Идёт
Код этого дня живёт в приватном репозитории MikeKharr/samui-villas, и проверяющие его не увидят. Что сделано — описано здесь; чем это показано — видео и выдержки по выбору владельца. Выдержек приватного кода на этой странице нет.
Видео и выдержки добавит владелец.
День 33 «Ассистент поддержки»: RAG (FAQ, документация) + контекст пользователя/тикета через MCP (CRM или JSON).
День 34: ассистент над файлами
Этот день перенесён в публичный репозиторий адвента решением владельца — в отличие от дней 33 и 35, которые остаются в приватном (ADR 2026-10-18-2152). Предмет для файлового ассистента здесь настоящий: очередь задач и журналы проекта.
Что сделано
-
Сервер MCP
mcpfilesпо образцуmcpgit: четыре инструмента, три читают, один пишет —docs.read,docs.search,backlog.list,backlog.close.mcpfiles/server.mjs · mcpfiles/README.md · ADR 2026-10-18-2152 · PR #354
-
Воспроизводимость — свойство, а не обещание: второй прогон того же сценария на том же дереве не меняет ни одного файла и даёт пустой
git diff. Это держит тест. -
Две преграды: любой путь из запроса сверяется с корнем проекта по разрешённому пути, а
.git/и файлы.envзакрыты по имени уже разрешённого пути. Путь записи из запроса не собирается вовсе. -
Скилл
/backlog-close— сценарий уровня цели: «закрыть пункт очереди по его подтверждению». Пункт, помеченный «Владельцу», скилл сам не закрывает.
Пробел: отметка «пункт очереди закрыт» делалась руками каждую итерацию — перенос строки из очереди в архив никто не автоматизировал.
День 34 «Ассистент для работы с файлами»: читает, ищет по нескольким файлам, анализирует, создаёт/меняет файлы; минимум 2 сценария; задача на уровне цели; результат воспроизводим; изменения сохраняются или выводятся diff.
День 35: приложение
Реальная задача недели — трёхсторонний маркетплейс аренды люкс-вилл: владельцы, управляющие и гости, а сервис живёт в мессенджере. Решение делать его отдельным репозиторием и всё, что из этого следует, — ADR 2026-10-18-1147, п. 3.
Что увидят проверяющие
Идёт
Код этого дня живёт в приватном репозитории MikeKharr/samui-villas, и проверяющие его не увидят. Что сделано — описано здесь; чем это показано — видео и выдержки по выбору владельца. Выдержек приватного кода на этой странице нет.
Видео и выдержки добавит владелец.
День 35 «Реальная задача»: реальное AI-приложение под реальную задачу.