anthropic
Anthropic выпустила Claude Agent SDK для создания ИИ-агентов
Claude News
anthropicClaude Agent SDK дает программный доступ к тому же набору из восьми встроенных инструментов, что и Claude Code: Read, Write, Edit, Bash, Glob, Grep, WebSearch и WebFetch. Практику сборки собственного терминального интерфейса поверх этого набора разобрал Mager, выложив демонстрационный проект в репозиторий mager/claude-tui-demo.
Коротко
- В стандартном клиенте Anthropic цикл вызова инструментов пишется вручную: ответ проверяется на stop_reason «tool_use», результат отправляется обратно. Agent SDK берет этот цикл на себя, оставляя разработчику только чтение потока сообщений.
- Демонстрационный проект на Ink укладывает рабочий терминальный интерфейс примерно в 80 строк TypeScript, из которых точка входа занимает семь: разбор аргументов командной строки и вызов render().
- Хуки PreToolUse и PostToolUse позволяют блокировать операции и вести журнал вызовов, а параметр resume с идентификатором сессии сохраняет контекст: на втором шаге агент обходится без повторных обращений к файлам.
SDK смещает границу ответственности: цикл выполнения инструментов, права доступа и журналирование переходят в конфигурацию. Для команд это, судя по всему, меняет точку сборки: собственный интерфейс с предзагруженным контекстом и жестким списком инструментов обходится дешевле поддержки обвязки вокруг обычного API. Claude Code при этом остается инструментом повседневной работы, а SDK, вероятно, займет нишу автоматизации, аудита и внутренних командных инструментов, где важнее контроль, чем универсальность.
Функция query() открывает восемь встроенных инструментов Claude Code
Функция query() из пакета @anthropic-ai/claude-agent-sdk принимает промпт и список разрешенных инструментов, а возвращает асинхронный поток сообщений, который читается через for await. Внутри доступны Read, Write, Edit, Bash, Glob, Grep, WebSearch и WebFetch: чтение и создание файлов, точечные правки, команды оболочки и git, поиск по шаблону и регулярным выражениям, веб-поиск и загрузка страниц.
Список allowedTools задает границы: сборка для ревью кода получает только чтение и поиск, без права правки боевого окружения. В стандартном клиенте Anthropic та же задача требует собственного исполнителя инструментов и цикла, который проверяет stop_reason, отправляет tool_result обратно в модель и повторяется до остановки.
Помимо инструментов SDK поддерживает протокол MCP и делегирование задач субагентам; по описанию Mager, за ним стоит тот же движок, что и за Claude Code. Библиотека доступна для Node.js, а Python-версия ставится командой pip install claude-agent-sdk, что упрощает встраивание агентов в существующие конвейеры CI/CD. Разовые задачи остаются за Claude Code в терминале, автоматизация и аудит уходят в SDK.
Рабочий интерфейс на Ink умещается примерно в 80 строк TypeScript
Агент оборачивается в асинхронный генератор: функция с async function* отдает сообщения по одному через yield, а потребитель читает их циклом for await и обновляет экран по мере поступления, не дожидаясь конца работы. Интерфейс собран на Ink, где Box отвечает за раскладку, а Text за вывод с цветом и начертанием.
Ink повторяет компонентную модель React: те же хуки useState и useEffect, тот же JSX, но рендеринг идет в терминал вместо DOM. Поток SDK приносит несколько типов сообщений: assistant с ответом модели, result с итогом, system с событием init и идентификатором сессии, user с эхом ввода.
Демонстрационный проект запускается через tsx, а не ts-node: он без настройки понимает .tsx, JSX и ESM. В package.json обязателен «type»: «module», иначе движок раскладки yoga-layout с его top-level await падает с неочевидной ошибкой. Запуск сводится к команде npm start с промптом в аргументах, после чего вызовы инструментов идут в терминал по мере выполнения.
Хуки PostToolUse записывают каждый вызов инструмента в audit.log
Хуки срабатывают в ключевых точках жизненного цикла агента. В примере обработчик PostToolUse с matcher «.*» дописывает в audit.log отметку времени, имя инструмента и первые 100 символов аргументов; сузить охват до мутаций можно шаблоном «Edit|Write». Кроме него доступны PreToolUse для блокировки операций до запуска, Stop для фиксации завершения и UserPromptSubmit для проверки ввода.
Контекст между вызовами query() удерживает параметр resume: идентификатор сессии берется из системного сообщения init на первом шаге и передается на втором. Как отмечается в разборе, второй запрос обходится нулем вызовов инструментов, поскольку файл уже находится в контексте. Тот же механизм лежит в основе REPL-режима, где цикл while (true) читает ввод через readline и передает его в очередной ход.
Anthropic публикует эталонную реализацию этого шаблона: почтовый агент читает входящие, готовит ответы и отправляет их, применяя PreToolUse для подтверждения отправки, PostToolUse для журналирования действий и восстановление сессии для многошагового разбора почты. Исходники этих и других эталонных агентов собраны в репозитории anthropics/claude-agent-sdk-demos.
Rezi как следующий шаг после Ink В разборе Rezi назван путем для интерфейсов, переросших Ink: пакеты @rezi-ui/core и @rezi-ui/node дают более 50 готовых виджетов, включая таблицы, модальные окна, графики и палитру команд, шесть встроенных тем и рендеринг через нативный движок на C. Модель состояния там другая: чистая функция view отображает состояние в интерфейс, изменения приходят через app.update().
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.
Из Google мы используем только имя и аватар. Почту не сохраняем.
