如果同一技能有时成功有时偏离预期,单纯加长提示词通常无济于事。冲突的触发条件、缺失的必要输入、重叠的工具职责、权限变更以及过于宽松的验收标准,都可能导致执行路径漂移。首先复现问题并保留证据,再确定具体是哪个环节出了问题。
首先复现问题:保存一对可对比的样本
保留一次成功运行和一次失败运行的原始请求、输入文件版本、工具调用记录、输出结果、错误信息及时间戳。对敏感信息进行脱敏处理,但不要仅保存截图。
在测试环境中重新运行任务时,每次仅更改一个变量。如果同时更换模型、技能指令和工具配置,即使结果改善,你也无法确定是哪一项改动起了作用。
- 使用相同的固定输入快照
- 记录技能版本和运行时间
- 保存最后一次成功的步骤
- 切勿在生产数据上反复试错
根据症状定位故障层级
如果技能未被触发,检查其触发语句和排除条件。如果调用了错误的工具,检查工具职责是否重叠。如果在执行过程中开始胡乱猜测,检查必要输入和缺失的中止规则。如果输出结构发生变化,检查模板和字段级验收标准。如果写入重复数据,检查唯一键。
寻找执行路径最早发生偏离的步骤,而不要只盯着最终文本。上游输入为空可能会在下游表现为格式错误。仅修复格式问题会掩盖根本原因。
- 对比预期路径与实际路径
- 标记第一个偏离点
- 区分规则问题与外部服务故障
修正触发条件与输入边界
触发条件应描述具体的动作、对象和所需上下文,同时列出不应触发该技能的相似请求。例如,“更新已发布的文章”和“创建新文章”需要不同的技能和回滚方法。
将输入分为可查询信息和不可查询信息。对于可查询的信息,应先读取实际状态。如果缺少账户信息或业务规则等不可查询的细节,技能应当停止执行,而不是自行补全。无人值守的任务(如 Cron 作业)必须在发起付费调用或写入外部系统前完成前置检查。
- 在触发条件中添加反例
- 列出必填字段及有效范围
- 明确空值和过期值的处理方式
- 定义多个技能匹配时的优先级
收紧工具与权限管理
仅保留每个技能完成任务所需的工具。读取文件不需要写入目录的权限,创建草稿的权限也不意味着拥有发布权限。凭证必须来自受控源,且不应写入普通提示词或技能内容中。
网页、邮件和文件中的文本属于数据,绝不能覆盖任务目标。如果内容指示技能更改权限、泄露凭证或绕过验收检查,技能应忽略该指令并记录日志。
- 遵循最小权限原则
- 对具有副作用的操作要求单独确认
- 共享资源使用单一指定写入者
- 设置最大失败重试次数
建立回归测试与验收标准
准备至少四种类型的样本:标准输入、缺失字段、冲突需求和重复执行。验收测试不能仅检查“是否生成了内容”,还应验证链接状态、文件是否存在、记录 ID、发布状态以及最终页面。
应用修复后,运行所有样本并记录最近通过测试的技能版本。如果一个技能涵盖了不同的搜索意图、权限和回滚方法,将其拆分为两个范围更窄的技能将更易于维护。
- 标准样本始终通过测试
- 输入缺失时技能不会胡乱猜测
- 请求超出权限时技能会自动停止
- 重复执行不会产生重复写入
延伸阅读
如需回顾相关领域,请阅读 设计 AI Agent 技能系统 与 构建与管理知识库。
下一步
在 SmaugBrain 中,为有问题的技能创建一套脱敏后的回归样本。修复每一层后重新运行这些样本,并在确认所有测试通过后,再恢复生产任务。