Skip to content

第二章:Hermes 的系统全貌 ​

你在聊天窗口提出简报要求,工具却读到了电脑上的文件。模型如果运行在外部服务中,它怎样接触本地材料?关闭窗口后再打开,之前的任务为什么有时还在,有时却找不回来?

这些问题不能只靠“模型很强”解释。我们需要分清软件的责任、实际运行位置,以及材料保存在哪里。本章建立两张全书共用的图:一张看组成,一张看过程。

学完后,你应能把第一章的任务卡放到系统中,并说清一条消息怎样形成行动和结果。本章的产物是两张地图,后续每章会放大其中一部分。

2.1 先看组成,不急着画成上下级 ​

Hermes 的核心工作,是把输入、模型、工具与状态组织成可持续推进的任务。理解时可以按以下几种责任来观察:

责任主要问题消息简报中的例子
人与入口目标怎样进来,结果怎样交回?你提出要求,在终端或消息渠道接收草稿
会话与配置这条消息延续什么历史,使用哪些能力?找到对应对话,确定模型和可用工具
核心运行本轮准备什么,接下来怎样推进?组织模型输入、承接调用、处理结果
模型服务根据当前输入提出什么?请求读取原公告,或形成两条草稿
工具与执行环境实际怎样接触文件、网页或外部服务?读取材料,返回正文或错误
保存的材料下次还能找回什么?会话记录、偏好和可复用方法
图 2-1 教学视图:按责任理解系统,不表示源码严格四层,也不表示所有模块运行在同一台电脑。图中暂不画时间顺序。 点击图解可放大
左右滑动查看图解细节
Hermes 的教学责任图:人与入口、核心运行、模型与执行、保存的材料;权限预算中断和记录贯穿运行

图 2-1 教学视图:按责任理解系统,不表示源码严格四层,也不表示所有模块运行在同一台电脑。图中暂不画时间顺序。

图中的分组帮助我们提出问题,而不是宣布所有组件互相上下级依赖。比如“会话”既涉及入口选择,也涉及保存历史;“工具”既有模型看到的说明,也有真正执行的程序。需要继续把不同责任拆开。

官方实现将多种入口与共同的 Agent 核心连接,提示词构建、模型访问和工具派发分别承担任务的一部分。这里用普通语言描述它们,先建立可以反复使用的概念地图。

2.2 模型在哪里,行动又在哪里发生 ​

把本地文件读入任务,并不要求模型服务直接拥有你电脑的文件系统。

一种常见运行方式是:Hermes 程序在你的电脑或服务器上组织请求,模型在所连接的服务中返回调用意图,本地或远程工具执行读取,再由程序把读取结果发送到下一轮模型请求。

因此,需要分别问“谁提出动作”和“谁具有实际访问能力”。工具也可以在容器、远程机器或其他服务中执行,具体位置由配置决定。位置改变不等于权限自动扩大,更不表示任务所需材料会自己流到模型那里。

以材料 A 为例:它先作为一个文件存在;读取工具获得内容后,运行程序决定如何把结果带入模型输入;模型到这一步才可能据此判断。若结果没有带入,文件就在身边也无济于事。

后面讨论权限时,会继续区分来源和执行边界。此时先能画出模型服务、运行程序和工具所在的位置,避免把它们想成一个能直接做所有事的“大脑”。

2.3 再看时间:一条请求怎样走完 ​

组成图无法告诉我们先后顺序。下面再沿着简报任务走一次,这是一条教学主线,省略了很多具体恢复分支。

图 2-2 教学示意:第 5 步之后可以再次准备模型输入,图中只展开一次工具往返,最终答复在信息足够或需要说明限制时形成。 点击图解可放大
左右滑动查看图解细节
任务时序教学图:目标进入会话,程序准备模型输入,模型提出工具请求,工具执行,程序记录反馈,再形成答复并交付

图 2-2 教学示意:第 5 步之后可以再次准备模型输入,图中只展开一次工具往返,最终答复在信息足够或需要说明限制时形成。

入口首先接收目标,识别它属于哪段对话。接着,运行程序整理本轮输入:用户要什么、有哪些历史材料、当前能用哪些工具。模型返回读取 A 的请求后,程序找到相应工具执行,收到正文或错误。

