第九章:不同入口怎样管理状态
你在工作群里让 Hermes 写技术简报,又在私人终端里讨论旅行安排。两边可能使用同一套软件,却不应该因为“是同一个 Agent 产品”就把身份、记忆和权限混在一起。
本章把经常一起出现的几个名词拆开:它们分别描述入口、对话、持久状态和界面呈现。
9.1 入口、会话和持久身份不是一回事
| 名称 | 主要责任 | 不应直接推导出的结论 |
|---|---|---|
| CLI(命令行界面) | 接收终端输入并呈现结果 | 开一个终端就等于新建了隔离身份 |
| Gateway(消息网关) | 连接平台、适配消息、路由与管理会话 | 所有经过网关的用户共享同一段历史 |
| Session(会话) | 组织某段对话的历史与生命周期 | 程序重启必然结束会话 |
| Profile(配置档) | 组织一份持久配置及状态目录 | 目录分开就有操作系统级安全隔离 |
| Bot Mode bot | 把 Profile 呈现为可持续交互的具名 Bot | 它等同于临时委托产生的子 Agent |
这些概念有联系,但不能互相替代。一次排查先确认“哪个入口、哪个 Profile、哪段 Session”,比直接说“AI 串台了”更容易找到问题。
9.2 Profile 把持久状态分开
该版本的 Profile 是独立的 Hermes home,组织配置、凭据、记忆、技能、会话与定时任务等状态。可以分别服务工作和个人场景。
因此,工作 Profile 查不到个人偏好,可能恰好是预期的隔离结果;反过来,如果二者都允许工具访问同一个公共目录,文件层面仍可能发生交集。逻辑分区与资源访问要分别检查。
9.3 Bot Mode 提供持续的交互对象
Hermes 的 Bot Mode 以 Profile 为基础,为 Bot 提供名字、呈现与长期对话入口。官方文档区分了普通 Profile、Bot Mode bot、平台消息 bot 和委托子 Agent。
尤其要看会话生命周期:Bot 的固定聊天与普通临时会话并非处处使用同样的重置规则。不能把普通会话里的“新建”操作,机械理解为所有 Bot 场景都会产生全新关系与历史。
这一点也与第六章相连:长期保留的同一会话和新会话加载记忆,是不同机制。谈“跨会话记忆有效”之前,要先确认是否真的跨过了会话边界。
9.4 同一个任务从多个入口继续,需要路由依据
下面是教学示意:工作群发来“修改简报第二项”,系统需要识别群与发送者、选择目标会话,再把消息带到相应任务历史。如果只是把最近一份简报全局当作当前任务,就可能误改另一个用户的资料。
入口越多,认证、消息顺序、重复事件、会话选择与结果投递越需要明确规则。共享核心可以复用能力,但不能跳过这些入口责任。
不写代码的小练习
为工作群与私人终端画一张入口、Profile、Session 的对应表。再单独列出可访问目录,检查“聊天分开”与“文件可接触范围”是否被错误地当成了同一边界。
本章要点
- 入口描述消息通道,会话描述一段历史,Profile 描述持久配置与状态。
- Bot Mode、平台 bot 与临时子 Agent 不是同一个概念。
- 会话延续、压缩和重新开始,需要按具体场景核对生命周期。
- 状态目录隔离不等于文件、网络或操作系统权限隔离。
理解题
1. 两个 Profile 的聊天记录分开,是否就能放心让它们处理同一个敏感目录?
不能只根据聊天隔离判断。还要看工具使用的系统身份、目录权限、执行后端与允许范围。Profile 首先组织 Hermes 状态,不自动构成所有资源的安全边界。
2. 为什么重启网关后仍然记得刚才的对话,不能直接证明持久记忆在起作用?
可能是同一会话历史从存储中恢复了。应区分完整会话恢复、精选记忆加载与历史检索,不能把所有延续行为都归到 MEMORY.md。
对照官方实现
身份与状态确定后,任务还可以不依赖一条新的聊天消息来触发。