Skip to content

第十七章:为一个新需求设计 Agent ​

读到这里,你已经能解释 Hermes 如何组织模型、工具、上下文、历史、记忆与技能,也能分析多入口、调度、委托和失败恢复。现在换一个需求,不照抄简报助手的全部功能。

一个读书小组希望有个助手:管理员上传活动通知,可能是文字、图片或文件;助手整理下周活动,发现时间冲突和缺失信息,先形成待确认的群通知,得到管理员同意后再发送。

本章的产物是一份能讲清理由的设计方案。无需安装、画专业工程图或写代码,但要能够说明一条任务如何走完,以及哪些机制现在可以省略。

17.1 先把“智能助手”改成可验收的需求 ​

“自动帮我们安排好一切”无法确定权限和完成状态。先整理已知条件,把需要人决定的部分留下。

项目本次练习的约定
输入管理员提供的通知,可能包含重复版本、截图和缺项
输出下周活动清单、冲突与待确认项、群通知草稿
事实规则不自行编造时间、地点和活动取消;保留材料依据
权限管理员确认具体草稿和目标群后才能发送
私密范围报名者的私人联系方式不出现在群通知
初始规模一个管理员、一个小组,按需触发
尚未确定材料保存期限、多人共同管理、是否需要固定周报

这里的“时间冲突”还需要解释:两个活动重叠是否一定不能并存?如果不同人可以分别参加,助手应提示重叠,而不能擅自取消其中一个。找出冲突与替用户作决定,是不同职责。

先写这些边界,后面的模型、记忆和调度才有选择依据。

17.2 用六个问题检查设计是否完整 ​

图 17-1 毕业项目检查图:这是一组审查维度,不表示系统必须机械经过六个阶段。 点击图解可放大
左右滑动查看图解细节
需求与完成标准、模型与工具、状态与材料、身份与授权、生命周期和证据取舍六个设计维度

图 17-1 毕业项目检查图:这是一组审查维度,不表示系统必须机械经过六个阶段。

第一,什么输入算完整,什么输出算可交付?第二,哪部分需要模型判断,哪部分由工具确定执行?第三,状态存在哪里,什么时候带入?第四,谁能查看与操作?第五,怎样开始、停止与恢复?第六,用什么证据判断设计有效?

答不出的地方,先标为待定,不用“调用一个更强模型”补空白。比如没有合法接收目标,就不能从材料中随便找一个群号发送;没有活动日期,就保留待确认项。

17.3 从最小可用方案开始 ​

可以先选择一个 Agent,一次只整理管理员明确提供的一批材料。工具负责读取文字或提取图片内容、保存草稿;模型负责比较版本、识别缺项和组织表达。最后给管理员查看,不自动安排后台任务。

把这条主流程讲完整:入口确认管理员身份并创建任务;保存材料标识;组织当前要求与可用工具;模型取材并核对;程序记录结果;生成草稿与未解决项;等待具体确认;获准后将指定版本发送到指定目标,并记录交付状态。

图 17-2 回到全书责任图:把新需求放回同一张地图,检查是否遗漏执行者、状态归属和贯穿约束。 点击图解可放大
左右滑动查看图解细节
统一系统责任图包含人与入口核心运行模型与执行以及保存材料,毕业项目将具体职责放回这些位置

图 17-2 回到全书责任图:把新需求放回同一张地图,检查是否遗漏执行者、状态归属和贯穿约束。

图片提取可能识错字。若日期看不清,就应保留图片定位并请管理员确认,不能把提取工具返回的文字无条件当作事实。它和简报中的转述 B 一样,仍然需要核对。

这个方案使用循环、工具、上下文和持久记录。它没有因为课程介绍过多 Agent、定时和长期记忆,就全部加进去。

17.4 把状态拆成四份,避免“刚才那个” ​

状态谁负责保存与组织何时使用不能混成什么
原始材料与标识受控资料位置与读取工具核对版本、回读歧义模型已经永远记住
会话与本次运行记录会话持久化与运行程序追问、恢复和定位阶段外部消息必定已发送
草稿与版本产物存储预览、确认和实际发送一个总被覆盖的“最新稿”
批准与交付记录授权及发送路径核对谁批准哪版、发送到哪里群消息里一句含糊的“可以”

关键设计是确认和实际产物对应。如果管理员批准第 2 版,模型后来又修改了时间,不能继续沿用第 2 版的确认发送第 3 版。数据变化使授权条件变化,需要重新判断。

在 Hermes 上落实时,可利用已有 Profile、会话、工具和执行能力组织这些职责,但不能因此声称默认就具备“批准自动绑定任意文件版本”的业务规则。那是具体应用必须明确实现和验证的约定。

