Hermes Agent 多轮工具调用循环一次看懂:架构与执行走读

发布时间:2026/8/28 10:16:58
Hermes Agent 多轮工具调用循环一次看懂:架构与执行走读 Hermes Agent 多轮工具调用循环一次看懂架构与执行走读【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agentHermes Agent 是一个开源 AI 智能体框架核心是一套多轮工具调用循环模型「想」、框架「干」工具、把结果喂回模型「再看」如此往复直到任务完成。它通过统一的传输层对接 OpenAI 兼容端点、Anthropic、Bedrock、Codex 等多种推理后端。本文跟着一条真实消息走完「发请求→执行工具→返回结果」的全程适合想读懂源码或二次开发的开发者。 30 秒看懂整体架构调度中心 执行车间把它想成一家工厂。调度中心是 agent/conversation_loop.py 里的run_conversation单轮对话的主循环函数它接收任务、向模型下指令模型说「用文件工具改一下代码」调度中心就把活派给执行车间——agent/tool_executor.py里的工作线程收回干完的活再报回给模型。各供应商 API 的「方言」不同agent/transports/目录是翻译部发请求前把统一格式译成对方格式收到回复后再译回统一结构。 跟着一轮消息走它每一步做了什么初始化与构建请求。AIAgent智能体实例持有会话状态、工具列表、后端配置在agent/agent_init.py完成装配。消息到达后run_conversation先经agent/turn_context.py组装本轮上下文——系统提示、历史消息、工具定义——再调用当前后端 transport 的build_kwargs生成最终 API 请求温度等参数也在这一步进入请求体。解析响应统一「思考」与工具调用。各家回复结构不一transport 的normalize_response会把原始响应归一成NormalizedResponse定义在 agent/transports/types.py。推理内容兼容多种字段reasoning_content、reasoning以及 OpenRouter 风格的reasoning_details全部归一到同一取法。若响应带tool_calls每个调用依次经过三道关工具名是否存在于注册表、JSON 参数能否解析、然后执行。工具执行8 个工作线程的车间。agent/tool_executor.py 提供顺序与并行两种派发并行模式用线程池执行工具调用工作线程上限由_MAX_TOOL_WORKERS 8控制整批并发有 420 秒的超时兜底。工具抛出的异常不会打断主循环而是被捕获后包进工具结果消息返回给模型——模型看得见失败原因下一轮可以自行重试或换路。判断终止交回「回执」。本轮响应不再包含工具调用说明模型自认做完循环自然结束若触及agent/iteration_budget.py中的轮次预算上限则强制停止。循环结束后你能拿到完整消息历史、使用的轮次、每轮推理内容、工具错误记录以及用量与费用估算——这就是分析性能与排查问题的依据。API 侧的错误则由agent/error_classifier.py归类classify_api_error配合agent/retry_utils.py的退避策略决定是否重试。 想动手换后端、加工具、改参数落在这几处切换推理后端transport 是注册表模式register_transport(api_mode, transport_cls)注册新后端即可需实现convert_messages、convert_tools、build_kwargs、normalize_response、validate_response、map_finish_reason六个方法接口见 agent/transports/base.py。现成的chat_completionstransport 可对接任意 OpenAI 兼容端点——vLLM、SGLang、OpenRouter 换个base_url就能跑Anthropic、Bedrock、Codex、Gemini 原生、Vertex、Azure 也各有现成适配。注册新工具在tools/目录按terminal_tool.py、file_tools.py的样式添加工具并挂进注册表主循环无需改动。轮次与温度最大轮次由agent/iteration_budget.py的预算逻辑管理温度作为参数经build_kwargs透传到请求体。 从哪里读起Hermes Agent 适合需要让智能体自主跑命令、改文件、串联多个 API 的自动化场景。读源码从agent/conversation_loop.py的run_conversation入手「想→干→看结果→再想」的闭环全在那里想弄清工具如何并行再去翻agent/tool_executor.py就够了。【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考