Перейти к содержимому

Кейс: ant apply — управляем агентами, окружениями и skills как кодом

Третьего сентября 2026 года Anthropic выпустила версию 1.30.0 CLI ant — и вместе с ней команду, которая закрывает дыру, знакомую каждому, кто настраивал агентов командой: всё, что вы собрали в Claude Console или через CLI, живёт только у вас. ant apply переносит агентов, окружения, skills, memory stores и deployments в обычные файлы репозитория — и дальше они меняются через тот же код-ревью, что и остальной код.

Разбор ниже — по официальному анонсу в changelog Anthropic и странице «Manage resources as code with ant apply». Показано, как выглядит файл-описание, как проходит план и применение, что именно пишет claude-lock.json и как гонять всё это в CI. Версии и возможности — на момент публикации, 11.09.2026.

Зачем агентную конфигурацию хранить как код

К осени 2026 конфигурация агентов перестала быть парой строчек в настройках. В Claude Managed Agents это отдельные сущности: агент с системным промптом и набором инструментов, окружение, в котором он работает, skills, которые он умеет подгружать, memory store с накопленными заметками, deployment с расписанием запуска. У команды таких ресурсов десятки, и каждый можно создать в консоли мышкой. Проблема начинается, когда ресурсов много, а членов команды несколько.

Пока конфигурация живёт в консоли, у неё нет ни истории, ни ревью, ни воспроизводимости. Кто-то поменял промпт агента три недели назад — а почему и когда, никто не скажет. Новый разработчик собирает окружение «как у всех» по памяти. Продакшен-агент настроен у одного человека на ноутбуке, и если он ушёл — конфигурацию пришлось бы восстанавливать заново.

ant apply creates and updates Claude API resources from files: agents, environments, skills, memory stores, and deployments. They live in your repository and change through the same review as your code.

ant apply создаёт и обновляет ресурсы Claude API из файлов: агентов, окружения, skills, memory stores и deployments. Они живут в вашем репозитории и меняются через то же ревью, что и ваш код.

документация Anthropic, «Manage resources as code with ant apply»

Формулировка «живут в репозитории и меняются через то же ревью» — суть подхода. Это GitOps для агентной конфигурации: те же механизмы, что команды уже применяют к инфраструктуре (Terraform, Helm), теперь доступны для ресурсов Claude API.

Что умеет ant apply: пять типов ресурсов

Ресурсы, которыми управляет ant apply, — это то, что в Claude API описывают отдельные сущности managed agents:

Тип Формат файла Что описывает
Агент Markdown в agents/ Промпт-конфигурация во frontmatter (модель, инструменты, skills), тело файла — системный промпт
Окружение YAML в environments/ Cloud-контейнер: тип, сетевые настройки
Skill Каталог с SKILL.md в skills/ Загружается одним бандлом
Memory store YAML в memory_stores/ Заметки агента между запусками
Deployment Markdown в deployments/ Запуск по расписанию: агент, окружение, cron-выражение

Таблица — по документации ant apply. Любой ресурс, кроме skill, можно писать в YAML, JSON или Markdown: в Markdown frontmatter несёт конфигурацию, а проза файла заполняет текстовое поле ресурса — системный промпт агента, описание окружения, первое сообщение deployment.

Релиз ant CLI v1.30.0 на GitHub: «add ant apply for managing agents, skills, environments, memory stores and deployments as code»
Релиз v1.30.0 репозитория anthropics/anthropic-cli (03.09.2026). Строка фичи в списке изменений — ровно та, что описана в changelog Anthropic. Реальный скриншот страницы релиза.

Как выглядит файл-описание агента

Проще всего показать на первом примере из документации — агент-резюмерайзер в одном файле:

# agents/summarizer.md
---
name: Summarizer
model: claude-opus-5
tools:
  - type: agent_toolset_20260401
---

You are a helpful assistant that writes concise summaries.

Frontmatter — это конфигурация агента (те же поля, что в API), тело файла — системный промпт. Применяется команда из корня репозитория:

ant apply agents/summarizer.md

В интерактивном терминале ant apply печатает план и ждёт подтверждения:

First apply  ./claude-lock.json does not exist yet and will be created

Preview  ./claude-lock.json (new)

± Name                    Plan
+ ./agents/summarizer.md  create

Resources  + 1 to create

