📐 软件工程 · 理论前沿

软件从现实开始:知识驱动计算提出 Reality First 主张,挑战 AI 应用设计范式

当 AI 应用开始在运行时解释数据、选择工具并影响业务状态时,数据表示中的遗漏和歧义可能直接转化为行动风险。vivo 肖博提出 知识驱动计算(Knowledge-driven Computing, KDC),核心主张是:软件不是从数据开始,而是从它试图观察、表示和影响的 领域现实 开始。

来源:综合公开信息整理 2025-07-24 全文约 4 分钟读完
#知识驱动计算 #Reality First #AI 软件工程 #KDC
Reality First 从领域现实开始,而非从数据开始
4 现实维度:对象 · 状态 · 关系 · 动态规律
5 Reality Map 实践步骤
2 层正确性:数字内部正确 + 与现实一致

⚡ 30 秒速览

  • 核心问题:退款接口返回成功,用户却未到账——数字系统内部"正确",但现实目标未实现。AI 应用让这个问题从建模视角变成了行动风险。
  • 根本原因:传统程序靠开发者在设计阶段补充语义;AI 应用在运行时动态解释异构表示,表示层中的遗漏、过期和歧义会沿判断链进入现实行动。
  • KDC 主张:应用软件的最终参照物不是内部状态,而是现实。架构应显式记录观察来源、适用范围和反馈条件,而非默认数据库中的最新值就是现实本身。
  • 实践工具:Reality Map——五步盘点系统与现实之间的映射关系,找出表示缺口,重新连接数字系统与业务现实。
  • 不是替代:KDC 不替代 DDD、RAG、MCP 或 Agent Framework,而是在它们之上提供一条围绕现实目标的连续工程链路。

01一个真实案例:退款接口返回成功之后

退款接口返回 HTTP 200,数据库事务成功执行,订单状态更新为"已退款",客服后台流程结束。三天后,用户再次联系客服:钱还没有到账。

从系统内部看,一切正常。从用户面对的现实看,退款没有完成。

这类问题通常被归入最终一致性、外部渠道延迟或对账异常。但在这些问题分类之前,还有一个更基础的问题:应用软件中的状态,究竟是不是现实本身?

💳 退款:数字表示 ≠ 现实 典型缺口

  • 系统看到的:refund_status = successgateway_response = accepted、事务提交成功。
  • 现实需要的:资金进入清算流程、银行处理完毕、用户账户最终到账。
  • 关键断层:系统把"渠道已受理"表达为"退款成功",但缺失对后续现实状态的观察和反馈。
  • AI 放大风险:如果 Agent 据此形成"退款已到账"的判断,可能自动关闭工单、通知用户,甚至发起后续操作——表示层的缺口沿判断链进入现实行动。
根本问题不是接口或数据,而是系统没有把现实承诺、表示语义和验证反馈之间的关系表达清楚。

02AI 改变了什么?从"设计时补语义"到"运行时做判断"

传统系统并不是只依靠数据运行。程序员在设计阶段把数据的语义、适用条件和例外处理写进确定的执行路径。数据表示即使不完整,代码和人工流程仍可补上缺失的解释。

AI 应用改变的正是这个前提。

传统程序

数据表示 → 预先编写的解释逻辑 → 固定条件分支 → API 调用。语义由开发者在设计阶段确定,路径固定。

AI 应用

多种表示 → 模型在当前上下文中解释 → 运行时判断 → 动态选择行动。语义解释和行动选择被移动到了运行时。

这里新增的风险不是"大模型可能读错一个字段",而是:表示层中的问题会沿一条更短、更动态的路径进入现实行动。模型接收到的通常不是完整现实,而是多个系统留下的局部表示;它需要在运行时自行拼接这些表示,形成的解释可能直接影响下一步行动——而 Tool 调用成功还会制造一种额外的确定感。

注:表示偏差并非 AI 时代才有,传统系统也会遭遇脏数据和状态延迟。AI 带来的变化在于:系统开始动态解释更多异构表示,判断路径不再全部预先写死,且判断可以更快地转化为行动。

03从现实开始:KDC 的 Reality First 主张

KDC 研究中所说的 Reality,是一个工程概念:在确定的系统边界和系统职责内,系统希望观察、建模、预测或影响的客观存在及其运行规律。

领域现实至少可以从四个维度理解:

Object对象:用户、商品、订单、支付
State状态:待支付、已发货、已退款
Relationship关系:用户创建订单,退款对应原支付
Dynamics动态规律:未支付不能履约,退款不超支付额

注:四个维度的意义不是提供另一套画图术语,而是迫使架构回答一个经常被跳过的问题——我们准备编码的数据,到底在表示什么?

现实进入软件系统,需要经过建模和编码。KDC 把数字编码统称为表示(Representation)。完整的链路是:

领域现实现实模型数字表示运行时判断行动选择现实行动

数据库保存的是表示,不是现实。每一种表示都有来源、观察范围、时间延迟和适用边界。架构需要知道一个字段"声称了什么",也需要知道它"没有证明什么"。

状态正确,不等于现实正确。

应用软件的"正确"至少包含两个层次:数字内部正确(事务、类型、接口、流程) + 数字表示与领域现实足够一致(现实对象、业务承诺、外部变化、结果反馈)。系统的最终参照物不是内部状态,而是现实。

04Reality Map:五步盘点系统与现实的映射

理解 Reality 最有效的方法,不是给现有架构增加一层抽象名词,而是选择一个边界明确的业务流程,检查数字系统究竟在映射什么。KDC 提供了五步实践:

1
写清系统边界和职责——用一句话说明系统负责什么、不负责什么。例如:"售后系统负责接收退款诉求、验证条件、发起退款并向用户反馈进度。实际资金清算由外部支付渠道和银行完成。"
2
列出对象、状态、关系和动态规律——不要先打开表结构,先从业务现实写起。
3
把现实元素映射到数字表示——为每个重要现实元素找到当前系统中的表示,同时记录:表示来自哪里、多久更新一次、它能够证明什么。
4
定义现实反馈——对每个重要行动追问:什么信号能够证明它在现实中产生了预期结果?"接口成功"是执行反馈,不一定是最终现实反馈。
5
形成映射缺口清单——寻找:现实中存在但系统没有表示的对象;多个系统用同一字段名表达不同含义;中间状态被命名为最终结果;行动只有技术返回,没有现实结果反馈。

注:Reality Map 不取代领域模型、数据模型或系统架构图,而是把它们重新连接到现实。团队完成第一次盘点后,只需选择一个影响最大的缺口进入后续设计,不必一次性重构所有表示。

编辑核心判断

AI 应用时代,软件工程必须多问三步:模型看到的表示对应哪一部分现实?这些表示足以支持什么结论?行动发生后,通过什么现实反馈确认目标已经实现?——KDC 的价值不在于提供新术语,而在于把"表示与现实的关系"从隐性问题变成显式工程对象。

理论开放与后续

KDC 目前仍处于开放研究阶段,尚未经过充分的跨场景实践验证。现实模型如何形式化、现实覆盖范围如何度量、持续一致性如何验证,仍是后续研究问题。
研究团队正在围绕电商流程完成验证,后续将逐步公开更多实践细节与工具链。