agent_state_machine
Описание
Пробовал сделать набор утилит, которые бы работали с моделями не как с агентами, а как конечный автомат (state-machine)
Языки
- Go95,6%
- Shell4,4%
Agent Arena
Набор утилит для создания интеллектуальных агентов, следующих философии Plan 9: простые, композируемые инструменты, взаимодействующие через текстовые интерфейсы.
Суть проекта: Прозрачная и контролируемая альтернатива сложным фреймворкам. Агент здесь — не "чёрный ящик", а стейт-машина, каждый шаг которой можно наблюдать и понимать.
🏗️ Архитектура
agent_arena/
├── bin/ # Исполняемые обёртки (mksh)
├── cmd/ # Основные утилиты на Go
├── internal/ # Внутренние пакеты (стейт-машина, LLM-клиент, утилиты)
└── prompts/ # Шаблоны промптов
Ключевая идея: Центральный компонент — — представляет собой стековую машину состояний (стейт-машину). Она управляет циклом "планирование → исполнение", работая с LIFO-стеком команд. Эта архитектура обеспечивает детерминированность и полную прозрачность выполнения.
🚀 Быстрый старт
Требования
- Go 1.25+
- Ollama (локально, с запущенной моделью, например,
)gemma3:12b - mksh (для скриптов-обёрток)
Базовое использование
Все взаимодействие происходит через главную утилиту :
🛠️ Ключевые утилиты и примеры
1. Главный исполнитель (runner)
Координирует выполнение как конечный автомат: планирует через LLM, затем исполняет команды.
Примеры запросов:
2. Утилита работы с LLM (llm-query)
Низкоуровневый инструмент для отправки запросов к Ollama.
Аргументы:
: Источник промпта.--as <файл|gen|text>: Модель Ollama (по умолчанию--model <имя>).gemma3:12b
Наглядные примеры:
3. Вспомогательные утилиты
: Загружает сырой HTML/текст страницы (первые 500 символов).fetch-page: Базовые текстовые операции (text-process,grep <шаблон>,count).trim: Динамически генерирует промпт, сканируя инструменты вgen-prompt.bin/
💡 Философия и отличия
Этот проект — эксперимент и образовательный инструмент, а не прямая замена фреймворкам вроде LangChain или Eino.
| Аспект | Agent Arena | Промышленные фреймворки |
|---|---|---|
| Архитектура | Одна стековая машина состояний. | Цепочки, графы агентов, сложная оркестрация. |
| Приоритет | Прозрачность, контроль, понимание каждого шага. | Скорость разработки, богатая экосистема, масштабируемость. |
| Решаемые задачи | Детерминированные workflows, безопасное исполнение команд, прототипирование идей. | Сложные AI-приложения, RAG, мульти-агентные системы. |
Преимущества данного подхода:
- Полная наблюдаемость: Каждое состояние (
,INIT,PLAN) и команда в стеке логируются.EXEC - Прямой контроль: Нет скрытой "магии" фреймворков, поведение агента детерминировано.
- Композируемость: Новые утилиты в
автоматически попадают в промпт агента.bin/
Ограничения:
- Сложность добавления долгосрочной памяти, параллельного выполнения или нелинейных сценариев.
- Требует ручной настройки и отладки промптов для сложных задач.
Проект следует принципам Plan 9 и less harmful software: простые инструменты, делающие одну вещь хорошо, которые можно комбинировать для решения задач.