认知应用 · Draft

Yao 求值语义 v0.1

规范正文 · 与源码同步在 GitHub 查看源码

状态:草案

维护者:新变元

规范原文:English

最后更新:2026-08-21

1. 范围

本规范定义同一种 Yao 语言如何由模型与 Runtime 求值,同时不混淆双方权威,并定义 lowering、悬挂、持久化、恢复、失败、并行 join 与 Program Value 执行语义。

2. 两个求值器,一种语言

Evaluation Loop 所有者 语义角色
eval Runtime 确定性控制、持久 Effect、带类型数据流
infer 模型 Runtime 权威约束下的非确定性认知求值

两者消费和产生相同 Yao Value。所有权只决定谁选择下一语义步骤,不改变 Value、Effect、 Capability、因果身份和终态 Outcome 的含义。Runtime Control Loop 始终负责准入、能力 结算、物理执行、持久化、恢复、审批、取消、Budget 和交付。

3. 编译流水线

UTF-8 source
  -> 带 Span 的具体语法
  -> 已解析名字的 AST
  -> 带类型与推导 Effect 的 HIR
  -> Validated Program
  -> 纯求值器和/或 Runtime Plan IR

Effect 恢复边界不得重新解析源码。持久状态记录已校验表示、Machine Continuation、词法 环境、Budget、Pending Causal Identity 和终态。纯表达式只有在保持 Failure、Diagnostic、 Canonical Identity 和 Effect Order 时才能常量折叠。

4. 确定性求值顺序

par 外均从左到右;参数在 Effect 请求前完整求值。确定性 Machine 无 I/O 推进, 直到产生终值、分类失败、Typed Effect Request 或 Structured Branch Group Request。 Machine 不得自行执行 Tool、调用模型、修改 Host Object 或启动未追踪任务。

5. Effect 交接

Effect Request 的稳定身份由父 Plan 与单调 Effect Sequence 派生。Runtime 必须原子持久化 父级等待状态与子级权威,或提供崩溃/重放下观察等价的行为。重放等待 Machine 必须产生 相同身份;只有完全匹配的 Pending Identity 与 Effect Kind 才能恢复父级。完全重复的结果 幂等,过期或外来结果必须拒绝。授权在准入与交接时都检查,以后者为准。

6. 模型持有的正文求值

eval 内的 infer 创建因果相连的模型 Evaluation。请求包含经过完整校验的 Yao infer 正文,而不是由 Runtime 重新概括出的 task。模型依据共享的 Language Card 求值同一个正文, 并且只能请求经过能力结算后仍然可用、在正文中静态可见的 Tool。

请求还包含结果契约、父 Program 身份、源码 Span,以及 (captures ...) 显式列出的父程序 绑定值。这些名称构成该边界完整的词法披露集合,对应值可以发送给当前配置的模型服务商; Runtime 不得序列化或发送任何其他父程序绑定。进程重启后,必须从持久状态重建字节一致的 程序、捕获值、Tool 范围和结果契约。

只有终态 Child Outcome 能恢复父级;Runtime 必须将其解码为声明类型。Provider 推理文本、 部分输出或未经验证的自我声明不得成为终值。

7. 结构化并行

7.1 建立分支

Lowering par 产生一个持久 Branch Group,以及每个源码分支对应的 Child Continuation。 Group 身份由父 Plan 与 par Sequence 派生;分支身份还包括规范化名称。父级等待、Group 与 Child Authority 必须原子创建,或能从单个 Durable Intent 幂等恢复。崩溃不能留下 已经准入却不被 Join 看见的分支。

7.2 调度与隔离

分支各自拥有不可变词法快照、Continuation Stack、Budget、Pending Effect 和终态。Runtime 可用任意物理顺序调度并限制并发度。源码顺序只决定结果构造与规范身份,不建立分支间 happens-before。

7.3 Join

父级等待全部分支终态;成功结果按源码顺序组装。任一分支失败时,父级收到包含所有分支 名称、状态、失败分类和成功结果引用的 Parallel Failure。父级取消向未终止分支传播;某 分支失败不会抹除已准入同级,也不能假装其外部 Effect 已回滚。

