← AI Advent 2026

Дни 31–35: ассистенты

Неделя пяти ассистентов: ветка через MCP и команда помощи, ревью PR по метке, ассистент поддержки, ассистент над файлами и реальное приложение. Код дней 33 и 35 живёт в приватном репозитории, и на их секциях это сказано прямо.

День 31: ветка через MCP и команда помощи

Что сделано

  • Локальный stdio-сервер MCP mcpgit — один файл, без зависимостей, со своей копией JSON-RPC. Два инструмента, оба без аргументов: git.branch и git.changed.

    Сделано18.10.2026

  • Подключение — третьей записью в .mcp.json. Сервер живёт только в сессии Claude Code на ноутбуке владельца: в образы и в выкатку он не входит.

    Сделано18.10.2026

  • Скилл /project-help берёт ветку и изменённые файлы у mcpgit, спрашивает корпус проекта через project.search, читает названные файлы и отвечает со ссылками. Ответа в корпусе нет — говорит это, а не достраивает.

    Сделано18.10.2026

  • Тест поднимает сервер дочерним процессом во временном git-репозитории и проверяет оба ответа и отказ на неизвестный метод.

    Сделано18.10.2026

Пробел: ни ветки через 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. Метку ставит владелец или агент-оркестратор; роли-исполнители и роли гейтов её не ставят.

    Сделано18.10.2026

  • Авторизация — отдельный ключ API только для ревью. Токен подписки не используется: его отзыв — это выход из аккаунта на всех устройствах, то есть утечка выбила бы владельца из его собственного Claude Code.

    Сделано18.10.2026

  • Поиск по корпусу в ревью — существующий сервер project из .mcp.json, его ключ приезжает секретом GitHub. Это четвёртое место, где живёт ключ, и перечень мест с чеклистом ротации держит инвариант I-15.

    Сделано18.10.2026

  • Инструменты — только чтение и комментарий; оболочка не разрешена. Оболочка раскрыла бы значение секрета в тело публичного комментария, а подсказку для этого можно было бы положить прямо в дифф.

    Сделано18.10.2026

  • Потолки одного запуска — 20 ходов и $5.00 стоимости; величину потолка назначил владелец. Сверх них — предел объёма диффа и предел времени задания.

    Сделано18.10.2026

Пробел: конвейера ревью на PR не было вовсе — ревью делали только роли агентов в сессиях владельца.

Прогоны ревью

Прогоны ревью на PR #349
Прогон Патч в контексте Ходов Стоимость, $
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.

    Сделано18.10.2026

  • Воспроизводимость — свойство, а не обещание: второй прогон того же сценария на том же дереве не меняет ни одного файла и даёт пустой git diff. Это держит тест.

    Сделано18.10.2026

  • Две преграды: любой путь из запроса сверяется с корнем проекта по разрешённому пути, а .git/ и файлы .env закрыты по имени уже разрешённого пути. Путь записи из запроса не собирается вовсе.

    Сделано18.10.2026

  • Скилл /backlog-close — сценарий уровня цели: «закрыть пункт очереди по его подтверждению». Пункт, помеченный «Владельцу», скилл сам не закрывает.

    Сделано18.10.2026

Пробел: отметка «пункт очереди закрыт» делалась руками каждую итерацию — перенос строки из очереди в архив никто не автоматизировал.

День 34 «Ассистент для работы с файлами»: читает, ищет по нескольким файлам, анализирует, создаёт/меняет файлы; минимум 2 сценария; задача на уровне цели; результат воспроизводим; изменения сохраняются или выводятся diff.

День 35: приложение

Реальная задача недели — трёхсторонний маркетплейс аренды люкс-вилл: владельцы, управляющие и гости, а сервис живёт в мессенджере. Решение делать его отдельным репозиторием и всё, что из этого следует, — ADR 2026-10-18-1147, п. 3.

Что увидят проверяющие

Идёт

Код этого дня живёт в приватном репозитории MikeKharr/samui-villas, и проверяющие его не увидят. Что сделано — описано здесь; чем это показано — видео и выдержки по выбору владельца. Выдержек приватного кода на этой странице нет.

Видео и выдержки добавит владелец.

День 35 «Реальная задача»: реальное AI-приложение под реальную задачу.