第二章:Hermes 的系统全貌
你在聊天窗口提出简报要求,工具却读到了电脑上的文件。模型如果运行在外部服务中,它怎样接触本地材料?关闭窗口后再打开,之前的任务为什么有时还在,有时却找不回来?
这些问题不能只靠“模型很强”解释。我们需要分清软件的责任、实际运行位置,以及材料保存在哪里。本章建立两张全书共用的图:一张看组成,一张看过程。
学完后,你应能把第一章的任务卡放到系统中,并说清一条消息怎样形成行动和结果。本章的产物是两张地图,后续每章会放大其中一部分。
2.1 先看组成,不急着画成上下级
Hermes 的核心工作,是把输入、模型、工具与状态组织成可持续推进的任务。理解时可以按以下几种责任来观察:
| 责任 | 主要问题 | 消息简报中的例子 |
|---|---|---|
| 人与入口 | 目标怎样进来,结果怎样交回? | 你提出要求,在终端或消息渠道接收草稿 |
| 会话与配置 | 这条消息延续什么历史,使用哪些能力? | 找到对应对话,确定模型和可用工具 |
| 核心运行 | 本轮准备什么,接下来怎样推进? | 组织模型输入、承接调用、处理结果 |
| 模型服务 | 根据当前输入提出什么? | 请求读取原公告,或形成两条草稿 |
| 工具与执行环境 | 实际怎样接触文件、网页或外部服务? | 读取材料,返回正文或错误 |
| 保存的材料 | 下次还能找回什么? | 会话记录、偏好和可复用方法 |
图中的分组帮助我们提出问题,而不是宣布所有组件互相上下级依赖。比如“会话”既涉及入口选择,也涉及保存历史;“工具”既有模型看到的说明,也有真正执行的程序。需要继续把不同责任拆开。
官方实现将多种入口与共同的 Agent 核心连接,提示词构建、模型访问和工具派发分别承担任务的一部分。这里用普通语言描述它们,先建立可以反复使用的概念地图。
2.2 模型在哪里,行动又在哪里发生
把本地文件读入任务,并不要求模型服务直接拥有你电脑的文件系统。
一种常见运行方式是:Hermes 程序在你的电脑或服务器上组织请求,模型在所连接的服务中返回调用意图,本地或远程工具执行读取,再由程序把读取结果发送到下一轮模型请求。
因此,需要分别问“谁提出动作”和“谁具有实际访问能力”。工具也可以在容器、远程机器或其他服务中执行,具体位置由配置决定。位置改变不等于权限自动扩大,更不表示任务所需材料会自己流到模型那里。
以材料 A 为例:它先作为一个文件存在;读取工具获得内容后,运行程序决定如何把结果带入模型输入;模型到这一步才可能据此判断。若结果没有带入,文件就在身边也无济于事。
后面讨论权限时,会继续区分来源和执行边界。此时先能画出模型服务、运行程序和工具所在的位置,避免把它们想成一个能直接做所有事的“大脑”。
2.3 再看时间:一条请求怎样走完
组成图无法告诉我们先后顺序。下面再沿着简报任务走一次,这是一条教学主线,省略了很多具体恢复分支。
入口首先接收目标,识别它属于哪段对话。接着,运行程序整理本轮输入:用户要什么、有哪些历史材料、当前能用哪些工具。模型返回读取 A 的请求后,程序找到相应工具执行,收到正文或错误。
结果需要与原请求对应,并进入后续判断所能看到的信息。模型读到 A、B 的冲突后,可以继续查证;能形成有边界的草稿后,再通过原入口交付。一次用户要求,可能这样经历多次模型请求。
这条顺序里,有三个容易混淆的节点:
- 模型提出读取请求,只说明有了行动意图。
- 工具返回正文,只说明取得了一份内容。
- 入口显示草稿,只说明结果已经被呈现。
我们还需要分别检查材料是否合适、解释是否正确、状态是否留下。本书后续会逐一展开,不能把最后出现一段文字当作前面所有环节都已成功。
2.4 会话、一次运行和长期材料
假设你先说“整理简报”,稍后追问“把重复那条去掉”。这两条消息可以属于同一段会话,每次处理都可能包含多轮模型与工具往返。
会话组织连续交流的历史;一次任务运行描述某次要求怎样推进和结束。承接工作的 Agent 运行实例,则是软件在处理过程中的具体执行对象。它们彼此有关联,却不是同一个计数单位。
再看长期材料:
| 材料 | 希望保留什么 | 何时可能有用 |
|---|---|---|
| 会话历史 | 当时问过什么、取得什么、怎样处理 | 继续追问或找回过程 |
| 精选记忆 | 相对稳定的事实与偏好 | 新对话需要了解用户或环境 |
| 技能 | 某类任务的做法、前提与验证方式 | 下次遇到相似任务 |
“本次不足三条”属于这次任务状态;“我喜欢简短、明确标出未知”可能是偏好;“先去重再核对冲突”可以成为方法。不能因为都能写入文件,就把它们当成同一类信息。
这些材料怎样保存和加载,后文有专章。现在不必记住目录和格式,只要先保留一个问题:下次需要的究竟是原始过程、精选事实,还是一套方法?
2.5 共享核心,为什么还要划清边界
终端、消息渠道和定时任务可以复用共同的运行机制。这减少了每个入口各自重写工具执行、上下文与恢复的需要,也要求入口提供清楚的身份、历史和结果交付信息。
但复用核心并不等于共享所有材料。工作群和私人对话可以使用同一套软件,同时拥有不同会话与状态范围。程序还需要知道:这条消息该进入哪里,使用什么配置,结果发回谁。
同样,“用了同一个模型”也不足以定义同一个 Agent。两个任务可能连接相同服务,却拥有不同工具、历史、偏好和授权。这些外围设计共同影响系统怎样工作。
2.6 用两张图定位一个问题
现在假设草稿里采用了错误说法。沿责任图先问:材料从哪里来,反馈由谁组织,最终判断依据是什么。沿时序图再问:哪一步取得了内容,哪一步带入了冲突,哪一步形成了结论。
| 看到的现象 | 可以先检查的关系 |
|---|---|
| 工具没有取得 A | 请求、派发、实际读取是否发生 |
| 取得了 A,模型却只讨论 B | 本轮输入是否包含 A,是否保留它的条件 |
| 草稿显示了,重开却找不到 | 交付与状态保存是否都完成 |
| 另一个会话出现了无关偏好 | 身份、会话选择与记忆加载是否混淆 |
这些关系帮助缩小范围,还不能替代具体记录。下一章首先放大“准备本轮输入”,让我们能判断模型实际看到了什么。
本章要点
- 系统责任图解释组成与边界,任务时序图解释先后与往返。
- 模型服务、Hermes 程序和工具可以位于不同环境,判断与执行分别观察。
- 会话、一次任务运行与运行实例有联系,但不是同一单位。
- 历史、记忆和技能保留不同材料;共享核心不表示数据和身份自动共享。
理解题
1. Hermes 能读取本地文件,是否说明外部模型直接访问了电脑硬盘?
不能这样推断。可能是工具在本地读取,运行程序再把内容带进模型请求。应分别画出模型、程序、工具的位置和信息传递路径,再看实际配置与记录。
2. 同一会话内,用户连续提出两次要求,一定只会请求模型两次吗?
不一定。每次处理都可能需要多轮模型判断和工具往返。会话消息数、任务运行次数、模型请求尝试和工具调用数量分别计数,不能直接互换。
3. 下一周继续整理简报,哪些旧材料应该进入新任务?
按目的选择。稳定偏好可以由记忆提供;上周删除某条消息的原因需要找回历史;去重核实的方法可以通过技能复用。新任务仍需自己的时间范围和资料,不能把上周内容直接当作本周事实。
下一章:模型每轮究竟收到什么。