04 · Hermes 是怎样完成任务的
模型、上下文、工具、Agent 循环和权限确认分别负责什么?
这是课程的第四篇。你不会修改配置,而是用上一篇的文件任务拆开 Hermes 的工作过程。看完后,你应该能解释它为什么会先读文件、再写结果,以及为什么“已经批准”仍不等于“结果一定正确”。
看完会得到什么
- 一张 Hermes 执行任务的工作地图
- 对模型、上下文、工具和 Agent 循环的直觉理解
- 判断一次工具调用是否合理的方法
- 分清“系统护栏”和“结果验收”的能力
开始前
- 预计时间:10—15 分钟
- 前置课程:03 · 怎样让 Hermes 完成第一个真实任务
- 已验证日期:2026-07-17
- 本篇不会修改文件或配置
- 本篇练习是判断题,不要求运行命令
先回到上一篇任务
你给 Hermes 的不是一个简单问答,而是一个有输入、限制和交付物的任务:
读取三个指定文件 → 整理事实 → 创建 summary.md → 检查结果如果只靠模型生成文字,它看不到你电脑里的文件,也无法真的创建 summary.md。Hermes 能完成这件事,是因为模型之外还有上下文、工具和执行循环。
一张完整地图
这不是一条固定脚本。模型会根据每一步返回的结果决定接下来做什么,直到任务完成、需要你决定,或触及限制。
1. 界面:你从哪里发出任务
Desktop、CLI 和消息平台都是入口。入口影响操作方式、可见信息和默认工具边界,但不会把模型本身变成另一个产品。
上一篇从练习目录启动 Hermes,是为了让“当前目录”成为清楚的任务环境。如果入口没有指向正确目录,再好的提示词也可能读错位置。
2. 上下文:模型这一次能看到什么
上下文不是“Hermes 知道的一切”,而是当前这次判断拿到的信息,通常包括:
- 你的任务说明;
- 当前会话里的相关对话;
- 系统和项目规则;
- 已返回的工具结果;
- 必要的运行环境信息。
上一篇中,三个文件的内容不是自动永久进入模型。Hermes 先调用文件工具读取内容,再把读取结果带回当前执行过程。
这也解释了两个常见现象:
- 文件改了,但 Hermes 没有重新读取,可能仍按旧内容判断;
- 会话太长、目标多次变化,重要限制可能被其他信息淹没。
因此,关键限制应写在任务里,而不是期待 Agent 从很早以前的对话中猜出来。
3. 模型:负责判断,不直接碰文件
模型更像大脑。它可以理解目标、比较信息、形成计划,并决定下一步需要什么工具。
在文件任务中,模型可能判断:
- 先确认目录中有哪些文件;
- 读取三个指定输入;
- 按要求分类;
- 创建
summary.md; - 重新读取结果并检查章节。
模型也可能判断错。它可能漏掉限制、误解原文,或者把“建议”写成已经发生的事实。模型负责提出动作,不代表动作天然正确。
4. 工具:把判断变成真实动作
工具负责接触模型外部的世界,例如:
- 文件工具读取、搜索和修改文件;
- 终端工具执行命令;
- 网页工具获取公开信息;
- 浏览器工具操作网页界面;
- 图像工具读取或生成图片。
工具有两个重要边界。
第一,**没有对应工具,模型就不能完成对应的真实操作。**它可以解释怎样创建文件,但没有文件工具时,不能声称文件已经存在。
第二,工具返回的是观察结果,不是最终结论。“命令退出码为 0”只能说明命令正常结束,不一定说明业务结果正确;“文件存在”也不代表内容准确。
5. Agent 循环:行动后再观察
普通问答常常是一次输入、一次输出。Agent 任务需要多轮内部循环:
上图中的“模型判断—执行与观察”会重复发生,直到任务完成、需要人工决定,或触及限制。
上一篇中,可靠的流程不是“写完就结束”,而是“写完以后重新读取 summary.md,再对照任务要求”。
但循环越长,不代表质量越高。目标模糊时,Agent 可能做很多无关动作。限制工具范围、写清验收标准,通常比要求它“多思考几轮”更有效。
6. 权限确认:决定能不能做,不决定做得对不对
权限确认回答的是:这个动作是否在当前授权范围内?
例如,任务只允许新建 summary.md:
| 动作 | 是否符合边界 | 原因 |
|---|---|---|
| 读取三个指定输入 | 是 | 完成任务所需 |
新建 summary.md | 是 | 明确交付物 |
修改 event-notes.txt | 否 | 原文件禁止修改 |
| 搜索整个主目录 | 否 | 超出当前目录 |
| 联网补充活动背景 | 否 | 任务明确不联网 |
即使你批准创建 summary.md,文件里仍可能有事实错误。批准动作和验收结果是两道不同的门。
权限提示也不是完整沙箱。Hermes 的本地工具通常在运行 Hermes 的系统用户权限内工作。审批能降低误操作,但不能替代目录隔离、最小权限、备份和人工检查。
Tool 和 toolset 有什么区别
- Tool 是一个具体动作,例如读取文件或执行终端命令。
- Toolset 是一组相关工具的开关和边界,例如
file、terminal或web。
可以用下面的命令查看当前工具状态:
hermes tools list本篇不要求修改工具配置。新人阶段的原则是:任务不需要的能力,不必为了“以后可能会用”全部打开。
为什么 Hermes 会“看起来完成了”,实际没有完成
常见原因有四类:
目标不完整
“帮我整理一下”没有说明输入、输出和完成标准。模型只能自行猜测。
工具没有执行成功
模型计划创建文件,但工具可能因路径、权限或依赖失败。必须读取真实工具结果。
观察不充分
文件成功写入,但 Agent 没有重新读取,也没有检查是否漏掉章节。
验收标准太弱
只检查“文件存在”,没有检查事实和来源。形式通过,内容仍可能错误。
30 秒判断练习
情况一
Hermes 说:“我已经把报告保存到 report.md。”但没有显示任何写文件工具结果。
判断: 不能确认完成。先检查文件是否真实存在。
情况二
终端命令返回退出码 0,但生成的网页打开后是空白页。
判断: 命令执行成功,业务验收失败。需要检查构建产物和页面,而不是只看退出码。
情况三
你只让 Hermes 查看日志,它请求修改生产配置以“顺手解决问题”。
判断: 超出授权。拒绝修改,要求先交付只读诊断结果。
情况四
Hermes 请求读取练习目录内的三个指定文件。
判断: 与任务直接相关,可以批准,但仍需检查最终整理是否准确。
权限检查
本篇不调用工具,也不修改系统。练习只要求你判断动作和结果的关系。
需要长期保留的原则:
- 模型提出下一步;
- 工具产生真实影响;
- 权限决定动作能否发生;
- 验收决定结果是否合格;
- 用户保留高风险和不可逆决定权。
本篇验收
- [ ] 能说明模型和工具分别负责什么
- [ ] 能解释 Agent 为什么需要“判断—行动—观察”的循环
- [ ] 知道上下文不是无限、永久、自动更新的
- [ ] 能区分工具执行成功和任务结果正确
- [ ] 知道权限确认不是完整沙箱
下一篇
下一篇会把这些判断变成一套安全方法:怎样评估动作风险,怎样处理凭据,哪些操作可以批准,哪些操作必须停下来确认。