AIDAWORK / ARCHITECTURE

Runtime 现状 vs 遗留 vs 未核实

独立图页 ↗
机制说明(SoT)图是辅读 · 结论以说明与证据为准

图:新人默认进 compare(同屏对照:统一 Work(唯一入口)vs runtime-v2.1 遗留 vs 生产切流未核实);main = 统一 Work 提交 + 观察路径。钉点:Agent e2adc9a3c325 · Desktop 8eecd12081db。 先读本机制说明,结论以 NOTES + evidence 为准。

本页可直接往下读完整机制说明,不需要「演示 / 播放故事」。术语不熟先看 术语表。

先读机制说明,结论以说明与证据为准 · 基于固定代码版本核验 · 部署状态另行确认

机制说明(全文)

Runtime:统一 Work 路径与 runtime-v2.1 遗留(tip 对齐)

图:新人默认进 compare(同屏对照:统一 Work(唯一入口)vs runtime-v2.1 遗留 vs 生产切流未核实);main = 统一 Work 提交 + 观察路径。钉点:Agent e2adc9a3c325 · Desktop 8eecd12081db。 先读本机制说明,结论以 NOTES + evidence 为准。

读法:先分「tip 代码」与「部署事实」

身份 tip 代码 chat 入口 生产 / 部署(核实范围) 说明
runtime-work-v1(统一 Work) 有:ChatSubmissionStore.admit → bindAdmittedWork 写 command_envelope、C0 效果位置、original_root_run_id 原 Work 身份;提交 wire 支持 work-v1 与匹配 policy 的 skill-v2(缺省/空值须无 policy) 仅静态源码;未做正式环境巡检 RUNTIME_WORK_PROTOCOL + FILE_WORK_PROFILE
runtime-v2.1 文本切片 遗留:durableText 分支与 Worker prepareText 仅处理存量 v2.1 Run;RUNTIME_EXECUTION_PROTOCOL 常量仍在 已移除:头为 v2.1 → 426 RUNTIME_EXECUTION_PROTOCOL_UNSUPPORTED — Desktop register-runtime-v2-ipc / runtime-v2-core-contract / agent-loop 合同已删除
生产全量切流 — — 未核实 代码收敛不等于部署证明;hostAdmission / RUNTIME_HOST_CONVERGENCE 已删除(见 ATLAS-DEBT)

代码收敛 ≠ 生产启用。 分栏同 write-authority:未核实的部署事实禁止画成已落地。

目录统一

packages/agent/src/runtime-v2/ 已并入 packages/agent/src/runtime/(execution / local / work / continuation…)。主题 id 仍为 runtime-v2-status,叙述以协议身份为准,不以旧目录名为准。

统一 Work 路径(main 图)

  1. Desktop Main 经 RuntimeWorkIpcCoordinator.submitSubmission 提交;同一 Coordinator 负责观察与 Stop 投影(Desktop 91a25b75 / 7470e12e)。
  2. Gateway /api/chat:X-AIDA-Runtime-Protocol 有值且 ≠ runtime-work-v1 → 426 RUNTIME_EXECUTION_PROTOCOL_UNSUPPORTED。
  3. direct(带 agentId)与 routed(无 agentId)提交都经 ChatSubmissionStore.admit 以 runtimeWork 受理(首轮同事务创建 Conversation + Session;钉点 e2adc9a3c325 起 runtimeWork 必填,旧 runtimeExecution 分支与 CHAT_SUBMISSION_PROTOCOL_CONFLICT 已删除,Agent 9a3e49ec1),由 bindAdmittedWork 绑定(Agent 87db143e)。占用检查不再锁已有 root(ADR-0094),并排除后台 root(ADR-0095,见 scaling-roles)。
  4. RunExecutionWorker 在 chat role 装配,从 PostgreSQL 队列领取执行,并经 workbenchExecution 驱动 routed Work。

runtime-v2.1 遗留

durableText(options.runtimeProtocol === RUNTIME_EXECUTION_PROTOCOL)与 Worker 的 prepareText 仍在,只处理存量 v2.1 Run;chat 不再产生新的 v2.1 Run。

未核实

  • 生产是否已全量切到统一 Work 路径。
  • 未承诺自动重发模型 / 工具级恢复。
  • 入口叙事见 enterprise-tour-narrative。