Apply these changes? (y)es / (n)o / (d)etails y

Apply  ./claude-lock.json

± Name                    Status
+ ./agents/summarizer.md  created    agent_011CYm1BLqPXpQRk5khsSXrs

Resources  + 1 created

State written to ./claude-lock.json

Ответ d показывает детали: поля каждого нового ресурса или построчный diff каждого обновления. Флаг --dry-run печатает детальный план и выходит, ничего не меняя. Вывод — из документации ant apply, воспроизведён по образцу официального примера.

Репозиторий anthropics/anthropic-cli: «ant — Claude Platform CLI»
Репозиторий официального CLI ant на GitHub — файловая структура и начало README. Из этого репозитория ставятся релизы вроде v1.30.0. Реальный скриншот.

Чтобы изменить агента, правите файл и запускаете ant apply снова — в плане появится update вместо create.

claude-lock.json: что именно записывает lockfile

После первого применения в корне репозитория появляется claude-lock.json. Его содержимое — привязка каждого файла к созданному ресурсу API:

{
  "version": 1,
  "origin": {
    "base_url": "https://api.anthropic.com",
    "organization_id": "1b0c2a4d-6c1f-4f0e-9a57-2e8d1c3b4a5f",
    "workspace_id": "wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ"
  },
  "resources": {
    "./agents/summarizer.md": {
      "kind": "agent",
      "id": "agent_011CYm1BLqPXpQRk5khsSXrs",
      "version": "1",
      "hash": "d23251c8d99b3613a64f3f8d87f5fad4",
      "remote_hash": "1b771bee5bdbf600a5ad972fdac32d94"
    }
  }
}

Пример — из документации. Lockfile надо коммитить вместе с файлами: именно по нему следующий запуск — локально или в CI — находит уже созданные ресурсы и обновляет их, а не создаёт дубликаты. В origin записаны организация и workspace; в resources — для каждого файла его kind, API-id и две контрольные суммы: hash — что было отправлено последним, remote_hash — что сервер хранит сейчас. По расхождению hash замечается правка файла, по расхождению remote_hash — изменение ресурса снаружи, например в консоли.

ID агента из lockfile нужен и для запуска сессии: ant beta:sessions create --agent-id $(…из claude-lock.json…) — на это прямо ссылается документация в разделе про запуск сессий.

Проект целиком: ресурсы ссылаются друг на друга путями

Одиночный агент — только начало. ant apply понимает целый каталог ресурсов, которые ссылаются друг на друга относительными путями, а не ID. В примере из документации — четыре связанных ресурса и deployment:

ant apply .
# agents/reviewer.md
---
name: Code reviewer
model: claude-opus-5
tools:
  - type: agent_toolset_20260401
skills:
  - ../skills/pr-summary
---

You review pull requests for correctness, security, and readability.
# environments/cloud.yaml
name: review-env
description: Cloud container with unrestricted networking for review sessions.
config:
  type: cloud
  networking:
    type: unrestricted
# deployments/nightly.md
---
name: Nightly review
agent: ../agents/reviewer.md
environment_id: ../environments/cloud.yaml
resources:
  - path: ../memory_stores/review-notes.yaml
    access: read_write
schedule:
  type: cron
  expression: "0 3 * * *"
  timezone: America/Los_Angeles
---

Review any open pull requests. Start with the oldest.

Ключевая деталь: ревьюер в skills указывает ../skills/pr-summary, deployment называет агента и окружение путями. ant apply создаёт ресурсы в порядке зависимостей и подставляет реальные ID. При этом ссылки на агентов и skills он закрепляет за той версией, которую только что применил, — правка reviewer.md или skill в том же запуске обновляет всех, кто на них ссылается.

Тип ресурса ant apply определяет сам. При обходе каталога он берёт первое подходящее: явное поле type в файле, каталог, в котором лежит файл (agents/, environments/, memory_stores/, deployments/), либо имя файла, начинающееся с типа ресурса — например environment_staging.md. Файлы, которые не подходят ни под одно правило — README или конфиг CI, — пропускаются, если не названы в командной строке явно. Названный явно Markdown-файл без типа считается агентом; названный явно YAML/JSON — ошибка.