17.5 什么时候才增加记忆、技能与调度 ​

如果管理员每次都说“群通知不要附私人电话”,可以把它写成稳定规则或适当的偏好材料;但当前这场活动的地点不宜变成长期通用事实。过期资料需要有更新或失效方式。

若活动整理反复进行,可以形成技能:读取、比较版本、列缺项、形成草稿、等待批准、核对版本后发送。技能保存方法,活动材料和具体发送许可另外管理,不能把“上次允许发送”写成所有未来任务的通行证。

只有需求变成“每周固定整理当前资料”,才引入调度。新的任务定义要能在新会话独立找到资料与方法,并说明管理员不在线时应保存草稿还是继续。创建计划不是提前获得发送许可。

只有材料规模大到存在多个可独立核对的主题,才考虑委托。子任务可以各自提取活动,不直接发送或覆盖最终稿;父任务统一比较时间与版本。这样能解释新增机制的收益,也能解释为何暂时省略。

17.6 给故障留出有依据的继续方式 ​

阅读失败:保留已读与未读清单,不把缺材料说成没有活动。提取失败:保留歧义,不补造日期。生成失败:保留输入与已确认事实,再按预算恢复。

发送阶段则沿第十五章判断。尚未开始可以继续排队;明确拒绝可在授权仍适用时处理;结果未知先核对接收端。管理员发来新的活动版本,也可能使原待发送项失效,不能只恢复技术动作而忽略业务条件。

还要有停止方法:暂停新任务,取消尚未执行的投递,保留已完成结果与未知状态。不能把删掉聊天窗口当成撤销所有外部影响。

17.7 比较三种方案,说明为什么这样选 ​

方案适合的条件主要代价
表单加固定工作流输入字段齐全、步骤和判断规则稳定不擅长解释模糊通知与相互冲突的自然语言
一个 Agent 加受控工具材料多样,需要按反馈取材与核对要管理上下文、判断错误、授权和恢复
多 Agent 加调度多个复杂主题可独立推进,确有周期需求增加交接、状态、总开销与故障面

本练习的初始条件适合从第二种开始,也可以进一步缩小为固定表单。如果管理员愿意把每项活动录入完整字段,许多判断就不再需要 Agent。

能指出不需要智能体的部分,是设计能力的一部分。Hermes 提供一套机制,不要求每个应用用满它们。

17.8 交一份什么样的毕业方案 ​

提交五份相互能对上的材料:一张需求与完成标准表,一张责任图,一条包含输入与状态的任务时序,一份权限/失败恢复表,以及一组验收场景。每个模块旁边写一句采用或省略它的理由。

至少推演这些变化:通知更新后仍有人批准旧稿;截图中的日期不清;不同活动重名;普通成员要求查看私人报名资料;发送超时;管理员离线;背景任务与新消息同时到来。无需真的发送消息,也能先判断设计是否自洽。

参考方案怎样判合格?

合格的方案不要求与本章布局相同,但应满足:原材料与草稿可定位;模型判断与工具执行分开;确认对应版本与目标;缺项不编造;私人资料有访问与输出边界;恢复先核对阶段与副作用;多 Agent、调度和长期记忆都有采用或省略的理由;验收覆盖至少一个正常与多个异常场景。

如果写了“保证永不出错”,却没有证据与范围,不算更成熟。如果明确保留歧义、知道何时请管理员处理,并能说明恢复路径,反而更接近可落实的设计。

本章要点 ​

  • 从需求、事实与授权出发选择机制,不从功能清单反推需求。
  • 架构图、时序与状态表应能解释同一条任务,确认还需绑定具体产物与目标。
  • 用已有能力不等于自动获得所有业务约束,应用仍需落实自己的规则。
  • 能解释省略某个模块的理由,并推演反例,才说明知识已经可以迁移。

理解题 ​

1. 为什么活动地点不适合直接写成永久偏好?

它通常是某场活动、某个时间范围的事实,会失效或更新。偏好是比较稳定的表达或行为倾向。混合两者,下一场活动就可能沿用过期地点。

2. 管理员批准后模型只改了一处日期,为什么仍可能需要重新确认?

日期影响实际活动,已超出原来批准的具体产物。即使只改一个字符,也可能改变授权内容。应核对版本、变化与确认范围,而不是按修改字数判断。

3. 这个需求何时可以完全不用 Agent?

当输入已规范成字段,冲突规则可以确定计算,生成与发送步骤稳定,且例外可以交给人处理时,表单和固定工作流可能更直接。应按实际判断需求选择,而非为使用 Agent 强加复杂性。

主线到此完成。最后的对照专题用相同问题观察 Hermes 与 OpenClaw,检查我们的理解是否能跨产品成立。

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