Skill 的执行结果如何反馈给 Agent,用于后续的自我改进或反思?
面试官:“Skill 执行完之后,它的结果怎么反馈给 Agent,用来做后续的自我改进或反思?”
候选人:
“这个问题触及 Agent 系统从‘能跑’到‘越跑越好’的关键。我设计的反馈机制不是一条单线,而是三条并行的反馈回路:一条实时调整当前任务,一条离线优化 Skill 本身,一条全局调优 Agent 的决策模型。三条回路各司其职,共同构成一个自进化的闭环。
回路一:实时反思 —— 当前任务的自我纠错
这条回路在同一个任务内就生效,不等到任务结束。
当 Skill 返回结果时,编排引擎启动一个轻量级的反思步骤。这个反思步骤本身可以是一个内置的“校验 Skill”,它对上游 Skill 的输出做三件事:
-
Schema 校验:输出是否符合声明的 JSON Schema?必填字段是否齐全?类型是否正确?
-
业务合理性校验:结合规则引擎做常识判断。比如订机票 Skill 返回的起飞时间是 1970 年,立刻标记为异常。
-
跨 Skill 一致性校验:如果“查天气”说北京 35°C,“穿衣建议”却推荐羽绒服,编排引擎检测到矛盾,标记可信度降级。
反思步骤产出一个可信度评分(0-1),以及一份偏差报告。如果评分低于阈值(比如 0.7),编排引擎会:
-
尝试调用替代 Skill(如果有同功能的其他版本或提供商)。
-
如果替代也失败,生成澄清问题反问用户(“我查到的航班信息有些异常,您能确认一下出发日期吗?”)。
-
将这次低分事件记录为负样本。
这条回路让 Agent 具备了“话说到一半发现不对,立刻改口”的能力,而不是傻傻地把错误结果一路用到底。
回路二:离线优化 —— Skill 自身版本的迭代信号
这条回路不干预当前任务,而是在后台积累数据,驱动 Skill 的版本改进。
每个 Skill 执行完毕后,以下数据被写入反馈数据库:
-
执行摘要:耗时、成功/失败、重试次数、可信度评分。
-
异常详情:异常类型、堆栈(脱敏)、是超时还是逻辑错误。
-
用户行为信号:
- 用户是否在收到结果后立刻追问或纠正?(“不对,我要的是明天不是今天”)
- 用户是否重复执行了相同意图?(说明第一次结果没满足需求)
-
用户是否点了“踩”或直接放弃任务?
-
对比基准:同类 Skill 在相同场景下的表现(比如 A 版本 vs B 版本的成功率)。
这些数据喂给一个Skill 质量分析引擎,它自动生成:
-
缺陷聚类:把相似异常按堆栈签名聚类,找到 Top 3 根因。
-
回归预警:新版本上线后,如果成功率显著低于旧版本(卡方检验),自动告警并建议回滚。
-
优化建议:如果 P95 延迟上升,建议增加缓存或调整超时配置;如果某参数频繁导致校验失败,建议改进参数说明或增加前置澄清。
这些报告直接推送到 Skill 的开发者后台,形成“开发 → 上线 → 监控 → 反馈 → 改进”的闭环。对于简单的优化(如调整超时参数),甚至可以自动提交配置变更请求,走灰度发布流程。
回路三:全局学习 —— Agent 决策模型的进化
这是最高层次的反馈,它不针对单个 Skill,而是优化 Agent 的编排决策能力。
关键数据是任务级的结果:
-
任务最终成功还是失败?
-
如果成功,实际执行路径(DAG 实例)和预估路径的偏差有多大?
-
如果失败,是哪个 Skill 导致的?编排引擎当时是否有更好的选择(比如选另一个 Skill 版本就不会超时)?
-
用户满意度(显式反馈 + 隐式信号)。
这些数据被构造成决策日志,格式类似:
{
"context": "用户要出差,时间紧迫",
"decision": "选择了 Skill A (v1.2) 而不是 Skill B (v2.0)",
"outcome": "A 超时,用户等待后取消",
"counterfactual": "如果选 B 的预估耗时会减少 40%",
"lesson": "时间敏感场景下,优先选 P95 延迟低的版本"
}
积累足够多的决策日志后,可以用这些数据微调编排引擎的决策模型(如果编排是基于 LLM 的,可以做偏好对齐;如果是规则引擎,可以自动调整路由权重)。
更直接的方式是强化学习信号:把任务成功定义为 +1 奖励,用户放弃定义为 -1。编排引擎每次选择 Skill 组合和版本,都是在做一个决策,结果反馈为奖励,长期优化目标是最大化任务成功率。
这套机制运行几个月后,我们的 Agent 在出行规划场景里,从最初“每次都要问用户选哪个航班”进化到“根据用户历史偏好和当前时间自动选最优航班,只让用户最终确认一次”,任务完成率从 68% 提升到 91%。