证据与范围

  • aida-agent · packages/tool-client/src/types/runtime-execution.ts · RUNTIME_EXECUTION_PROTOCOL / RUNTIME_WORK_PROTOCOL · e2adc9a3c325
  • aida-agent · packages/agent/src/runtime/work/run-work-admission.ts · bindAdmittedWork · e2adc9a3c325
  • aida-agent · packages/agent/src/gateway/orchestrator-runtime.ts · durableText · e2adc9a3c325
  • aida-agent · packages/agent/src/runtime/execution/run-execution-worker.ts · RunExecutionWorker · e2adc9a3c325
  • aida-agent · packages/agent/src/index.ts · workbenchExecution · e2adc9a3c325
  • aida-agent · packages/agent/src/session/chat-submission-store.ts L378–393 · async admit · e2adc9a3c325
  • aida-agent · packages/agent/src/gateway/chat-routes.ts L381–421 · RUNTIME_EXECUTION_PROTOCOL_UNSUPPORTED · e2adc9a3c325
  • aida-desktop · apps/desktop/electron/agent-loop/register-runtime-work-ipc.ts L254–279 · submitSubmission · 4346d79eb364

结论来自固定版本的静态源码与合同阅读;实现存在、默认开关和生产启用分别判断。

Runtime 提交 wire 与原 Work identity

chat POST 的 Runtime 提交门接受缺省/空值(无 policy)、runtime-work-v1(无 policy),以及 runtime-work-skill-v2 且携带合法 skillExecutionPolicy;其他非空头为 RUNTIME_EXECUTION_PROTOCOL_UNSUPPORTED,头与 policy 不匹配为 RUNTIME_WORK_SKILL_POLICY_MISMATCH,均返回 426。原 Work binding 仍是 runtime-work-v1;取消提交、补充材料等路由单独判定,见协议地图。

证据:提交门 与 实际 chat POST 调用。

机制说明

Runtime:统一 Work 路径与 runtime-v2.1 遗留(tip 对齐)

图:新人默认进 compare(同屏对照:统一 Work(唯一入口)vs runtime-v2.1 遗留 vs 生产切流未核实);main = 统一 Work 提交 + 观察路径。钉点:Agent e2adc9a3c325 · Desktop 8eecd12081db。 先读本机制说明,结论以 NOTES + evidence 为准。

读法:先分「tip 代码」与「部署事实」

身份 tip 代码 chat 入口 生产 / 部署(核实范围) 说明
runtime-work-v1(统一 Work) 有:ChatSubmissionStore.admit → bindAdmittedWork 写 command_envelope、C0 效果位置、original_root_run_id 原 Work 身份;提交 wire 支持 work-v1 与匹配 policy 的 skill-v2(缺省/空值须无 policy) 仅静态源码;未做正式环境巡检 RUNTIME_WORK_PROTOCOL + FILE_WORK_PROFILE
runtime-v2.1 文本切片 遗留:durableText 分支与 Worker prepareText 仅处理存量 v2.1 Run;RUNTIME_EXECUTION_PROTOCOL 常量仍在 已移除:头为 v2.1 → 426 RUNTIME_EXECUTION_PROTOCOL_UNSUPPORTED — Desktop register-runtime-v2-ipc / runtime-v2-core-contract / agent-loop 合同已删除
生产全量切流 — — 未核实 代码收敛不等于部署证明;hostAdmission / RUNTIME_HOST_CONVERGENCE 已删除(见 ATLAS-DEBT)

代码收敛 ≠ 生产启用。 分栏同 write-authority:未核实的部署事实禁止画成已落地。

目录统一

packages/agent/src/runtime-v2/ 已并入 packages/agent/src/runtime/(execution / local / work / continuation…)。主题 id 仍为 runtime-v2-status,叙述以协议身份为准,不以旧目录名为准。

统一 Work 路径(main 图)

  1. Desktop Main 经 RuntimeWorkIpcCoordinator.submitSubmission 提交;同一 Coordinator 负责观察与 Stop 投影(Desktop 91a25b75 / 7470e12e)。
  2. Gateway /api/chat:X-AIDA-Runtime-Protocol 有值且 ≠ runtime-work-v1 → 426 RUNTIME_EXECUTION_PROTOCOL_UNSUPPORTED。
  3. direct(带 agentId)与 routed(无 agentId)提交都经 ChatSubmissionStore.admit 以 runtimeWork 受理(首轮同事务创建 Conversation + Session;钉点 e2adc9a3c325 起 runtimeWork 必填,旧 runtimeExecution 分支与 CHAT_SUBMISSION_PROTOCOL_CONFLICT 已删除,Agent 9a3e49ec1),由 bindAdmittedWork 绑定(Agent 87db143e)。占用检查不再锁已有 root(ADR-0094),并排除后台 root(ADR-0095,见 scaling-roles)。
  4. RunExecutionWorker 在 chat role 装配,从 PostgreSQL 队列领取执行,并经 workbenchExecution 驱动 routed Work。

