Программная интеграция

Hermes предлагает три протокола для управления агентом из внешних программ — плагины IDE, пользовательские пользовательские интерфейсы, конвейеры CI и встроенные субагенты. Подберите тот, который соответствует вашему транспорту и потребителю.

Протокол Транспорт Лучшее для Определено
АКП JSON-RPC через stdio Клиенты IDE (VS Code, Zed, JetBrains), которые уже поддерживают [Протокол клиента агента] (https://github.com/zed-industries/agent-client-protocol) acp_adapter/
Шлюз TUI JSON-RPC через stdio (или WebSocket) Пользовательские хосты, которым требуется детальный контроль сеансов, команд с косой чертой, утверждений и событий потоковой передачи tui_gateway/server.py
API-сервер События HTTP +, отправленные сервером OpenAI-совместимые интерфейсы (Open WebUI, LobeChat, LibreChat…) и веб-клиенты, независимые от языка шлюз/платформы/api_server.py

Все три используют одно и то же ядро ​​AIAgent. Они отличаются только форматом провода и набором функций, которые они предоставляют.


ACP (протокол агента-клиента)

hermes acp запускает сервер stdio JSON-RPC, говорящий по ACP. Используется в производстве VS Code (расширение ACP от Zed Industries), Zed и любой IDE JetBrains с плагином ACP.

Предоставляемые возможности: создание сеанса, отправка приглашений, фрагменты сообщений агента потоковой передачи, события вызова инструментов, запросы разрешений, разветвление сеанса, отмена и аутентификация. Вывод инструмента преобразуется в блоки содержимого ACP Diff/ToolCall, понятные IDE.

Полный жизненный цикл, мост событий и поток утверждения: ACP Internals.

hermes acp                  # serve ACP on stdio
hermes acp --check          # verify ACP dependencies and adapter imports
hermes acp --setup          # interactive provider/model setup for ACP terminal auth

TUI-шлюз JSON-RPC

tui_gateway/server.py — это протокол, с которым взаимодействуют Ink TUI (hermes --tui) и встроенный мост PTY приборной панели. Любой внешний хост может использовать тот же протокол через stdio (или WebSocket через tui_gateway/ws.py).

Каталог методов (выбрано)

prompt.submit           prompt.background       session.steer
session.create          session.list            session.active_list
session.activate        session.close           session.interrupt
session.history         session.compress        session.branch
session.title           session.usage           session.status
clarify.respond         sudo.respond            secret.respond
approval.respond        config.set / config.get commands.catalog
command.resolve         command.dispatch        cli.exec
reload.mcp              reload.env              process.stop
delegation.status       subagent.interrupt      subagent.steer
spawn_tree.save / list / load
terminal.resize         clipboard.paste         image.attach

«session.active_list», «session.activate» и «session.close» — это локальные элементы управления сеансом в реальном времени, используемые переключателем сеансов TUI. Используйте session.list / /resume для обнаружения сохраненных стенограмм; используйте методы активного сеанса только для сеансов, которые в данный момент открыты в процессе шлюза TUI.

Перемотка истории на prompt.submit

Перемотка/редактирование/восстановление представляет собой prompt.submit, который удаляет часть сохраненной расшифровки перед запуском нового хода. Поскольку эта запись представляет собой деструктивную перезапись устойчивых строк сеанса, шлюз учитывает ее только тогда, когда клиент заявляет о своем намерении:

Параметр Значение
truncate_before_user_ordinal Индекс пользователя, начинающийся с нуля, для резки. Все, начиная с этого хода, отбрасывается. Строки временной шкалы, предназначенные только для отображения (display_kind), не учитываются. Должно быть действительным целым числом — логическое значение JSON отклоняется с кодом «4004».
confirm_truncate Требуется при отправке порядкового номера. Объявляет, что эта отправка на самом деле является перемоткой назад, а не обычной отправкой, которая несет в себе оставшийся порядковый номер. Отправка без порядкового номера отклонена с кодом 4004 (утечка состояния перемотки).
confirm_empty_truncate Дополнительно требуется, если в результате обрезки расшифровка останется пустой (порядковый номер «0»).

Порядковый номер без confirm_truncate отклоняется с кодом 4029 и ничего не записывается. Хосты, реализующие перемотку, должны устанавливать флаг в тот момент, когда пользователь запрашивает его, и никогда не должны сохранять порядковый номер в состоянии при обычных отправках.

События передаются обратно

message.delta, message.complete, tool.start, tool.progress, tool.complete, approval.request, clarify.request, sudo.request, sudo.expire, secret.request, secret.expire, gateway.ready, а также жизненный цикл сеанса и события ошибок. События истечения срока действия содержат исходный { request_id }; внешние хосты должны очищать только соответствующее ожидающее приглашение.

Сопоставление RPC в стиле Pi

Каждая команда в спецификации Pi-mono RPC (issue #360) имеет эквивалент TUI-шлюза:

Команда Пи Гермес эквивалент
подсказка prompt.submit (или ACP session/prompt)
рулить session.steer
follow_up prompt.submit поставлен в очередь после текущего хода
прервать сессия.прерывание
set_model command.dispatch для /model <provider:model> (в середине сеанса, постоянно)
компактный session.compress
get_state session.status
get_messages сессия.история
switch_session сессия.резюме
вилка сессия.ветвь
ui_request / ui_response clarify.respond / sudo.respond / secret.respond / approval.respond

API-сервер, совместимый с OpenAI

gateway/platforms/api_server.py предоставляет доступ к Hermes через HTTP для любого клиента, который уже поддерживает формат OpenAI. Полезно, если вам нужен веб-интерфейс, средство запуска CI на основе Curl или потребитель, не использующий Python.

Конечные точки:

POST /v1/chat/completions        OpenAI Chat Completions (streaming via SSE)
POST /v1/responses               OpenAI Responses API (stateful)
POST /v1/runs                    Start a run, returns run_id (202)
GET  /v1/runs/{id}               Run status
GET  /v1/runs/{id}/events        SSE stream of lifecycle events
POST /v1/runs/{id}/approval      Resolve a pending approval
POST /v1/runs/{id}/stop          Interrupt the run
GET  /v1/capabilities            Machine-readable feature flags
GET  /v1/models                  Lists hermes-agent
GET  /api/model/options          Provider-aware picker inventory
GET  /health, /health/detailed

Настройка, заголовки («X-Hermes-Session-Id», «X-Hermes-Session-Key») и подключение внешнего интерфейса: API-сервер.

Поверхности каталога моделей

API-интерфейс, совместимый с OpenAI, намеренно сводит GET /v1/models к минимуму: это ожидаемые интерфейсы конечной точки совместимости, а не полный поставщик/модель Hermes каталог подборщика.

Если для внешней плоскости управления требуются строки поставщиков, курируемые Hermes, для каждой модели подсказки о ценах или возможностях используйте одну из аутентифицированных поверхностей выбора:

Эти поверхности используют один и тот же конструктор полезных данных и одного и того же специального поставщика. политика зондирования:

Используйте /v1/models для совместимости с OpenAI-клиентом. Используйте /api/model/options или model.options, когда вы создаете средство выбора моделей с поддержкой Hermes.


Какой из них мне следует использовать?


Горячая замена модели

Переключение модели в середине сеанса работает на любой поверхности — это слэш-команда /model под капотом.

Разрешение с учетом поставщика (одно и то же имя модели выбирает правильный формат для любого поставщика, с которым вы работаете) встроено. См. hermes_cli/model_switch.py.


Примечание по --mode rpc

У Hermes нет флага --mode rpc. Три вышеприведенных протокола уже охватывают варианты использования — ACP для клиентов протокола IDE, шлюз TUI для хостов stdio JSON-RPC и сервер API для HTTP. Если вы обнаружите реальный пробел, который ни один из них не заполняет, откройте проблему с конкретным потребителем, которого вы создаете.