Skip to content

AtomCode v5.0.9 新子系统深度分析 — Live Runtime 控制平面与提交收据协议 ​

基于 strings ACP 客户端错误面 + WebUI 状态机 + 模块路径的还原分析 2026-09-09 前置报告:05-version-diff-v4.25.5-to-v5.0.9.md 姊妹报告:35_Daemon_WebUI.md(daemon/ws 层)、40_Execution_Policy_Intervention.md(policy 干预)、44_Session_Persistence_Context_Compaction.md(快照/持久化)


1. 源码模块(全新) ​

crates/atomcode-daemon/src/
  ├── native_live.rs       ← 原生 live runtime(提交控制面)
  ├── live_hub.rs          ← live 事件集线器
  ├── runtime_host.rs      ← 运行时宿主(进程管理)
  ├── kernel_runtime.rs    ← 内核运行时
  └── commands.rs          ← daemon 命令面

→ 5 个新模块:v5.0.9 把"运行时"从单一直通进程升级为 native_live 控制平面 + live_hub 事件分发 + runtime_host/kernel_runtime 生命周期 的分层宿主。


2. 提交协议(Submit → 收据) ​

2.1 Submit 操作面(ACP/WebUI 客户端) ​

live runtime rejected the message
live runtime did not accept the user input answer
live runtime did not accept the policy intervention resolution
live runtime rejected the mode switch / session switch / reasoning effort
live runtime rejected the stop request

→ 六类 submit/control 操作:消息、用户输入答复、policy 干预决议、 模式切换、会话切换、推理强度、停止请求 —— 每类都有被拒语义("not accept"/"reject")。

2.2 提交收据(Submit Receipt) ​

live runtime returned an invalid submit receipt
return { disposition: o.disposition, generation: o.generation, turn_id: ... }
if (o.disposition === void 0) return { disposition: `started`, generation: 0, turn_id: 0 }

→ 提交返回结构化收据:{ disposition, generation, turn_id } 三字段; disposition 缺省即 started(乐观默认)。客户端强类型校验(非法收据抛错)。

2.3 Disposition 状态机 ​

started / steered / paused / paused_at_cap / denied / interrupted / ending / error
provider_change_applied
undoactive_turn

→ 提交后可观察处置状态:已启动、被引导(steer)、暂停(paused/paused_at_cap)、 拒绝、打断、结束中、错误;provider_change_applied 标记 provider 热切换。


3. active_turn 并发门禁 ​

return e ? { allowed: false, reason: `active_turn` } : { allowed: true }
activeTurn: n.active_turn === true
session_id required for undo / active_turn / disposition / started / generation

→ active_turn 锁:已有活跃回合 → 拒绝新提交(reason: active_turn); 撤销/控制操作需 session_id + 当前 turn 状态。


4. 生命周期与并发保护 ​

live runtime started without a persistent session
failed to stop previous live runtime
cannot replace an active live runtime
discarded stale live runtime event
live runtime session snapshot unavailable

→ 四条守护:无持久会话不可启动;替换活跃 runtime 被拒; 旧 runtime 未停即报错;过期事件丢弃;会话快照不可得时给出明确空白。


5. 与既有系统的关系 ​

系统关系
DEEP_ANALYSIS_35 Daemon/WebUIWS 传输之上新增运行时控制面(submit/stop/steer)
DEEP_ANALYSIS_40 Policy 干预policy intervention resolution 走 live runtime 提交流
DEEP_ANALYSIS_44 Session 快照引用 live runtime session snapshot(可与原生快照联动)
ACP v2(32)客户端侧 rejected/receipt 对齐 ACP turn 语义
DEEP_ANALYSIS_41 next_promptsteered 状态对应 next_prompt 引导提交

6. 逆向方法论备注 ​

  1. live runtime (rejected|did not accept) the <op> 枚举六类控制操作
  2. return { disposition: o.disposition, generation, turn_id } 还原提交收据 schema
  3. disposition 缺省 started + 非法收据抛错 = 乐观校验协议
  4. reason: active_turn 暴露回合并发锁
  5. cannot replace an active live runtime / discarded stale live runtime event 揭示一次性 runtime + 事件去重
  6. native_live.rs / live_hub.rs / runtime_host.rs / kernel_runtime.rs = 分层宿主模块边界直接证据

本报告由持续分析循环生成 — v5.0.9 Live Runtime 控制平面与提交收据协议深度分析

基于 VitePress 构建 · AtomCode v5.2.3 逆向工程分析文档