learn-claude-code: как устроен агент изнутри
На GitHub набирает звёзды репозиторий shareAI-lab/learn-claude-code — курс по harness-инжинирингу для AI-агентов с нуля до продакшна.
Агент — это модель плюс «упряжь»
На GitHub появился репозиторий shareAI-lab/learn-claude-code, который уже собрал более 58 тысяч звёзд. Проект учит строить harness (харнесс, «упряжь» — инфраструктурная обёртка вокруг LLM) с нуля: от простейшего цикла агента до команд субагентов с параллельным исполнением. Центральный тезис: интеллект рождается внутри модели через обучение, а задача инженера — дать этой модели инструменты, память и границы.
Продукт-агент = Модель + Harness
Модель — водитель. Harness — автомобиль. Репозиторий учит строить автомобиль.
Что такое harness и зачем он нужен
Agent harness — это система, которая превращает языковую модель в нечто, способное выполнять действия, использовать инструменты, помнить контекст, обрабатывать ошибки и двигаться к цели через множество шагов. Именно harness отделяет чат-бота от автономного агента.
Claude Code служит агентным harness-ом вокруг Claude: он предоставляет инструменты, управление контекстом и среду исполнения, которые превращают языковую модель в способного coding-агента.
Авторы репозитория описывают harness через пять компонентов:
| Компонент | Описание |
|---|---|
| Tools | Файловые операции, shell, сеть, браузер |
| Knowledge | Документация, API-спецификации, стайл-гайды |
| Observation | git diff, логи ошибок, состояние браузера |
| Action | CLI-команды, вызовы API, UI-взаимодействия |
| Permissions | Изоляция в sandbox, согласование операций |
Чем не является агент
Слово «агент» захвачено целой индустрией «prompt-plumbing». Drag-and-drop конструкторы воркфлоу. No-code «AI Agent» платформы. Библиотеки оркестрации цепочек промптов. Все они разделяют одно заблуждение: что нанизывание вызовов LLM API с if-else ветвями, графами нод и хардкодной логикой маршрутизации составляет «создание агента».
«Вы не можете принудительно создать интеллект, нагромоздив процедурную логику. Агентность обучается, а не кодируется.»
В Claude Code модель рассуждает о том, что делать; harness отвечает за выполнение действий. Модель генерирует блоки tool_use как часть своего ответа, а harness разбирает их, проверяет разрешения, передаёт в реализации инструментов и собирает результаты. Модель никогда напрямую не обращается к файловой системе, не запускает shell-команды и не делает сетевые запросы.
Архитектура цикла агента
Репозиторий включает 12 последовательных модулей: от базового цикла агента (s01) до изоляции задач через worktree (s12), охватывая использование инструментов, субагентов, компрессию контекста, систему задач, команды агентов и автономное поведение.
graph TD
A[Пользователь: задача] --> B[messages[]]
B --> C[LLM]
C --> D{stop_reason == tool_use?}
D -- Да --> E[Выполнить инструменты]
E --> F[Добавить результаты в messages]
F --> C
D -- Нет --> G[Вернуть текст пользователю]
Модель решает, когда вызывать инструменты и когда остановиться. Код лишь выполняет то, о чём просит модель.
Что умеет Claude Code как harness
Авторы выбрали Claude Code как учебный объект за элегантность архитектуры. По официальной документации Claude Code предоставляет около 19 инструментов с контролем разрешений. Основные категории: чтение и редактирование файлов, выполнение shell-команд (Bash), операции с Git, веб-запросы, редактирование ноутбуков и вызовы MCP-инструментов.
Каждый инструмент изолирован независимо. Это не «агент имеет доступ к файловой системе» — это «агент может использовать инструмент Read, у которого есть собственный permission gate, проверяющий правила до выполнения любого действия». Модель решает, что попытаться сделать. Система инструментов решает, что разрешено. Архитектурно они разделены.
Вот скелет агентного цикла из репозитория:
while True:
response = llm(messages)
if response.stop_reason != "tool_use":
break
results = execute_tools(response.tool_calls)
messages.append(results)
Всего 5 строк — и у вас работающий агент. Всё остальное — это harness вокруг этого цикла.
Данные из реального деплоя — будущее обучение
Один из важных тезисов курса: harness — не только среда выполнения, но и источник обучающих данных. Каждая последовательность действий, которую агент выполняет в вашем harness — это обучающий сигнал. Трассы восприятие-рассуждение-действие из реальных деплоев — это сырьё для файнтюнинга следующего поколения моделей агентов. Ваш harness не просто обслуживает агента — он может помочь его улучшить.
Harness — дифференциатор продукта
С 2025 года центр тяжести в AI-инжиниринге быстро смещается в сторону harness-инжиниринга. Это одно из наиболее часто повторяющихся ключевых слов во внутренних блогах Anthropic и в исследованиях агентов OpenAI.
Цикл агента — это малая часть. Harness вокруг него — вот где сосредоточены большинство решений по возможностям, безопасности и надёжности.
Репозиторий shareAI-lab/learn-claude-code доступен на трёх языках (английский, китайский, японский) и содержит запускаемые Python-агенты для каждого урока. Существует также форк проекта с миграцией всех агентов с Anthropic SDK на OpenAI SDK, что позволяет работать с любым OpenAI-совместимым эндпоинтом: облачными API (OpenAI, GitHub Models, Azure OpenAI) или локальными серверами (LM Studio, Ollama, GPT4All).