Lab:追踪一轮对话#
目标#
跑一轮会触发工具调用的对话,并把运行时路径映射到仓库里的具体符号。
前置#
- 可用的
hermes对话(安装与首次对话) - 建议:本地 hermes-agent 仓库只读阅读
- 终端/文件类 toolset 已启用
步骤#
- 启动 Hermes,提一个需要工具的问题,例如:
- 「用你的工具显示当前工作目录。」
- 或「列出当前目录下的文件。」
- 观察 UI:最终回答前应能看到工具调用(名称 + 参数)。
- 在仓库中(只读)按顺序打开:
agent/conversation_loop.py— 找到带tools=的 Provider 调用循环model_tools.py— 找到handle_function_calltools/下对应工具模块 — 找到registry.register与 handler
- 在纸上写出一轮工具回合后的角色序列:
user→assistant(含tool_calls)→tool→assistant(最终)
预期结果#
- 会话中至少出现一次工具调用
- 一份短笔记:循环文件 → 分发函数 → handler 模块
- 角色序列符合严格交替规则
验证#
- UI 里看到的工具名出现在
toolsets.py或已启用的 toolset 中 - 能指到
handle_function_call作为模型 → handler 的桥梁 - 没有修改任何核心文件
常见坑#
- 问纯知识题导致从不调工具 — 把提示导向文件系统/shell
- 只读
run_agent.py,漏掉循环在conversation_loop.py - 把「UI 出现了工具」当成「一定在
_HERMES_CORE_TOOLS」— 要查当前平台 toolset
进阶#
- CLI 通了后再用 gateway 消息复做一遍(
hermes gateway setup),对照 数据流 - Telegram:
website/docs/user-guide/messaging/telegram.md