runtime-v2.1 遗留

durableText(options.runtimeProtocol === RUNTIME_EXECUTION_PROTOCOL)与 Worker 的 prepareText 仍在,只处理存量 v2.1 Run;chat 不再产生新的 v2.1 Run。

未核实

  • 生产是否已全量切到统一 Work 路径。
  • 未承诺自动重发模型 / 工具级恢复。
  • 入口叙事见 enterprise-tour-narrative。

证据与范围

  • aida-agent · packages/tool-client/src/types/runtime-execution.ts · RUNTIME_EXECUTION_PROTOCOL / RUNTIME_WORK_PROTOCOL · e2adc9a3c325
  • aida-agent · packages/agent/src/runtime/work/run-work-admission.ts · bindAdmittedWork · e2adc9a3c325
  • aida-agent · packages/agent/src/gateway/orchestrator-runtime.ts · durableText · e2adc9a3c325
  • aida-agent · packages/agent/src/runtime/execution/run-execution-worker.ts · RunExecutionWorker · e2adc9a3c325
  • aida-agent · packages/agent/src/index.ts · workbenchExecution · e2adc9a3c325
  • aida-agent · packages/agent/src/session/chat-submission-store.ts L378–393 · async admit · e2adc9a3c325
  • aida-agent · packages/agent/src/gateway/chat-routes.ts L381–421 · RUNTIME_EXECUTION_PROTOCOL_UNSUPPORTED · e2adc9a3c325
  • aida-desktop · apps/desktop/electron/agent-loop/register-runtime-work-ipc.ts L254–279 · submitSubmission · 4346d79eb364

结论来自固定版本的静态源码与合同阅读;实现存在、默认开关和生产启用分别判断。

Runtime 提交 wire 与原 Work identity

chat POST 的 Runtime 提交门接受缺省/空值(无 policy)、runtime-work-v1(无 policy),以及 runtime-work-skill-v2 且携带合法 skillExecutionPolicy;其他非空头为 RUNTIME_EXECUTION_PROTOCOL_UNSUPPORTED,头与 policy 不匹配为 RUNTIME_WORK_SKILL_POLICY_MISMATCH,均返回 426。原 Work binding 仍是 runtime-work-v1;取消提交、补充材料等路由单独判定,见协议地图。

证据:提交门 与 实际 chat POST 调用。

代码证据

引用核验检查固定 commit 的文件与范围;实现结论来自代码阅读。自动检查不证明生产环境已启用。

已核验实现

chat 入口已不再受理 runtime-v2.1:/api/chat 的 direct 与 routed 提交统一经 ChatSubmissionStore.admit 以 runtimeWork 受理为 runtime-work-v1;durableText 分支与 Worker 的 prepareText 仅作为 runtime-v2.1 存量 Run 的处理代码保留。

aida-agentpackages/agent/src/gateway/chat-routes.ts:1481–15217f2e519936b57902d4907ed8026fe1ecdd146e82符号:chatSubmissionStore!.admit
aida-agentpackages/agent/src/gateway/chat-routes.ts:1612–16197f2e519936b57902d4907ed8026fe1ecdd146e82符号:runtimeWork
aida-agentpackages/agent/src/gateway/orchestrator-runtime.ts:460–4907f2e519936b57902d4907ed8026fe1ecdd146e82符号:durableText
aida-agentpackages/agent/src/runtime/execution/run-execution-attempt.ts:371–3937f2e519936b57902d4907ed8026fe1ecdd146e82符号:RUNTIME_EXECUTION_PROTOCOL
已核验实现

RunExecutionWorker 从 PostgreSQL 队列领取并持有执行(独立于 HTTP 订阅者),在 chat role 装配并经 workbenchExecution 驱动 routed Work;Desktop 侧由 RuntimeWorkIpcCoordinator 提交并观察 Work。

