Hermes Agent Core
AIAgent
AIAgent 是 Hermes 的核心对象,所有 surface 最终都创建一个 AIAgent 实例。
python
class AIAgent:
"""AI Agent with tool calling capabilities."""它持有:
- provider / base_url / api_key / model
- enabled toolsets / tool schemas
- session_id / session_db
- callbacks(tool_progress、thinking、streaming 等)
- memory manager / context compressor
- credential pool / fallback model
- checkpoint manager
- platform / user / chat / thread info
- active children(subagents)
初始化流程
AIAgent.__init__()
↓
agent/agent_init.py: init_agent()
↓
解析 provider / base_url
配置 api_mode(chat_completions / codex_responses / anthropic_messages / bedrock_converse)
构建 tool schemas
初始化 context compressor
连接 session DB
设置 credential pool
初始化 memory
...每轮 Turn 的 Prologue
build_turn_context()
↓
安装 safe stdio
_ensure_db_session()
设置 runtime main provider/model
设置日志 session context
恢复 primary runtime
刷新 MCP tools
清理 surrogate
生成 task_id / turn_id
重置 retry counters
修复连接
hydrate todo store / nudge counters
构建或恢复 system prompt
预加载 memory/plugin context
预压缩 context对话循环核心流程
while api_call_count < max_iterations:
修复 message alternation
组装 api_messages(注入 stable system prompt)
注入 memory/plugin ephemeral context
应用 prompt caching
清理 orphan tool results
估算 token
build api_kwargs
interruptible_api_call() ← 在后台线程中运行
normalize response
if tool_calls:
execute_tool_calls(...) ← 并发/顺序执行
continue
else:
final_response
persist session
return关键回调
| Callback | 用途 |
|---|---|
tool_progress_callback | 工具进度通知(CLI/Gateway) |
thinking_callback | 思考状态(TUI spinner) |
stream_delta_callback | 流式输出 delta |
step_callback | 每轮 API 调用 |
status_callback | 状态消息 |
event_callback | gateway event |