把 Agent 的判断与行动变成可恢复的软件事实|KDC 系列 工程篇
vivo互联网技术 · 软件开发
互联网存储团队 2026-11-04 20:00 广东 一次 Agent 运行如何被恢复、交接、验证和持续演进。 作者:vivo 互联网存储团队 - Xiao Bo AI 合作者:ChatGPT(GPT-5.5) 创作模式:Human-led, AI-collaborated 责任声明:文章观点、理论体系及最终内容由作者负责;AI 参与讨论、推演、表达优化及部分内容生成。 目录 01. 会执行一次循环,不等于可以运行一个产品 02. 三种事实不能混在一起 03. 生产级 Agent 需要两条可以连接的链 04. ReAct、Harness 和 KDC 分别解决什么 05. 公开实践不是一套统一理论,但在回答同一组问题 06. Harness 不是一个单体 07. 最小运行对象:让现场拥有稳定归属 08. Session、Context、State、Memory 和 Knowledge 不是同一个对象 09. State、View 和 Control 必须分开 10. 语义责任必须分开,物理存储可以统一 11. 一份最小 State Schema 12. 从判断到执行,需要经历一次可恢复的状态变化 13. Checkpoint 不等于 Durable Execution 14. Run 结束以后,哪些事实可以离开 Session 15. 日志和 Trace 仍然不等于运行状态 16. 长时间任务还需要 Progress Contract 17. Agent Harness 本身也需要 Evaluation Contract 18. Harness 的假设也有生命周期 19. 不要先建设一个庞大的 Harness 平台 20. 实践:对一条 Agent 流程做恢复演练 21. 从“模型做过什么”走向“系统可以相信什么” 22. 理论边界与开放问题 会推理、会调用 Tool,只能说明 Agent 能够完成一次执行循环。要进入真实业务,系统还必须让目标、判断、审批、执行、产物和反馈拥有稳定状态,并在刷新、重连、进程重启和人工介入后继续保持一致。本文区分领域现实、业务判断事实和软件运行事实,提出业务因果链与运行事实链的双链结构;进一步将 Session、Harness 与执行环境解耦,区分 Session、Context、State、Memory 和 Knowledge,并以 Resume Contract、Progress Contract 与 Evaluation Contract 说明一次 Agent 运行如何被恢复、交接、验证和持续演进。 研究说明:知识驱动计算(Knowledge-driven Computing,KDC)是我们提出和正在打磨的一套 AI 应用软件工程理论,目前仍处于开放研究阶段。前四篇分别从 Reality、Knowledge、Reasoning、Skill、Capability、Memory 和 Feedback 展开。这一篇不再逐个解释概念,而是回答最后一个问题:它们如何组成一套完整、可审计、可治理、可渐进采用的软件工程模型? KDC系列文章 软件不是从数据开始,而是从现实开始 知识不是文件,也不是向量 Agent 不能只记录调用了什么,还要记录为什么调用 记忆不是存历史,而是治理未来行动 KDC 全景:从现实到反馈的完整工程模型 1分钟看图掌握核心要点👇 还是从退款这个具体场景开始。 用户问售后 Agent: 帮我看看这笔订单能不能退。如果可以,就直接帮我处理。 Agent 查询订单,引用当前退款政策,判断订单符合条件,然后准备调用退款能力。由于退款会改变订单和资金状态,系统要求用户确认。页面显示了一条审批提示: 订单符合退款条件。是否确认发起退款? 用户还没有点击确认,页面突然刷新。 刷新之后,审批提示消失了。聊天记录里还能看到 Agent 说过“准备退款”,但前端不知道审批是否仍然有效,后端不知道用户是否已经做过决定,能力运行时也不知道应该继续、暂停还是取消。 更危险的情况是,退款请求已经提交给支付渠道,但后端在写入本地完成状态之前重启。恢复后,系统只看到“任务尚未完成”,于是再次调用退款接口。 这一次,问题不在知识是否可靠,也不在 Agent 是否理解了用户目标。判断和授权规则可能都是正确的,系统仍然可能因为缺少稳定运行事实而丢失现场、重复执行或无法追责。 这说明,从“Agent 做出了正确判断”到“系统可靠地完成了行动”之间,还有一层不能省略的工程结构。 01 会执行一次循环,不等于可以运行一个产品 ReAct 可以把模型行为概括成一个循环: Thought -> Action -> Observation 模型根据当前上下文形成下一步,调用 Tool,读取结果,再继续判断。这个抽象很好地解释了