Hermes 完整调用链
总览
Hermes 支持六种以上调用入口,但最终都汇入同一个 AIAgent。
六条调用链
1. CLI 模式
hermes chat
↓
hermes_cli/main.py → cli.py::HermesCLI
↓
HermesCLI.chat(user_input)
↓
AIAgent(...)
↓
agent.conversation_loop.run_conversation(...)
↓
response → print to terminal2. Gateway 模式
Telegram message
↓
gateway/platforms/telegram.py
↓
MessageEvent
↓
GatewayRunner.route(event)
↓
session_key cache lookup
↓
AIAgent(...)
↓
run_conversation(...)
↓
response → platform.send(chat_id, ...)3. Cron 模式
Ticker → load_jobs()
↓
spawn thread
↓
AIAgent(...)
↓
run_conversation(job.prompt)
↓
response → deliver("telegram")
↓
save to ~/.hermes/cron/output/4. ACP 模式
IDE (Zed/VSCode/...)
↓
ACP Agent Client Protocol
↓
acp_adapter/server.py
↓
ThreadPoolExecutor
↓
AIAgent(...)
↓
run_conversation(...)
↓
ACP events → back to IDE5. TUI 模式
hermes tui
↓
TypeScript Ink app
↓
IPC / subprocess → AIAgent
↓
run_conversation(...)
↓
streaming → TUI components6. Desktop 模式
Electron app
↓
HTTP / WebSocket → Gateway API
↓
GatewayRunner
↓
AIAgent
↓
response → desktop UI统一抽象
所有 surface 共享:
AIAgent
├─ provider / base_url / api_key
├─ toolsets + tool schemas
├─ SessionDB
├─ memory manager
├─ context compressor
├─ system prompt (cached)
└─ callbacks没有 surface 走特殊路径——这是 Hermes 架构最核心的约束和优势。
对比
| Surface | Pi | OpenCode | Hermes |
|---|---|---|---|
| CLI | ✅ | ✅ | ✅ |
| TUI | ✅ (自研) | ✅ (Solid) | ✅ (Ink) |
| Gateway | ❌ | ❌ (无消息平台) | ✅ |
| Cron | ❌ | ❌ | ✅ |
| ACP | ❌ | ✅ | ✅ |
| Desktop | ❌ | ✅ | ✅ |
| API Server | RPC | HTTP REST | ✅ |
| MCP | ❌ | ✅ | ✅ |