
5 分钟跑通 Hermes Agent 的工具调用循环从一条消息到最终回复让 Agent 把构建跑一遍、再把所有报错修掉——普通聊天机器人只会建议你可以试试构建命令Hermes Agent 会自己执行命令、定位报错、逐个改文件而且每一步的输出都读回去喂给模型。你自己实现这个想一步、调一个工具、读回结果的工具调用循环要手写 while 循环、拼消息、解析 tool_calls相当烦这个项目把整条循环封装成了一次对话你发一条消息回来时任务已经做完了。快递分拣中心消息怎么从输入走到回复你可以理解为包裹在快递分拣中心走的路线。你的消息是刚入件的包裹先上分拣线——conversation_loop.py 里的run_conversation函数就是传送带的驱动它把消息历史、系统提示、工具定义打包成一次模型请求模型说还要调工具包裹就重新上线不说就走向发货。传送带中段是工具操作台tool_executor.py它接住模型响应里的工具调用给每个工具分一个独立工人线程去执行操作台再忙也不让传送带停摆。最后一站是发货窗口 turn_finalizer.py它负责打包结果最终回复、完整对话历史、API 调用次数、是否被中断统统装进这个结果容器再交到你手里。一条消息怎么走完循环以检查项目有没有编译错误这条指令为例按时间顺序走一遍。第一轮循环组装请求系统提示、历史、工具定义打包发出。模型回来说要调 terminal 工具跑构建——循环先把这条 assistant 消息记进历史数据状态从等模型变成等工具。接着是校验与执行工具名对照当前启用列表验证、参数解析然后丢进线程池模型一次响应可能带多个工具调用池子大小按批次适配每个工具各占一个线程单个慢工具拖不垮同批其他工具。构建输出被包成一条 tool 结果消息回填历史——模型正是靠它看见上一步干了什么下一次请求照样带着完整历史发出。第二轮模型可能说再读一下报错文件同样的校验、执行、回填再来一遍也可能直接给出总结。终止条件只有两种响应里不再带工具调用循环正常退出或者撞上max_iterations上限循环停在这里并明确告知你预算用完了而不是静默截断。最后finalize_turn把回复、历史、调用次数装进结果字典和你的消息一起落库。比手写 while 循环多做了什么说白了裸while tool_calls:也能转起来但它离能用还差四件事。工具并发线程池按批次定大小、每工具独立线程一个慢的全量构建不会卡死同批的其他工具。上下文压缩每轮都会检查历史是否逼近上下文窗口的压缩阈值到线就先压缩再发请求否则长任务撑爆上下文API 直接报错。轮数熔断max_iterations加上迭代预算双保险防止模型陷入调工具、读结果、再调工具的死循环烧 token。结果元信息落库API 调用次数、token 用量、是否中断都装进结果容器写进数据库——这就是你事后排查它为什么多跑了几轮、导出轨迹复盘的依据。4 条命令跑起来以及它适合什么任务git clone https://gitcode.com/GitHub_Trending/he/hermes-agent cd hermes-agent hermes setup hermeshermes setup走完配置向导hermes进入终端界面丢一个列出当前目录结构的任务输出里能看到工具被逐个调用的实时过程。适合交给它的是长任务自动化定时日报、夜间跑构建修错和本地开发代理读写文件、跑命令配合容器后端隔离风险纯单轮问答、写段文案之类的活别用它一次普通对话就够轮不到循环出场。分拣中心的三站传送带、操作台、发货窗口——记住这三站其余模块都是挂在主线上的插件。创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考