Если нужно сослаться на ресурс, которым файлы не управляют, — пишете его ID (agent_..., skill_...) напрямую. Skill можно подключить и по GitHub-URL вида https://github.com/<owner>/<repo>/tree/<branch>/<dir> — например, каталог из открытого репозитория skills Anthropic: ant apply скачает и загрузит его, закрепив за тем коммитом, который разрешился при первом применении, пока вы не запустите --upgrade.

Как ant apply собирает проект из файлов
Ресурсы в репозитории ссылаются друг на друга путями (agents/reviewer.md../skills/pr-summary, deployment → агент, окружение, memory store). ant apply . строит граф зависимостей, создаёт ресурсы по порядку и подставляет реальные ID в claude-lock.json. Авторская схема по документации Anthropic.

Порядок применения и повторные запуски

Полный цикл «файлы → план → apply → lockfile» повторяется при каждом изменении. Поведение при повторных запусках:

  • ant apply без аргументов сверяет каждый файл из lockfile; в терминале он также перечисляет новые untracked-файлы ресурсов в каталоге lockfile и предлагает добавить их.
  • Удаление поля из файла очищает его у ресурса, если API разрешает очистку. Поле, которое вы никогда не задавали или которое API очистить не может, сохраняет текущее значение.
  • Если ресурс изменили, заархивировали или удалили снаружи файлов — в Claude Console, например, — план заканчивается строкой This plan cannot be applied: с причиной, а команда выходит с refusing to apply. --force перезапишет внешнюю правку или создаст замену.
  • Удаление файла оставляет ресурс на месте с предупреждением; --prune удаляет его (архивирует, для skill — удаляет). Переименование файла объявляет новый ресурс, а старый остаётся до prune.
  • Ресурс, созданный в консоли или через ant beta:agents create, ant apply «усыновить» не может — управляется только то, что в lockfile. Применить файл, описывающий уже существующего агента, — значит создать второго. Для скачанного из консоли агента есть экспорт «Export as code»: он включает собственный claude-lock.json, и применение обновляет ресурсы, созданные в консоли.
Цикл ant apply: файлы → план → apply → lockfile → CI
Цикл ресурсов-как-кода: правка файла в репозитории → ant apply печатает план → одобрение → применение → обновление claude-lock.json → следующий запуск локально или в CI обновляет те же ресурсы. Авторская схема по changelog Anthropic и документации.

Запуск в CI: план на PR, применение в main

ant apply спроектирован под конвейер, и документация даёт готовую схему для GitHub Actions. Без терминала команда печатает план и останавливается с сообщением: cannot ask for confirmation without a terminal; re-run with –yes to apply, or –dry-run to see the plan only.

Рекомендации из документации:

  • На pull requestant apply --dry-run .: печатает план для ревьюеров. Это информационный запуск, он завершается кодом 0, даже если план заблокирован.
  • В main после mergeant apply --yes .: применяет изменения, называя каталог проекта. Голый ant apply --yes сверяет только файлы, которые lockfile уже отслеживает, и пропускает новые.
  • Коммитить обновлённый claude-lock.json в конце джобы, даже если apply упал на полпути — частичное применение всё равно записало, что создало.
  • Один apply за раз: lockfile никем не блокируется, поэтому параллельные запуски небезопасны — в workflow для этого нужен concurrency guard.
  • Аутентификация — через Workload Identity Federation, а не хранимый API-ключ: ant apply отказывает credentials, которые резолвятся в другую организацию или workspace, нежели записаны в lockfile.

Полный пример GitHub Actions workflow есть в README репозитория anthropic-cli: protected environment, OIDC-токен, шаг Apply с ant apply --yes и шаг коммита lockfile с пометкой [skip ci], чтобы коммит не триггерил workflow заново.

Сравнение: как было и как стало

Нагляднее всего разница видна в таблице — ручная настройка агентов против ресурсов-как-кода:

Шаг Ручная настройка ant apply
Где живёт конфигурация Claude Console / команды CLI на одной машине Файлы в репозитории
История изменений Нет Git-история
Ревью Никто не видит, что менялось Код-ревью на PR
Новый член команды Настраивает «как у всех» по памяти Клонирует репозиторий, ant apply --yes
Воспроизводимость в CI Нет План на PR, применение в main
Конфликт с правками в консоли Не виден Заметен: This plan cannot be applied
Ссылки между ресурсами ID вручную Относительные пути, ID подставляет ant

