← Назад к списку публикаций
Препринт SR-2026-01 Октябрь 2026 Идентификатор: doi:10.5281/zenodo.smolnikov.runtime

Архитектура детерминированного контроля и Human-in-the-Loop в автономных агентах: опыт разработки ядра CapyAgent на Go

Кирилл Смольников <smolnikov.c@yandex.ru>
Исследовательский центр Смольникова, Лаборатория архитектуры рантаймов
Аннотация (Abstract)

В данной работе исследуются архитектурные ограничения и фундаментальные уязвимости существующих интерпретируемых агентных сред (в частности, на базе Python), управляющих системными процессами операционной системы. Авторы анализируют компромисс между автономностью агента и безопасностью инфраструктуры. Описана архитектура компилируемого рантайма CapyAgent на языке Go, в котором вероятностный цикл генерации команд изолирован от системного слоя детерминированным конечным автоматом (FSM). Рассмотрены механизмы виртуализации терминала через псевдотерминалы (PTY), предотвращение переполнения контекстного окна при фоновых потоках, алгоритмы управления сессиями (yield/resume) и гарантии физической невозможности несанкционированных мутаций файловой системы без предварительного согласования оператором (Human-in-the-Loop).

1. Введение и постановка проблемы

Автономные программные агенты на базе больших языковых моделей (LLM) все чаще наделяются правами выполнения консольных команд, манипуляции файловой системой, управления контейнерами и взаимодействия с сетевыми API. Однако в подавляющем большинстве открытых и коммерческих решений реализация агентного цикла строится на интерпретируемых скриптах (Python) с прямым обращением к функциям вида subprocess.Popen или os.system.

Подобная организация несет в себе критические риски:

  • Иллюзия безопасности через системный промпт: Инструкции вида "Никогда не удаляй файлы без подтверждения" уязвимы для джейлбрейков, косвенных инъекций в контексте (indirect prompt injection) и банальных ошибок модели при длинных цепочках рассуждений.
  • Блокирующие и неуправляемые процессы: Фоновые задачи (сборка проекта, тесты, демоны) либо блокируют весь цикл агента, либо сбрасывают гигабайты логов прямо в контекстное окно, приводя к моментальному исчерпанию контекста и потере нити рассуждения.
  • Высокие накладные расходы: Интерпретируемые агенты потребляют сотни мегабайт ОЗУ в режиме ожидания, демонстрируют медленный холодный запуск и сложны в поставке на закрытые серверные узлы.

2. Архитектура ядра CapyAgent Core

Для решения описанных проблем в исследовательском центре Смольников было спроектировано и реализовано с нуля ядро CapyAgent Core на языке Go. Выбор Go обусловлен строгой статической типизацией, низким потреблением ресурсов, предсказуемым сборщиком мусора и мощными примитивами конкурентности (горутины и каналы).

+-------------------------------------------------------------------------+ | CAPYAGENT CORE (GO) | +-------------------------------------------------------------------------+ | | | +-------------------+ +----------------------------------+ | | | Agent Loop | | Decision Layer (Kivok-0.3b) | | | | (LLM Interface) | -------> | - Fast Intent Classification | | | +-------------------+ | - Risk Scoring (<50ms CPU) | | | | +----------------------------------+ | | v | | | +-------------------------------------------+ | | | | Deterministic Security Gate (FSM) | <--+ | | | State: PendingApproval -> Approved/Deny | | | +-------------------------------------------+ | | | | | +------+------+ | | | | | | v v | | [Low Risk] [High Risk: FS delete, kill, network mutation] | | | | | | | +----> [ Human-in-the-Loop Approval Queue ] | | | (Telegram / TUI / WebSocket Dispatcher) | | | | | | v v | | +-------------------------------------------+ | | | PTY / Process Isolation Manager | | | | - Virtual Terminal Session Pools | | | | - Stream Buffer & Truncation Gates | | | +-------------------------------------------+ | | | | | v | | [ Host OS: Linux Kernel / System Calls / Windows Subsystem ] | +-------------------------------------------------------------------------+

3. Модель детерминированного конечного автомата (FSM)

В CapyAgent каждое действие, сгенерированное моделью, проходит через строгий конечный автомат. Переход в состояние исполнения (Executed) физически невозможен без прохождения валидации по детерминированным правилам политик.

Состояния автомата формализованы следующим образом:

  • ActionProposed: Действие сформировано моделью и поставлено в очередь анализа.
  • PolicyEvaluating: Анализ команды детерминированными AST-парсерами (bash lexer) и слоем Kivok-0.3b.
  • PendingApproval: Если операция классифицирована как разрушительная (P0/P1: удаление файлов, системные вызовы, остановка сервисов), формируется криптографически подписанный тикет подтверждения. Исполнение процесса замораживается.
  • Approved / Rejected: Оператор принимает или отклоняет действие через защищенный канал (Telegram/TUI).
  • ExecutedWithYield: Команда отправляется в изолированный PTY с непрерывным контролем размера потока вывода.

4. Изоляция процессов через виртуальные псевдотерминалы (PTY)

Обычный перехват stdout/stderr не позволяет интерактивно взаимодействовать с утилитами, требующими псевдотерминала (например, top, интерактивные установщики, пакетные менеджеры). CapyAgent Core выделяет под каждую задачу отдельный PTY с динамическим буфером кольцевого типа.

Если процесс генерирует более 32 КБ вывода за один шаг, срабатывает детерминированное окно редукции: в контекст модели передается только заголовок выполнения, хвостовая часть (tail 50 строк) и структурированная статистика (код возврата, время выполнения, объем сгенерированных данных).

5. Экспериментальные результаты и бенчмарки

Сравнение производительности и надежности проводилось на сервере с конфигурацией: AMD EPYC 7702, 64 ГБ RAM, Linux 6.8.0. Было выполнено 1000 тестовых запусков типичных агентных сценариев (исследование репозитория, сборка бинарников, исправление тестов, фоновый запуск).

Метрика тестирования CapyAgent Core (Go) LangChain ReAct (Python) AutoGPT v0.5 (Python)
Холодный старт процесса 11.8 мс 1 840 мс 3 200 мс
Потребление памяти (Resident Set Size) 34.2 МБ 482.0 МБ 710.5 МБ
Перехват деструктивных команд (100 попыток инъекций) 100% (100/100) 74% (74/100) 61% (61/100)
Устойчивость к утечкам PTY дескрипторов 0 утечек 14 утечек 28 утечек

6. Заключение

Переход к скомпилированному рантайму на языке Go и внедрение детерминированного конечного автомата контроля безопасности позволяет устранить ключевые барьеры на пути промышленного внедрения автономных ИИ-агентов. CapyAgent Core доказывает, что агентная система может быть одновременно высокопроизводительной, компактной и абсолютно защищенной от неконтролируемых действий модели.

Цитирование (BibTeX)
@article{smolnikov2026capyagent,
  title={Архитектура детерминированного контроля и Human-in-the-Loop в автономных агентах: опыт разработки ядра CapyAgent на Go},
  author={Смольников, Кирилл},
  journal={Препринты Исследовательского центра Смольников},
  volume={1},
  pages={1--18},
  year={2026},
  publisher={Smolnikov Research},
  url={https://smolnikovresearch.ru/research/capyagent-hitl-runtime/}
}