☰
Hermes Agent 入门教程:一条消息跑完,看懂多轮工具调用循环的三个关键部件
2026/11/4 1:21:51 网站建设 项目流程

Hermes Agent 入门教程:一条消息跑完,看懂多轮工具调用循环的三个关键部件

给 Hermes Agent 丢一个任务,它会反复"思考 → 调工具 → 读回结果",直到做完才停手。这是个可接 OpenAI、Anthropic、OpenRouter 等多种后端的 AI 代理框架,核心价值是:把多轮工具调用这件要自己写循环、自己拼提示词的活,封装成一次对话。安装后先跑hermes setup走完向导,再执行hermes进终端界面,丢一句"列出当前目录结构"试试——输出里能看到它逐个调用工具的全过程。

第一步:hermes setup 与第一个最小任务

从零开始就两步。hermes setup是交互式向导,按提示填模型后端(OpenAI、Anthropic 都行)和 API Key 即可。装好后在终端敲hermes进入聊天界面,任务越简单越适合观察机制,比如"检查项目有没有编译错误"。

发完消息,它不像普通聊天机器人那样回一句"你可以用 grep 找一下"就结束:它会自己去调文件搜索工具、逐个读文件、必要时跑命令,每一步的输出都喂回给模型,由模型决定下一步。你发完消息就可以去干别的,回来时任务已经做完了。这一屏输出,就是下面要拆的循环的实时版。

对话循环内部:谁在决定"再问一次模型"

整条流水线的主体是 agent/conversation_loop.py 里的run_conversation。把它想象成乐团指挥:它本身不演奏,只决定什么时候该再敲一次拍子。

你每发一条消息,它先把消息历史、系统提示、工具定义打包成一次模型请求。收到响应后判断"模型还想调工具吗":想,就执行工具、把结果回填进历史、再发一次请求;不想,就收尾返回。

两个细节值得注意。其一,每次请求都带着完整历史,模型正是靠这个"看到"上一步的输出,这不是缓存,是每轮实打实重新发送。其二,循环有max_iterations预算:轮数撞上上限时它会明确告诉你预算用完了,而不是静默截断。上下文快满时它还会触发压缩,把旧对话浓缩掉再续跑。

工具怎么跑:一个临时线程池

真正执行工具的是 agent/tool_executor.py。模型一次响应里可能带多个工具调用,这个模块会把它们按批次派给一个临时线程池干活——池大小跟着当前批次的工具数量走,上限是 8 个工人。

每个工具在自己的线程里独立执行。一个慢工具不会卡住同批的其他工具;某个工具出错,也只是把错误文本写回它自己的结果位,循环本身不会崩。另外,每个工具名执行前都要过一遍白名单:不在当前启用列表里的名字,直接被拒回一条错误消息。

工具返回的输出(比如终端的 stdout)会被包成一条 tool 结果消息,回填进历史。下一轮请求发出去时,模型读到的就是这些内容——所谓"读回结果",本质就是这条消息进了下一次请求。

结果容器与收尾:turn_finalizer 干了什么

循环结束后返回一个结果字典:最终回复文本、完整对话历史、API 调用次数、是否被中断。可以把它当成一张工单:活儿干没干完、干了几步、谁签的字,都记在上面。

agent/turn_finalizer.py 的finalize_turn拿着这张工单收尾:把最终回复和你的消息一起落库、清掉本轮的脚手架、记录用量统计,并在异常退出时给你一句人话解释。用量分析、轨迹导出这些功能,数据都从这张工单取。

换个模型后端时只需改配置,不用动代码——循环、容器、线程池这三块都不关心具体哪家模型。

三类人,三种用法

定时长任务。内置 cron 调度让它可以定时跑活:每晚的日报、夜间备份,跑完把结果投到 Telegram、Slack 这些平台。你上面那张会话界面截图里,就能按来源(cron、telegram、discord)回看每次任务。

本地开发代理。在你自己的机器上读写文件、跑命令,配合容器后端可以隔离风险。适合"帮我跑测试、修报错"这类贴身场景。

研究 Agent 原理的开发者。代码里没有黑盒:循环的每一轮都可以打断点,看模型何时决定停、工具结果如何回填历史。这也是本文推荐的路径——跑通最小任务后,直接从run_conversation设第一个断点。

Hermes Agent 的主线就三个部件:一个循环负责"再问一次",一个结果容器负责记账,一个线程池负责跑工具。其余模块都是挂在这条主线上的插件。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询