
Hermes Agent 工具调用循环是怎么转起来的?读透 4 个文件就够【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agentHermes Agent 是一个能接 OpenAI、Anthropic、OpenRouter 等模型后端的 AI 代理框架:你丢给它一句任务,它反复替你调工具——搜文件、跑命令、把结果读回来——直到干完才停手。这篇文章讲清三件事:核心文件怎么分工、一条消息进来后真实发生了什么、哪些人值得把它跑起来。同样的活儿,你手动要干几步假设你问:列一下agent/目录里超过 1000 行的.py文件,各自负责什么。没有它时,你要自己干四步:跑一遍wc -l数行数、排序挑出大的、逐个打开文件读头部注释、最后把结论写成清单。目录一大,你得在几十个终端标签页之间来回跳,还得在脑子里记哪些已经看过了。Hermes Agent 把这几步收成一句话。你发完消息就可以去干别的:它自己列目录、逐个读文件、把结果写成清单,任务做完才停下。它替你解决的核心问题很直接——自己维护 while 循环、自己往消息里拼工具结果,这套活儿被它打包进了一次对话。四段流水线,分别归谁盯指挥:整条流水线的主体是 agent/conversation_loop.py 里的run_conversation。你每发一条消息,它就把历史、系统提示、工具定义打包成一次模型请求;拿到响应后判断模型还想调工具吗,想就执行并回填,不想就收尾。想弄清某次对话为什么多请求了一轮,先看这个文件。车间:真正干活的是 agent/tool_executor.py ️。模型一次响应可能带多个工具调用,它按批次派给一个临时线程池,池子大小跟随本批调用数。单个慢工具不会拖住同批其他工具;某个工具报错,也只把错误文本写回那个工具的结果位,循环本身不崩。工具超时、并发异常,都来这里查。计数器: 一个线程安全的计数器 agent/iteration_budget.py。默认上限 500 轮,主代理每请求一次模型就扣一格,子代理另有独立额度。轮次问题、预算耗尽报错,看它。夜班的会计:循环结束后由 agent/turn_finalizer.py 接管结账——最终回复和完整历史落库、本轮 token 用量记进账本、轨迹导出。凡是跟这次花了多少、历史在哪、怎么回放有关的,都在这查。一条消息进来后发生了什么拿上面那句看看agent/目录哪个.py最大走一遍。进场准备:指挥先刷新凭证、重建系统提示、检查上下文是否快到压缩阈值,然后发出第一次请求。第一轮:模型回复调用搜索工具统计行数。指挥先把这条 assistant 消息记进历史,校验工具名在当前启用列表里、解析参数,再丢进车间的线程池。返回的行数被包成一条 tool 结果消息回填历史——注意每次请求都带完整历史,模型正是靠这个看到上一步的输出。第二轮:模型可能接着说读一下最大文件头部的 docstring,于是同样的校验、执行、回填再来一遍;也可能直接给出总结。停在哪:模型的响应里不再带工具调用,循环就退出,这段文本成为最终回复。另一种情况:计数器扣到 500 轮上限,循环立即停止,并明确告诉你预算用完了,而不是静默截断。最后,夜班的会计把回复加历史落库、用量入账,这一轮才算结束。三类人最适合用它,第一步跑什么跑长任务的人:内置 cron 调度,每天早上出一份日报就够了,结果自动投到 Telegram、Slack 这些平台;本地开发的人:在你机器上读写文件、跑命令,可以切到容器后端隔离风险;想研究 Agent 会话循环怎么写的人:代码里没有黑盒,循环的每一轮都能打断点。最小上手路径就两条命令:先跑hermes setup走完安装向导、选一个模型后端,再跑hermes进终端,把那句统计agent/目录最大的文件丢进去,你就能在输出里实时看到工具被逐个调用的过程。换模型后端改配置即可,不用动代码。只记住这条主线指挥决定何时再问一次模型,车间负责把工具跑完,计数器决定何时停,夜班的会计负责结账。把这四个文件读顺,其余模块都是挂在这条主线上长出来的插件。想再深一层,从 agent/turn_tool_round.py 读起——一批工具调用是怎么被分批派发、又怎么回填进历史的,看完整条流水线就通了。【免费下载链接】hermes-agentThe agent that grows with you项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考