Агент — это модель плюс «упряжь»

На 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-спецификации, стайл-гайды
Observationgit diff, логи ошибок, состояние браузера
ActionCLI-команды, вызовы 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, проверяющий правила до выполнения любого действия». Модель решает, что попытаться сделать. Система инструментов решает, что разрешено. Архитектурно они разделены.

💡 Минимальный harness на Python

Вот скелет агентного цикла из репозитория:

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 вокруг него — вот где сосредоточены большинство решений по возможностям, безопасности и надёжности.

⚠ Частая ошибка
Большинство команд недооценивают сложность harness. Модель — это лёгкая часть. Настоящая работа начинается при проектировании инструментов, управлении контекстом и разграничении прав доступа.

Репозиторий shareAI-lab/learn-claude-code доступен на трёх языках (английский, китайский, японский) и содержит запускаемые Python-агенты для каждого урока. Существует также форк проекта с миграцией всех агентов с Anthropic SDK на OpenAI SDK, что позволяет работать с любым OpenAI-совместимым эндпоинтом: облачными API (OpenAI, GitHub Models, Azure OpenAI) или локальными серверами (LM Studio, Ollama, GPT4All).