agent_state_machine

0

Описание

Пробовал сделать набор утилит, которые бы работали с моделями не как с агентами, а как конечный автомат (state-machine)

Языки

  • Go95,6%
  • Shell4,4%
README.md

Agent Arena

Набор утилит для создания интеллектуальных агентов, следующих философии Plan 9: простые, композируемые инструменты, взаимодействующие через текстовые интерфейсы.

Суть проекта: Прозрачная и контролируемая альтернатива сложным фреймворкам. Агент здесь — не "чёрный ящик", а стейт-машина, каждый шаг которой можно наблюдать и понимать.

🏗️ Архитектура

agent_arena/ ├── bin/ # Исполняемые обёртки (mksh) ├── cmd/ # Основные утилиты на Go ├── internal/ # Внутренние пакеты (стейт-машина, LLM-клиент, утилиты) └── prompts/ # Шаблоны промптов

Ключевая идея: Центральный компонент —

runner
— представляет собой стековую машину состояний (стейт-машину). Она управляет циклом "планирование → исполнение", работая с LIFO-стеком команд. Эта архитектура обеспечивает детерминированность и полную прозрачность выполнения.

🚀 Быстрый старт

Требования

  • Go 1.25+
  • Ollama (локально, с запущенной моделью, например,
    gemma3:12b
    )
  • mksh (для скриптов-обёрток)

Базовое использование

Все взаимодействие происходит через главную утилиту

runner
:

🛠️ Ключевые утилиты и примеры

1. Главный исполнитель (
runner
)

Координирует выполнение как конечный автомат: планирует через LLM, затем исполняет команды.

Примеры запросов:

2. Утилита работы с LLM (
llm-query
)

Низкоуровневый инструмент для отправки запросов к Ollama.

Аргументы:

  • --as <файл|gen|text>
    : Источник промпта.
  • --model <имя>
    : Модель Ollama (по умолчанию
    gemma3:12b
    ).

Наглядные примеры:

3. Вспомогательные утилиты

  • fetch-page
    : Загружает сырой HTML/текст страницы (первые 500 символов).
  • text-process
    : Базовые текстовые операции (
    grep <шаблон>
    ,
    count
    ,
    trim
    ).
  • gen-prompt
    : Динамически генерирует промпт, сканируя инструменты в
    bin/
    .

💡 Философия и отличия

Этот проект — эксперимент и образовательный инструмент, а не прямая замена фреймворкам вроде LangChain или Eino.

АспектAgent ArenaПромышленные фреймворки
АрхитектураОдна стековая машина состояний.Цепочки, графы агентов, сложная оркестрация.
ПриоритетПрозрачность, контроль, понимание каждого шага.Скорость разработки, богатая экосистема, масштабируемость.
Решаемые задачиДетерминированные workflows, безопасное исполнение команд, прототипирование идей.Сложные AI-приложения, RAG, мульти-агентные системы.

Преимущества данного подхода:

  • Полная наблюдаемость: Каждое состояние (
    INIT
    ,
    PLAN
    ,
    EXEC
    ) и команда в стеке логируются.
  • Прямой контроль: Нет скрытой "магии" фреймворков, поведение агента детерминировано.
  • Композируемость: Новые утилиты в
    bin/
    автоматически попадают в промпт агента.

Ограничения:

  • Сложность добавления долгосрочной памяти, параллельного выполнения или нелинейных сценариев.
  • Требует ручной настройки и отладки промптов для сложных задач.

Проект следует принципам Plan 9 и less harmful software: простые инструменты, делающие одну вещь хорошо, которые можно комбинировать для решения задач.