结果需要与原请求对应,并进入后续判断所能看到的信息。模型读到 A、B 的冲突后,可以继续查证;能形成有边界的草稿后,再通过原入口交付。一次用户要求,可能这样经历多次模型请求。

这条顺序里,有三个容易混淆的节点:

  • 模型提出读取请求,只说明有了行动意图。
  • 工具返回正文,只说明取得了一份内容。
  • 入口显示草稿,只说明结果已经被呈现。

我们还需要分别检查材料是否合适、解释是否正确、状态是否留下。本书后续会逐一展开,不能把最后出现一段文字当作前面所有环节都已成功。

2.4 会话、一次运行和长期材料 ​

假设你先说“整理简报”,稍后追问“把重复那条去掉”。这两条消息可以属于同一段会话,每次处理都可能包含多轮模型与工具往返。

会话组织连续交流的历史;一次任务运行描述某次要求怎样推进和结束。承接工作的 Agent 运行实例,则是软件在处理过程中的具体执行对象。它们彼此有关联,却不是同一个计数单位。

再看长期材料:

材料希望保留什么何时可能有用
会话历史当时问过什么、取得什么、怎样处理继续追问或找回过程
精选记忆相对稳定的事实与偏好新对话需要了解用户或环境
技能某类任务的做法、前提与验证方式下次遇到相似任务

“本次不足三条”属于这次任务状态;“我喜欢简短、明确标出未知”可能是偏好;“先去重再核对冲突”可以成为方法。不能因为都能写入文件,就把它们当成同一类信息。

这些材料怎样保存和加载,后文有专章。现在不必记住目录和格式,只要先保留一个问题:下次需要的究竟是原始过程、精选事实,还是一套方法?

2.5 共享核心,为什么还要划清边界 ​

终端、消息渠道和定时任务可以复用共同的运行机制。这减少了每个入口各自重写工具执行、上下文与恢复的需要,也要求入口提供清楚的身份、历史和结果交付信息。

但复用核心并不等于共享所有材料。工作群和私人对话可以使用同一套软件,同时拥有不同会话与状态范围。程序还需要知道:这条消息该进入哪里,使用什么配置,结果发回谁。

同样,“用了同一个模型”也不足以定义同一个 Agent。两个任务可能连接相同服务,却拥有不同工具、历史、偏好和授权。这些外围设计共同影响系统怎样工作。

2.6 用两张图定位一个问题 ​

现在假设草稿里采用了错误说法。沿责任图先问:材料从哪里来,反馈由谁组织,最终判断依据是什么。沿时序图再问:哪一步取得了内容,哪一步带入了冲突,哪一步形成了结论。

看到的现象可以先检查的关系
工具没有取得 A请求、派发、实际读取是否发生
取得了 A,模型却只讨论 B本轮输入是否包含 A,是否保留它的条件
草稿显示了,重开却找不到交付与状态保存是否都完成
另一个会话出现了无关偏好身份、会话选择与记忆加载是否混淆

这些关系帮助缩小范围,还不能替代具体记录。下一章首先放大“准备本轮输入”,让我们能判断模型实际看到了什么。

本章要点 ​

  • 系统责任图解释组成与边界,任务时序图解释先后与往返。
  • 模型服务、Hermes 程序和工具可以位于不同环境,判断与执行分别观察。
  • 会话、一次任务运行与运行实例有联系,但不是同一单位。
  • 历史、记忆和技能保留不同材料;共享核心不表示数据和身份自动共享。

理解题 ​

1. Hermes 能读取本地文件,是否说明外部模型直接访问了电脑硬盘?

不能这样推断。可能是工具在本地读取,运行程序再把内容带进模型请求。应分别画出模型、程序、工具的位置和信息传递路径,再看实际配置与记录。

2. 同一会话内,用户连续提出两次要求,一定只会请求模型两次吗?

不一定。每次处理都可能需要多轮模型判断和工具往返。会话消息数、任务运行次数、模型请求尝试和工具调用数量分别计数,不能直接互换。

3. 下一周继续整理简报,哪些旧材料应该进入新任务?

按目的选择。稳定偏好可以由记忆提供;上周删除某条消息的原因需要找回历史;去重核实的方法可以通过技能复用。新任务仍需自己的时间范围和资料,不能把上周内容直接当作本周事实。

下一章:模型每轮究竟收到什么。

社区学习手册 · 正文与原创图解 CC BY-SA 4.0 · 代码 MIT