7.4 重启等价

任何持久边界后,其他 Worker 必须能重建 Group 并产生相同结果或失败。测试必须在建组前、 部分建组后、Child 等待时、部分 Child 完成后、全部完成但尚未 Join、父级恢复后注入重启。

8. Program Value 准入与执行

模型生成的候选 Program 先进入隔离状态,没有执行权威。准入记录规范表示与 Hash、原始 源码与 Span、生成 Evaluation/Attempt/Model Route/Terminal Event、声明与推导的 Output/ Effect Contract、创建时 Capability Ceiling、Validator Version 与诊断。

run 创建绑定 Program Value Hash 的持久子执行,重新计算当前 Capability 并与历史 Ceiling 取交集。已经撤销的权威不能由旧 Program Value 恢复。eval 根由 Runtime 按 Plan 控制推进;infer 根由持久控制状态立即发出一个正式子 Evaluation,并在其有类型终值返回后 完成汇合,Runtime 不会把其中的认知工作伪装成确定性求值。父级等待子执行终态;Child 不得 访问调用方局部绑定、修改父 Machine 或扩张聚合 Budget,只能继承 Runtime Profile 明确允许 的不可变 Host Environment。Morphz v0.1 把剩余聚合 Budget 转移给 Child,Join 后不返还 未使用额度;该保守规则在重启前后保持一致。

9. Host Effect 收据

Host Effect 是持久权威边界。Runtime 将结果交回确定性求值前,必须以父 Plan 身份与 Effect Sequence 为键提交不可变收据,绑定准确 Operation、已求值 Argument、规范化 Typed Result、 Route 与因果身份。若 Worker 在 Host Commit 后、父级 Checkpoint 前崩溃,重放必须返回已存 Result;相同收据身份携带不同 Operation/Argument 属于 Integrity Failure。Proposal 或不可变 对象不得在这种重放中重复提交。

10. 失败分类

分类 示例 fallback 可捕获
value 解码失败、除零、字段缺失
inference typed 结果非法、Provider 终态失败
tool Tool 声明失败 是,受 Tool 策略约束
parallel join 分支失败
resource 动态集合或子工作超限 是,除非威胁完整性
cancelled Principal 或 Supervisor 取消
authority Capability 撤销、Lease 无效
integrity Hash 不符、外来 Completion、状态损坏
admission 执行前语法、类型、Effect、Capability 拒绝 不适用

Failure 应保留因果身份和可用 Source Span;Runtime 不得把 Integrity 或 Authority Failure 转成普通程序数据。

11. Budget

Budget 具有层级。父 Program 为嵌套 inference、并行分支与 Program Value 提供上限;即使 物理并发,Child 工作也消耗父级聚合 Budget。重启恢复最近持久化余额,不能重新充值。 至少计量 Tool、Inference、Branch、Typed IR Step、Program Value Nesting 与 Deadline。

12. 可观测性

每个 Effect、Branch、Program Value 准入、SubPlan、恢复、失败与终态 Outcome 必须可追溯 到 Agent/Context、父 Evaluation/Plan、可选 Objective、Source Artifact/Program Hash、 Source Span/Generated Provenance、Principal/Capability Decision 以及稳定因果父级与 Sequence。

13. 持久化 IR 迁移

所有新准入源码统一使用 Typed Yao 语义。Runtime 可在有界迁移期内读取已持久化 Legacy Plan IR,但不得重新解析 Legacy 源码,也不得通过 eval、Harness 加载、Program Value 准入 或任何模型路径暴露该读取器。迁移是存储问题,不能形成第二种源码语言。

14. 一致性测试矩阵

参考套件必须包含 Golden Parser/Diagnostic/Canonical Fixture、表驱动类型与 Effect 测试、 纯求值属性测试、Mock Tool/Model Failure、所有 Machine Frame 的序列化恢复、SQLite 与 PostgreSQL Crash Window、Parser/Decoder/Canonicalizer/Program Admission Fuzz、Legacy 源码拒绝 与持久化 IR 迁移 Fixture、Resource/Adversarial Output,以及 Worker 替换前后观察等价的 E2E 测试。