Проблема с кодом
Сегодня почти любой AI agent framework просит вас писать код. Python, TypeScript или что угодно еще — вы описываете поведение императивно. Это означает:
- Плохо ревьюится. Нельзя быстро взглянуть на Python-скрипт на 200 строк и сразу понять, что делает агент.
- Плохо распространяется. Поделиться агентом часто значит передать дерево зависимостей, virtualenv и надежду, что все запустится.
- Непортативно. Код привязан к runtime. LangChain-агент не будет одинаково работать в браузере или на телефоне.
- Плохо аудируется. По diff двух версий агента трудно быстро понять, как изменилась его логика.
Почему TOML
TOML-файл — это декларация намерения. Он говорит, что должен делать агент, а не как. Framework берет часть how на себя.
# Это полноценный агент [agent] provider = "anthropic" model = "claude-sonnet-4-5-20250929" tools = ["shell", "knowledge_ingest", "knowledge_query"] [agent.execution] max_steps = 30 [[middleware]] type = "limits" max_turns = 15
Что вы получаете
- Ревьюится: Откройте файл, прочитайте его и сразу поймите, что делает агент.
- Распространяется: Прикрепите TOML к сообщению в Slack. И этого достаточно.
- Портативно: Один и тот же конфиг работает в CLI, dashboard, VS Code, iOS и Android.
- Аудируется:
git diffточно показывает, что изменилось в поведении агента. - Версионируется: Конфиги живут в git рядом с вашим кодом. Rollback тривиален.
Компромисс
Config-driven подход означает, что вы не сможете выразить произвольную логику. Если нужен кастомный алгоритм маршрутизации или специальный инструмент, придется написать код на Rust и скомпилировать его во фреймворк. Система конфигов закрывает 90% сценариев использования. Rust API покрывает остальное.
Так и задумано. Конфиг — это продукт. Код — это платформа.