Подход не отменяет консоль — отменяет консоль как единственное место правды. И это ровно тот же сдвиг, что команды уже делали с инфраструктурой: от «настроил в панели» к «описал в коде».

Честные ограничения

  • Функция свежая. ant apply появилась в релизе от 03.09.2026 — на момент публикации (11.09.2026) ей чуть больше недели. Практических отчётов «прогнали в продакшене месяц» нет по определению.
  • Только Claude Managed Agents. Инструмент управляет ресурсами managed агентов Anthropic — это не про локальные конфиги Claude Code (агенты, skills, AGENTS.md на вашей машине). Локальная экосистема живёт отдельно, и это разные слои.
  • Требуется CLI 1.30.0+ и аккаунт Claude Console. ant auth login — OAuth-флоу против Claude Console. Без поддерживаемого региона и способа оплаты не запустится (см. блок про РФ).
  • Один lockfile — одна организация/workspace. Для нескольких организаций или workspace нужны отдельные lockfile (флаг --lock-file <path>), потому что ant apply отказывается от lockfile с несовпадающей организацией.
  • Усыновление чужих ресурсов не поддержано. Созданное в консоли или через ant beta:agents create нельзя взять под управление — только экспорт «Export as code», который приносит свой lockfile.
  • Агенты, как и раньше, не «деплоятся» в смысле версий. Изменение файла и apply меняют живой ресурс; откат — это git revert и повторный apply, а не переключение версии.

Российские реалии

ant apply — команда официального CLI Anthropic, и российская специфика здесь ровно та же, что у всей платформы Claude: дело не в самой команде, а в доступе к API и консоли.

Доступ. Россия не входит в список поддерживаемых стран Anthropic (официальный список). platform.claude.com и docs.claude.com отдают geo-block с российских IP — проверено при подготовке этой статьи: страница документации ant apply с российского адреса возвращает экран «App unavailable in region». Без VPN документацию не открыть, ant auth login и API — тоже.

Оплата. Visa и Mastercard российских банков не принимаются. Реальные пути на момент публикации: карта зарубежного банка, UnionPay (не у всех эмитентов), криптовалюта через посредников, сервисы, продающие usage credits, либо юрлицо в поддерживаемой стране. Подробный разбор схем оплаты Anthropic из РФ есть в статье про Claude Code API.

Русскоязычный опыт. Русскоязычных разборов именно ant apply на момент публикации нет — инструменту чуть больше недели, и в рунете его ещё не разбирали. Смежные материалы есть: «Как использовать Claude в России в 2026» на Habr — про geo-block API и оплату, практика из РФ в «Как стать вайбкодером» — про запуск Claude через посредников, VPN и риск бана. Общий вывод для российских команд: сама механика ant apply (файлы → план → lockfile → CI) от региона не зависит, но без доступа к консоли и оплаты запустить её не получится — пока не решён вопрос доступа, ценность подхода для РФ в основном теоретическая.

Если доступ есть — например, компания работает через юрлицо в Казахстане или Турции, — ant apply снимает боль, которая у российских команд острее: конфигурация агентов перестаёт зависеть от одного ноутбука и от того, кто как «помнит» настройку.

Вывод

ant apply — это ответ Anthropic на вопрос, который команды задают с момента появления managed-агентов: как сделать конфигурацию агентов такой же управляемой, как код. Пять типов ресурсов описываются файлами в репозитории, ссылки между ними — относительными путями, изменения проходят план, ревью и CI, а claude-lock.json фиксирует, какой файл каким ресурсом стал. Повторный запуск на любой машине обновляет те же ресурсы, а не плодит дубликаты.

Практическое правило простое: если у команды больше пары агентов и окружений, которые кто-то настраивал вручную, — стоит попробовать перенести их в файлы. Начать можно с одного агента: ant apply agents/summarizer.md, закоммитить lockfile, дальше расти до полного каталога. А если конфигурации всего одна и настраивал её один человек — пока подождите, оверхед не окупится.

Дальше по теме: Claude Code через API, что такое агентный кодинг, AGENTS.md — файл конвенций, контекст агента, ИИ для программистов в терминале, мультиагентные workflow.

Соседняя статья недели — статье «Свои ИИ-агенты: как создать и настроить агента под свой проект».


Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка / 5. Количество оценок:

Оценок пока нет. Поставьте оценку первым.

Добавить комментарий

Adblock
detector