aida-agentpackages/agent/src/runtime/execution/run-execution-worker.ts:72–737f2e519936b57902d4907ed8026fe1ecdd146e82符号:RunExecutionWorker
aida-agentpackages/agent/src/index.ts:2625–26437f2e519936b57902d4907ed8026fe1ecdd146e82符号:workbenchExecution
aida-desktopapps/desktop/electron/agent-loop/register-runtime-work-ipc.ts:485–5104346d79eb36402355e51118df0edf1f98586880c符号:submitSubmission
已核验实现

执行者失去租约后由 decideOwnerLostRecovery 处置:未产生写入提案/来源写入且未发布回复的轮次回到 pending 重新领取(有次数上限),已写入或超限的转 manual_recovery,不盲目重跑。

aida-agentpackages/agent/src/runtime/execution/run-execution-storage.ts:1009–10257f2e519936b57902d4907ed8026fe1ecdd146e82符号:decideOwnerLostRecovery
aida-agentpackages/agent/src/runtime/execution/run-execution-storage.ts:918–9397f2e519936b57902d4907ed8026fe1ecdd146e82符号:manual_recovery
已核验实现

RUNTIME_WORK_PROTOCOL 与 FILE_WORK_PROFILE 定义原 Work 身份;提交 wire 可以是 work-v1 或 skill-v2,不能把原 Work identity 当作全部 HTTP 路由唯一可接受的头。runtime-v2.1 不是新的 chat 提交入口。

aida-agentpackages/tool-client/src/types/runtime-execution.ts:10–507f2e519936b57902d4907ed8026fe1ecdd146e82符号:RUNTIME_EXECUTION_PROTOCOL
aida-agentpackages/tool-client/src/types/runtime-work-identity.ts:4–137f2e519936b57902d4907ed8026fe1ecdd146e82符号:RUNTIME_WORK_PROTOCOL
aida-agentpackages/tool-client/src/types/runtime-work-identity.ts:18–187f2e519936b57902d4907ed8026fe1ecdd146e82符号:FILE_WORK_PROFILE
aida-agentpackages/agent/src/gateway/chat-work-admission.ts:15–247f2e519936b57902d4907ed8026fe1ecdd146e82符号:runtimeWorkSubmissionProtocol
aida-agentpackages/agent/src/gateway/chat-routes.ts:531–5357f2e519936b57902d4907ed8026fe1ecdd146e82符号:submissionProtocol
已核验实现

tip 已把 chat 提交与观察收敛为统一 Work 路径(Agent 87db143e / Desktop 91a25b75、7470e12e),runtime-v2.1 不再是可选入口;但这只是代码收敛,不等于已核实生产全量切流。

aida-agentpackages/agent/src/gateway/chat-routes.ts:1481–15217f2e519936b57902d4907ed8026fe1ecdd146e82符号:chatSubmissionStore!.admit
aida-agentpackages/agent/src/gateway/chat-work-admission.ts:15–247f2e519936b57902d4907ed8026fe1ecdd146e82符号:runtimeWorkSubmissionProtocol
aida-agentpackages/tool-client/src/types/runtime-work-identity.ts:4–137f2e519936b57902d4907ed8026fe1ecdd146e82符号:RUNTIME_WORK_PROTOCOL
已核验实现

ChatSubmissionStore.admit 是 direct(agentId)与 routed(无 agentId)chat 的共同受理入口:首轮在同一事务内创建 Conversation+Session。runtimeWork 现为必填(9a3e49ec1 删除了已退役的 runtimeExecution / 非 runtimeWork 分支与 CHAT_SUBMISSION_PROTOCOL_CONFLICT),缺 runtimeWork 即 RUNTIME_WORK_PROFILE_UNSUPPORTED;占用检查不再 FOR UPDATE 已有 root(ADR-0094),并排除 background_work.v1 / background 桶。

aida-agentpackages/agent/src/session/chat-submission-store.ts:580–5957f2e519936b57902d4907ed8026fe1ecdd146e82符号:async admit
aida-agentpackages/agent/src/session/chat-submission-store.ts:207–2097f2e519936b57902d4907ed8026fe1ecdd146e82符号:runtimeWork
aida-agentpackages/agent/src/session/chat-submission-store.ts:986–9967f2e519936b57902d4907ed8026fe1ecdd146e82符号:quota_bucket <> 'background'