Skip to content

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_callbackgateway event

Powered by VitePress