AIDAWORK / SEQUENCE

成功链:Run lease 持有全程 → 释放

独立图页 ↗

先看「视图」里的主路径;每条失败链都有同名成功对偶(fail-x ↔ ok-x)。

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

整站先看 site-runtime;一条任务人话见 enterprise-tour-narrative。本主题保留完整时序与 fail/ok 对偶,供深挖,不作首页。

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

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

机制说明(全文)

企业任务端到端主路径

整站先看 site-runtime;一条任务人话见 enterprise-tour-narrative。本主题保留完整时序与 fail/ok 对偶,供深挖,不作首页。

一条主路径怎样走完

Desktop Main 经 prepareEnterpriseChatInput 组装 chat 输入并由统一 Work IPC 提交(createEnterpriseAgentLoopStream 已删除)(本机能力广告、可选 Plugin 投影、Local File 附件),POST /api/chat。Gateway createChatRoutes 做校验与会话绑定后,进入 OrchestratorRuntime.resolveAndRun:prepareExecution 不调模型,再 composeDeps 装配本轮 OrchestratorDeps,最后 orchestrate 进入模型循环。

工具分发经 ExecutionHostRouter(advertise / dispatch / reconcile / cancel)落到 Server、Local File、Plugin 或 Local Executor。需要用户输入时由 InteractionKernel.create 挂起;settle 校验 actor / answer 后写结算;continuation 再 resolveAndRun。Run 事实写回 agent_runs / 事件投影,Desktop 只观察与续传,不持有服务端 SoT。

失败 / 重试

  • Router dispatch 对同 callId+bindingDigest 做 singleflight;已有 handle 且 possibly_sent 时先 reconcile,禁止盲重试。
  • 上下文 digest 不一致或 catalog 未解析 → unsupported,不伪造成功。
  • Interaction settle:无记录 → not_found;策略禁行 → forbidden;结构/领域无效 → reject(actor_policy_stale / invalid_answer)。
  • Desktop 断线只影响回执投递;服务端 SoT 与 lease 仍由 Agent 持有(见 state-authority)。

归属边与非目标

  • Owner:Gateway 会话绑定 + OrchestratorRuntime;工具宿主由 ExecutionHostBinding 锁定。
  • 非目标:不在本主题画 Admin 配置面、不展开各宿主内部 OCR/脚本细节(见 local-file-v5 / local-executor / vertical-plugin-mount)。
  • 相关:control-plane、interaction-lifecycle、ledger-authority、state-authority、cold-paths、vertical-plugin-mount。

视图

  • main — 主路径时序(受理 → 模型/工具 → 交互与账本)。

  • tool-branch — LF / Plugin / LE 分叉 + Interaction settle/resume。

  • fail-host — 工具宿主 fail/timeout(Interaction 前)。

  • fail-ix — Interaction 取消/过期/结算失败 → resume 分叉。

  • fail-lease-mid — Run lease 中途丢失与 singleflight 冲突。

  • ok-host — 工具宿主成功完成(对偶 fail-host)。

  • ok-ix — Interaction settle→resume(对偶 fail-ix)。

  • ok-lease-mid — lease 持有全程并释放(对偶 fail-lease-mid)。

成功对偶(与失败链入口相同)

  1. ok-host:dispatch → kind=completed → delivery=completed + terminalResult → Desktop SSE 成功。
  2. ok-ix:合法 settle → accepted+resolved → resume event → continuation。
  3. ok-lease-mid:acquireLease → renewLease → 工具完成 → releaseLease。

失败链(深挖)

  1. fail-host:dispatchSingleflight catch → possibly_sent|not_sent;host_unavailable / reconcile_needed;禁盲重试;IX 未创建。
  2. fail-ix:expireDue / requestTaskCancellation / settle → terminal;not_found|forbidden|rejected;仅 accepted+resolved 带 resume。
  3. fail-lease-mid:RUN_LEASE_LOST / RUN_LEASE_BUSY;同 callId inflight → reconcile。

路由决策归分类器(ADR-0092,钉点 e2adc9a3c325)

  • 选能力(primaryCapabilityId 与 high 候选)只能来自分类器的结构化理解,或经过校验的结构化状态(UI 显式选择、已接受的澄清、自有待办等);分类之后的确定性阶段只能否决、收窄或补参数,不得改 primary、加候选、提置信度或绕过分类器。续接改由分类器读结构化状态判断;常态一次分类、最多一次登记过的补充判断,失败返回可重试错误;评测原句不得进生产代码,评测拆 dev / holdout。

  • 状态 Accepted;本钉点完成 knowledge/workforce/analytics、recruit、vms 迁移与跨族规则清零(STA-92 迁移 4/4)。续接统一读主分类 continuation_relation(prepareRouteContinuation / applyRouteContinuation);ADR 点名措辞续接函数已从 routing 删除;router.ts 拆为 routing/router/*。遗留 utteranceRefersBack 仅服务 child Decision(不在本 ADR)。见视图 route-continuation。

  • 证据:aida-agent · docs/adr/0092-routing-decision-belongs-to-the-classifier.md L22–47 · 选能力的只有两类来源 · e2adc9a3c325;aida-agent · packages/agent/src/routing/router.ts L1–39 · prepareRouteContinuation · e2adc9a3c325;aida-agent · packages/agent/src/routing/router/continuation.ts L34–53 · applyRouteContinuation · e2adc9a3c325

  • 本轮补记:措辞续接已退役;续接只保留分类器 continuation_relation 一处。

  • 逐提交判定(d4f252c559a8..e2adc9a3c325,19 个 routing / llm-classifier 修复):没有一处用用户原文的正则或短语设定 primary、注入候选、抬高置信度或替代分类器。新增的确定性代码只做否决 / 收窄 / 补参数,或只决定要不要花一次语义复核:candidate-query-reference 只在分类器已选 recruit.query 且有本轮目标证据时从工作焦点补 applicationId(bf42be8d7);personal_skill 由分类器判定,router 只去掉文件目标(28a6ec920);next_step_guidance 只在证据逐字来自本轮、目标与分类器一致时放行,否则只澄清(e76845124);scoped my_work 要经已登记的 business_request_check 复读,复读认定是业务请求时交回业务路由(f5222c010);1d07cf06a / efd2255b4 把 HR 档案等垂直触发条件搬进 classifier-review-contracts,行为不变。证据:aida-agent · packages/agent/src/routing/verticals/candidate-query-reference.ts L19–41 · prepareCandidateQueryReference · e2adc9a3c325;aida-agent · packages/agent/src/routing/router.ts L2124–2128 · personalSkillManagement · e2adc9a3c325;aida-agent · packages/agent/src/routing/meta-intent.ts L157–181 · nextStepGuidanceNeedsClarification · e2adc9a3c325;aida-agent · packages/agent/src/routing/router.ts L1521–1566 · scopedMyWorkReread · e2adc9a3c325;aida-agent · packages/agent/src/routing/verticals/classifier-review-contracts.ts L93–115 · needsInvalidSourceReadReview · e2adc9a3c325

  • 第 4 条灰区(需 ADR owner 判断):① 3791ee5f4 在主分类内部加了 reviewAllFileTargets,多一次语义调用,只能清空 fileTargetIds,不在 RouteLlmPass 登记表里,计量算在主分类下;② b9ce82c11 对考勤填报缺日期 / 工时的写入,借已登记的 missing_input_reread 通道改跑目标复核,结果可改 primary(与补参数是 if / else,不多花调用,但通道名与用途不符);③ nextStepGuideActions 在只缺 vms.employee_lifecycle 时固定推荐已授权的 HR 只读能力作快捷入口,不改 primary。证据:aida-agent · packages/agent/src/routing/llm-classifier.ts L152–166 · reviewAllFileTargets · e2adc9a3c325;aida-agent · packages/agent/src/routing/router.ts L395–411 · RouteLlmPass · e2adc9a3c325;aida-agent · packages/agent/src/routing/router.ts L1977–1999 · missing_input_reread · e2adc9a3c325;aida-agent · packages/agent/src/routing/verticals/guide-domain-labels.ts L9–15 · nextStepGuideActions · e2adc9a3c325

reply_user:执行中途对用户说话(钉点 e2adc9a3c325)

  • 新增内部工具 reply_user({ text, kind })(kind 为 progress / answer):前台轮次中途给当前用户发一条助手消息。消息 id 由 run + toolCallId 派生,重试不会多发;入参先过长度上限(2000 字)、内部标识脱敏和数字溯源,不通过就什么都不写,让模型重写。
  • 默认关:只有 agent 级 contextPolicy.replyUserEnabled = true 才挂载;旁路查询、子 run、后台 run 不挂载。是否有 agent 在用未核实。
  • 发布成功后发 reply_user_message 事件进 run 事件流;chat SSE ledger 视为关键事件立即落账、可补读,不并进 response 正文。Desktop 侧展示见 desktop-client。

证据与范围

  • aida-desktop · apps/desktop/electron/agent-loop/enterprise-adapter.ts L65–123 · prepareEnterpriseChatInput · 4346d79eb364

  • aida-agent · packages/agent/src/gateway/chat-routes.ts L255–266 · createChatRoutes · e2adc9a3c325

  • aida-agent · packages/agent/src/gateway/orchestrator-runtime.ts L372–379 · resolveAndRun · e2adc9a3c325

  • aida-agent · packages/agent/src/gateway/orchestrator-runtime.ts L283–313 · composeDeps · e2adc9a3c325

  • aida-agent · packages/agent/src/execution-host/router.ts L50–80 · ExecutionHostRouter · e2adc9a3c325

  • aida-agent · packages/agent/src/execution-host/router.ts L95–125 · dispatch · e2adc9a3c325

  • aida-agent · packages/agent/src/interaction-kernel/kernel.ts L226–258 · InteractionKernel · e2adc9a3c325

  • aida-agent · packages/agent/src/interaction-kernel/kernel.ts L776–811 · settle · e2adc9a3c325

  • aida-agent · packages/agent/src/execution-host/router.ts L129–159 · dispatchSingleflight · e2adc9a3c325

  • aida-agent · packages/agent/src/execution-host/host-support.ts L41–53 · unavailableExecution · e2adc9a3c325

  • aida-agent · packages/agent/src/interaction-kernel/kernel.ts L600–634 · requestTaskCancellation/expireDue · e2adc9a3c325

  • aida-agent · packages/agent/src/gateway/unified-entry.ts L2660–2682 · RUN_LEASE_LOST · e2adc9a3c325

  • aida-agent · packages/agent/src/gateway/unified-entry.ts L1948–1978 · RUN_LEASE_BUSY · e2adc9a3c325

  • aida-agent · packages/agent/src/execution-host/router.ts L129–159 · dispatchSingleflight · e2adc9a3c325

  • aida-agent · packages/agent/src/interaction-kernel/kernel.ts L587–617 · buildInteractionResumeEvent · e2adc9a3c325

  • aida-agent · packages/agent/src/session/run-store.ts L693–728 · renewLease/releaseLease · e2adc9a3c325

结论来自固定版本的静态源码与合同阅读;实现存在、默认开关和生产启用分别判断。本站代码证据面板列出声明状态与具体限制。

  • aida-agent · packages/agent/src/orchestrator/reply-user.ts L1–16 · replyUserEnabled · e2adc9a3c325
  • aida-agent · packages/agent/src/gateway/orchestrator-runtime.ts L302–305 · replyUserEnabled · e2adc9a3c325
  • aida-agent · packages/agent/src/shared/types.ts L147–156 · reply_user_message · e2adc9a3c325
  • aida-agent · packages/agent/src/runtime/stream/chat-sse-ledger.ts L107–115 · reply_user_message · e2adc9a3c325

ADR-0097 / 0098(钉点 e2adc9a3c325)

  • ADR-0097(Proposed):非 VMS / 零业务订购租户的统一入口只识别已订购产品。D1-2a 已合入:listCapabilitiesForTenant(..., { forRouting: true }) 在 hasVerifiedNoBusinessScope 时跳过 Pack 装配,只保留本地与 Plugin 候选(unified-entry fresh 目录同此)。D1-2b(未开通呈现)与 D2(显式 none Pack 选择)暂缓。

  • ADR-0098(方向 Accepted / 实施待批):待办卡可回访、确认时重校验;取代「等待卡锁死前台、其它请求只能旁路」模型。STA-193 止血已合入(只读旁问优先;未接入回访合同的等待前台 Root 仍按既有 supersede 规则收口,不是新增 parked 归属);其余 DDL、队列与生产者接入须另批。视图 entitled-local-catalog 只画 D1-2a 已合入路径。

  • 产品口径旁挂:MSP ≠ 单纯多租户;entitled-local-catalog 现状卡片「桌面本机」仅指本机路径(在线企业交付),勿读成 MSP 定义。产品叙事见 product-narrative(2026-10-29)。

Agent 最新增量:条件产物(2026-10-29)

条件产物目标先在受理时冻结,再由原 Plugin 请求/回执与文件读取事实证明,完成前复核;本次不满足导出条件时应说明未导出,而非捏造 Artifact。另一个独立变化是已选 Skill 的非文件目标:只有原目标没有文件意图、独立目标复核的 action/object 与原判断一致时才能接受,不得把原文件目标偷偷改成非文件。

  • aida-agent · packages/agent/src/gateway/workbench-route-preparation.ts L118–125 · 7f2e519936b5
  • aida-agent · packages/agent/src/routing/classifier-current-target-review.ts L42–69 · 7f2e519936b5

故障与恢复矩阵:先找原 owner,再决定能否重试

固定源码:Agent 7f2e519936b53035646a70f152e734298abed2fb;Desktop 4346d79eb364b502ef87c0869a494dfed7964419。这是静态代码核验后的排障指南,不是故障注入或生产恢复验收。表中「安全下一步」是操作建议;实现事实通过同行证据链接定位。

先分清三个“重试”

  1. 查原提交 / 原效果:只读取事实,不产生替代 command。
  2. 重送原回执:复用 operationId、requestDigest 与原结果,不等于重新执行写入。
  3. 重做物理效果:可能重复发邮件、写文件或调用业务系统;unknown 不能授权这一步。

Run、Interaction、Work command、LF operation、Desktop journal 各有 owner;没有一份贯穿所有对象的统一事件日志。状态权威与账本解释 SoT;Desktop D02/D05/D08已有对应图,本页不再复制。

故障矩阵

场景 / 所处边界 Owner 留存事实 / 持久性边界 安全下一步 禁止的重试 诊断与固定源码
网络中断:提交已跨发送屏障,ACK 未知 Main RuntimeWorkDelivery;受理事实仍由 Agent 决定 原 command、冻结 body/digest、scope;保留的 sending 记录恢复为 unknown 在同一身份下 query 原提交,验证原 Message 与 binding;错误时保留未知状态 新造 clientRequestId 重发;把 404/not_started 当“原效果没发生” RUNTIME_WORK_BINDING_MISMATCH;首次发送屏障、原提交查询
Desktop 崩溃 / 重启 Main delivery store;Agent 继续持有服务端事实 Store 先改内存,异步 best-effort 加密发布;磁盘记录可能缺失。保有记录才有 sending→unknown 恢复原 scope 的记录;缺失时只查认证历史,不能靠 UI 重建执行权限 声称跨崩溃 exactly-once;按聊天气泡重新执行原任务 存储保证边界、恢复转换、无本地 body 的只读历史接口
Agent worker 崩溃 / lease 过期 Agent 对应 Run owner;不是 Desktop observer agent_runs 状态/lease,以及受保护的 durable local-read、Interaction 事实 由对应 owner 的恢复路径处理;legacy recoverExpiredLeaseByConversation 先保护读与交互,不当成所有 Work 的统一领取器 Desktop 写回 Run 终态;绕过 lease 启动第二个执行者 legacy 会话恢复入口;范围对照账本
LF 物理写完成,但回执 / ACK 丢失 Main 文件事实与结果;Agent operation 接收回执 原 operationId/requestDigest、写结果、responseDigest;receipt ACK 与写入成功是两件事 queryPending→原 executor 恢复结果→重送同一回执;收到 ACK 后标记 delivered 把重送回执变成再一次写盘;回执失败就报告文件没写 LOCAL_FILE_DELIVERY_UNCONFIRMED;pending 恢复、发送与 delivered 标记
写入中崩溃,结果 unknown Main 写记录 owner 原 owner identity、root identity、action intent、物理前后事实;同内容同 inode 未必证明写入提交,mkdir 存在也不证明谁创建 只读核对原后置条件;证据不足仍返回 null/unknown,交原 owner 处理 自动 replay mutation;以文件存在或模型成功文本补造 applied 只读 reconcileWriteFacts
权限撤销 / 目录失效 Main authorized-folder authority 与执行器 revoke tombstone;原 folder/root identity;撤销不抹掉已发生的效果 中止相关 inflight;requireActive 重验;先核实已有结果,再让用户明确选择新的授权范围 自动重新授权旧 folder;把安装信任当文件权限;把 abort 当物理回滚 AUTHORIZED_FOLDER_REVOKED / AUTHORIZED_FOLDER_INVALID;撤销记录、检查、中止
Host 派发后网络错误 / possibly_sent Agent ExecutionHostRouter + 原 host handle 的 binding/context/request digests、delivery、terminalResult;进程内 singleflight 不是全局事务 已完成返回原 terminalResult;possibly_sent 先 reconcile;摘要不符 unsupported 换宿主、换 digest 或新 callId 绕过不确定性 handle 与 reconcile 分流;宿主细节见主路径
用户 Stop,原提交尚未确认 / Stop ACK 未知 Main Stop delivery;Agent 原 Work 控制 owner 独立 stopCommandId/sourceRef;原 rootRunId 一次绑定;不是观察窗口生命周期 unresolved 先查询原提交;只有 prepared 且未跨发送屏障可首次发送;unknown 只 queryStop 停“当前最新任务”代替原 root;重复发送未知 Stop;关窗口等同 Stop;承诺回滚已提交效果 RUNTIME_WORK_STOP_TARGET_CONFLICT;绑定与首次发送、未知 Stop 核对
切账号 / 切 endpoint / executor generation 改变 Main 当前身份与资源授权 owner scopeDigest、原 identity、requestDigest、executor instance;冻结的是意图而不是可复用旧 token 停止旧 scope 操作;用当前凭据重新核对同一身份,不能跨账号取旧结果;无法恢复原身份则保持阻断 用新账号重放旧 command;缓存 token 绕过当前身份校验;改 scope 接管历史效果 RUNTIME_WORK_IDENTITY_CHANGED / CLIENT_RESOURCE_IDENTITY_CHANGED;transport 合同、安装能力身份检查

排障记录与停止条件

  • 留存错误码和原 command / run / operation 标识、request/response digest、执行实例与阶段;不要把原生绝对路径、凭据或冻结 body 贴进工单。LF 诊断字段提供定位维度。
  • 恢复完成必须由原 owner 的可验证事实证明:原受理绑定、原回执接受或原 Work 控制结果。accepted 不等于业务完成;Stop 接受不等于物理副作用撤销。
  • 只查到 unknown、权限失效、身份不符、证据不足时,停止自动物理重试并明确记录阻断;等待原 owner/用户补证,不猜成功也不猜失败。
  • 本页没有证明所有终端/平台的落盘、断电、真实网络和撤权竞态都通过。可执行验收入口见开发与验收导航;协议阻断先查跨仓协议地图。

机制说明

企业任务端到端主路径

整站先看 site-runtime;一条任务人话见 enterprise-tour-narrative。本主题保留完整时序与 fail/ok 对偶,供深挖,不作首页。

一条主路径怎样走完

Desktop Main 经 prepareEnterpriseChatInput 组装 chat 输入并由统一 Work IPC 提交(createEnterpriseAgentLoopStream 已删除)(本机能力广告、可选 Plugin 投影、Local File 附件),POST /api/chat。Gateway createChatRoutes 做校验与会话绑定后,进入 OrchestratorRuntime.resolveAndRun:prepareExecution 不调模型,再 composeDeps 装配本轮 OrchestratorDeps,最后 orchestrate 进入模型循环。

工具分发经 ExecutionHostRouter(advertise / dispatch / reconcile / cancel)落到 Server、Local File、Plugin 或 Local Executor。需要用户输入时由 InteractionKernel.create 挂起;settle 校验 actor / answer 后写结算;continuation 再 resolveAndRun。Run 事实写回 agent_runs / 事件投影,Desktop 只观察与续传,不持有服务端 SoT。

失败 / 重试

  • Router dispatch 对同 callId+bindingDigest 做 singleflight;已有 handle 且 possibly_sent 时先 reconcile,禁止盲重试。
  • 上下文 digest 不一致或 catalog 未解析 → unsupported,不伪造成功。
  • Interaction settle:无记录 → not_found;策略禁行 → forbidden;结构/领域无效 → reject(actor_policy_stale / invalid_answer)。
  • Desktop 断线只影响回执投递;服务端 SoT 与 lease 仍由 Agent 持有(见 state-authority)。

归属边与非目标

  • Owner:Gateway 会话绑定 + OrchestratorRuntime;工具宿主由 ExecutionHostBinding 锁定。
  • 非目标:不在本主题画 Admin 配置面、不展开各宿主内部 OCR/脚本细节(见 local-file-v5 / local-executor / vertical-plugin-mount)。
  • 相关:control-plane、interaction-lifecycle、ledger-authority、state-authority、cold-paths、vertical-plugin-mount。

视图

  • main — 主路径时序(受理 → 模型/工具 → 交互与账本)。

  • tool-branch — LF / Plugin / LE 分叉 + Interaction settle/resume。

  • fail-host — 工具宿主 fail/timeout(Interaction 前)。

  • fail-ix — Interaction 取消/过期/结算失败 → resume 分叉。

  • fail-lease-mid — Run lease 中途丢失与 singleflight 冲突。

  • ok-host — 工具宿主成功完成(对偶 fail-host)。

  • ok-ix — Interaction settle→resume(对偶 fail-ix)。

  • ok-lease-mid — lease 持有全程并释放(对偶 fail-lease-mid)。

成功对偶(与失败链入口相同)

  1. ok-host:dispatch → kind=completed → delivery=completed + terminalResult → Desktop SSE 成功。
  2. ok-ix:合法 settle → accepted+resolved → resume event → continuation。
  3. ok-lease-mid:acquireLease → renewLease → 工具完成 → releaseLease。

失败链(深挖)

  1. fail-host:dispatchSingleflight catch → possibly_sent|not_sent;host_unavailable / reconcile_needed;禁盲重试;IX 未创建。
  2. fail-ix:expireDue / requestTaskCancellation / settle → terminal;not_found|forbidden|rejected;仅 accepted+resolved 带 resume。
  3. fail-lease-mid:RUN_LEASE_LOST / RUN_LEASE_BUSY;同 callId inflight → reconcile。

路由决策归分类器(ADR-0092,钉点 e2adc9a3c325)

  • 选能力(primaryCapabilityId 与 high 候选)只能来自分类器的结构化理解,或经过校验的结构化状态(UI 显式选择、已接受的澄清、自有待办等);分类之后的确定性阶段只能否决、收窄或补参数,不得改 primary、加候选、提置信度或绕过分类器。续接改由分类器读结构化状态判断;常态一次分类、最多一次登记过的补充判断,失败返回可重试错误;评测原句不得进生产代码,评测拆 dev / holdout。

  • 状态 Accepted;本钉点完成 knowledge/workforce/analytics、recruit、vms 迁移与跨族规则清零(STA-92 迁移 4/4)。续接统一读主分类 continuation_relation(prepareRouteContinuation / applyRouteContinuation);ADR 点名措辞续接函数已从 routing 删除;router.ts 拆为 routing/router/*。遗留 utteranceRefersBack 仅服务 child Decision(不在本 ADR)。见视图 route-continuation。

  • 证据:aida-agent · docs/adr/0092-routing-decision-belongs-to-the-classifier.md L22–47 · 选能力的只有两类来源 · e2adc9a3c325;aida-agent · packages/agent/src/routing/router.ts L1–39 · prepareRouteContinuation · e2adc9a3c325;aida-agent · packages/agent/src/routing/router/continuation.ts L34–53 · applyRouteContinuation · e2adc9a3c325

  • 本轮补记:措辞续接已退役;续接只保留分类器 continuation_relation 一处。

  • 逐提交判定(d4f252c559a8..e2adc9a3c325,19 个 routing / llm-classifier 修复):没有一处用用户原文的正则或短语设定 primary、注入候选、抬高置信度或替代分类器。新增的确定性代码只做否决 / 收窄 / 补参数,或只决定要不要花一次语义复核:candidate-query-reference 只在分类器已选 recruit.query 且有本轮目标证据时从工作焦点补 applicationId(bf42be8d7);personal_skill 由分类器判定,router 只去掉文件目标(28a6ec920);next_step_guidance 只在证据逐字来自本轮、目标与分类器一致时放行,否则只澄清(e76845124);scoped my_work 要经已登记的 business_request_check 复读,复读认定是业务请求时交回业务路由(f5222c010);1d07cf06a / efd2255b4 把 HR 档案等垂直触发条件搬进 classifier-review-contracts,行为不变。证据:aida-agent · packages/agent/src/routing/verticals/candidate-query-reference.ts L19–41 · prepareCandidateQueryReference · e2adc9a3c325;aida-agent · packages/agent/src/routing/router.ts L2124–2128 · personalSkillManagement · e2adc9a3c325;aida-agent · packages/agent/src/routing/meta-intent.ts L157–181 · nextStepGuidanceNeedsClarification · e2adc9a3c325;aida-agent · packages/agent/src/routing/router.ts L1521–1566 · scopedMyWorkReread · e2adc9a3c325;aida-agent · packages/agent/src/routing/verticals/classifier-review-contracts.ts L93–115 · needsInvalidSourceReadReview · e2adc9a3c325

  • 第 4 条灰区(需 ADR owner 判断):① 3791ee5f4 在主分类内部加了 reviewAllFileTargets,多一次语义调用,只能清空 fileTargetIds,不在 RouteLlmPass 登记表里,计量算在主分类下;② b9ce82c11 对考勤填报缺日期 / 工时的写入,借已登记的 missing_input_reread 通道改跑目标复核,结果可改 primary(与补参数是 if / else,不多花调用,但通道名与用途不符);③ nextStepGuideActions 在只缺 vms.employee_lifecycle 时固定推荐已授权的 HR 只读能力作快捷入口,不改 primary。证据:aida-agent · packages/agent/src/routing/llm-classifier.ts L152–166 · reviewAllFileTargets · e2adc9a3c325;aida-agent · packages/agent/src/routing/router.ts L395–411 · RouteLlmPass · e2adc9a3c325;aida-agent · packages/agent/src/routing/router.ts L1977–1999 · missing_input_reread · e2adc9a3c325;aida-agent · packages/agent/src/routing/verticals/guide-domain-labels.ts L9–15 · nextStepGuideActions · e2adc9a3c325

reply_user:执行中途对用户说话(钉点 e2adc9a3c325)

  • 新增内部工具 reply_user({ text, kind })(kind 为 progress / answer):前台轮次中途给当前用户发一条助手消息。消息 id 由 run + toolCallId 派生,重试不会多发;入参先过长度上限(2000 字)、内部标识脱敏和数字溯源,不通过就什么都不写,让模型重写。
  • 默认关:只有 agent 级 contextPolicy.replyUserEnabled = true 才挂载;旁路查询、子 run、后台 run 不挂载。是否有 agent 在用未核实。
  • 发布成功后发 reply_user_message 事件进 run 事件流;chat SSE ledger 视为关键事件立即落账、可补读,不并进 response 正文。Desktop 侧展示见 desktop-client。

证据与范围

  • aida-desktop · apps/desktop/electron/agent-loop/enterprise-adapter.ts L65–123 · prepareEnterpriseChatInput · 4346d79eb364

  • aida-agent · packages/agent/src/gateway/chat-routes.ts L255–266 · createChatRoutes · e2adc9a3c325

  • aida-agent · packages/agent/src/gateway/orchestrator-runtime.ts L372–379 · resolveAndRun · e2adc9a3c325

  • aida-agent · packages/agent/src/gateway/orchestrator-runtime.ts L283–313 · composeDeps · e2adc9a3c325

  • aida-agent · packages/agent/src/execution-host/router.ts L50–80 · ExecutionHostRouter · e2adc9a3c325

  • aida-agent · packages/agent/src/execution-host/router.ts L95–125 · dispatch · e2adc9a3c325

  • aida-agent · packages/agent/src/interaction-kernel/kernel.ts L226–258 · InteractionKernel · e2adc9a3c325

  • aida-agent · packages/agent/src/interaction-kernel/kernel.ts L776–811 · settle · e2adc9a3c325

  • aida-agent · packages/agent/src/execution-host/router.ts L129–159 · dispatchSingleflight · e2adc9a3c325

  • aida-agent · packages/agent/src/execution-host/host-support.ts L41–53 · unavailableExecution · e2adc9a3c325

  • aida-agent · packages/agent/src/interaction-kernel/kernel.ts L600–634 · requestTaskCancellation/expireDue · e2adc9a3c325

  • aida-agent · packages/agent/src/gateway/unified-entry.ts L2660–2682 · RUN_LEASE_LOST · e2adc9a3c325

  • aida-agent · packages/agent/src/gateway/unified-entry.ts L1948–1978 · RUN_LEASE_BUSY · e2adc9a3c325

  • aida-agent · packages/agent/src/execution-host/router.ts L129–159 · dispatchSingleflight · e2adc9a3c325

  • aida-agent · packages/agent/src/interaction-kernel/kernel.ts L587–617 · buildInteractionResumeEvent · e2adc9a3c325

  • aida-agent · packages/agent/src/session/run-store.ts L693–728 · renewLease/releaseLease · e2adc9a3c325

结论来自固定版本的静态源码与合同阅读;实现存在、默认开关和生产启用分别判断。本站代码证据面板列出声明状态与具体限制。

  • aida-agent · packages/agent/src/orchestrator/reply-user.ts L1–16 · replyUserEnabled · e2adc9a3c325
  • aida-agent · packages/agent/src/gateway/orchestrator-runtime.ts L302–305 · replyUserEnabled · e2adc9a3c325
  • aida-agent · packages/agent/src/shared/types.ts L147–156 · reply_user_message · e2adc9a3c325
  • aida-agent · packages/agent/src/runtime/stream/chat-sse-ledger.ts L107–115 · reply_user_message · e2adc9a3c325

ADR-0097 / 0098(钉点 e2adc9a3c325)

  • ADR-0097(Proposed):非 VMS / 零业务订购租户的统一入口只识别已订购产品。D1-2a 已合入:listCapabilitiesForTenant(..., { forRouting: true }) 在 hasVerifiedNoBusinessScope 时跳过 Pack 装配,只保留本地与 Plugin 候选(unified-entry fresh 目录同此)。D1-2b(未开通呈现)与 D2(显式 none Pack 选择)暂缓。

  • ADR-0098(方向 Accepted / 实施待批):待办卡可回访、确认时重校验;取代「等待卡锁死前台、其它请求只能旁路」模型。STA-193 止血已合入(只读旁问优先;未接入回访合同的等待前台 Root 仍按既有 supersede 规则收口,不是新增 parked 归属);其余 DDL、队列与生产者接入须另批。视图 entitled-local-catalog 只画 D1-2a 已合入路径。

  • 产品口径旁挂:MSP ≠ 单纯多租户;entitled-local-catalog 现状卡片「桌面本机」仅指本机路径(在线企业交付),勿读成 MSP 定义。产品叙事见 product-narrative(2026-10-29)。

Agent 最新增量:条件产物(2026-10-29)

条件产物目标先在受理时冻结,再由原 Plugin 请求/回执与文件读取事实证明,完成前复核;本次不满足导出条件时应说明未导出,而非捏造 Artifact。另一个独立变化是已选 Skill 的非文件目标:只有原目标没有文件意图、独立目标复核的 action/object 与原判断一致时才能接受,不得把原文件目标偷偷改成非文件。

  • aida-agent · packages/agent/src/gateway/workbench-route-preparation.ts L118–125 · 7f2e519936b5
  • aida-agent · packages/agent/src/routing/classifier-current-target-review.ts L42–69 · 7f2e519936b5

故障与恢复矩阵:先找原 owner,再决定能否重试

固定源码:Agent 7f2e519936b53035646a70f152e734298abed2fb;Desktop 4346d79eb364b502ef87c0869a494dfed7964419。这是静态代码核验后的排障指南,不是故障注入或生产恢复验收。表中「安全下一步」是操作建议;实现事实通过同行证据链接定位。

先分清三个“重试”

  1. 查原提交 / 原效果:只读取事实,不产生替代 command。
  2. 重送原回执:复用 operationId、requestDigest 与原结果,不等于重新执行写入。
  3. 重做物理效果:可能重复发邮件、写文件或调用业务系统;unknown 不能授权这一步。

Run、Interaction、Work command、LF operation、Desktop journal 各有 owner;没有一份贯穿所有对象的统一事件日志。状态权威与账本解释 SoT;Desktop D02/D05/D08已有对应图,本页不再复制。

故障矩阵

场景 / 所处边界 Owner 留存事实 / 持久性边界 安全下一步 禁止的重试 诊断与固定源码
网络中断:提交已跨发送屏障,ACK 未知 Main RuntimeWorkDelivery;受理事实仍由 Agent 决定 原 command、冻结 body/digest、scope;保留的 sending 记录恢复为 unknown 在同一身份下 query 原提交,验证原 Message 与 binding;错误时保留未知状态 新造 clientRequestId 重发;把 404/not_started 当“原效果没发生” RUNTIME_WORK_BINDING_MISMATCH;首次发送屏障、原提交查询
Desktop 崩溃 / 重启 Main delivery store;Agent 继续持有服务端事实 Store 先改内存,异步 best-effort 加密发布;磁盘记录可能缺失。保有记录才有 sending→unknown 恢复原 scope 的记录;缺失时只查认证历史,不能靠 UI 重建执行权限 声称跨崩溃 exactly-once;按聊天气泡重新执行原任务 存储保证边界、恢复转换、无本地 body 的只读历史接口
Agent worker 崩溃 / lease 过期 Agent 对应 Run owner;不是 Desktop observer agent_runs 状态/lease,以及受保护的 durable local-read、Interaction 事实 由对应 owner 的恢复路径处理;legacy recoverExpiredLeaseByConversation 先保护读与交互,不当成所有 Work 的统一领取器 Desktop 写回 Run 终态;绕过 lease 启动第二个执行者 legacy 会话恢复入口;范围对照账本
LF 物理写完成,但回执 / ACK 丢失 Main 文件事实与结果;Agent operation 接收回执 原 operationId/requestDigest、写结果、responseDigest;receipt ACK 与写入成功是两件事 queryPending→原 executor 恢复结果→重送同一回执;收到 ACK 后标记 delivered 把重送回执变成再一次写盘;回执失败就报告文件没写 LOCAL_FILE_DELIVERY_UNCONFIRMED;pending 恢复、发送与 delivered 标记
写入中崩溃,结果 unknown Main 写记录 owner 原 owner identity、root identity、action intent、物理前后事实;同内容同 inode 未必证明写入提交,mkdir 存在也不证明谁创建 只读核对原后置条件;证据不足仍返回 null/unknown,交原 owner 处理 自动 replay mutation;以文件存在或模型成功文本补造 applied 只读 reconcileWriteFacts
权限撤销 / 目录失效 Main authorized-folder authority 与执行器 revoke tombstone;原 folder/root identity;撤销不抹掉已发生的效果 中止相关 inflight;requireActive 重验;先核实已有结果,再让用户明确选择新的授权范围 自动重新授权旧 folder;把安装信任当文件权限;把 abort 当物理回滚 AUTHORIZED_FOLDER_REVOKED / AUTHORIZED_FOLDER_INVALID;撤销记录、检查、中止
Host 派发后网络错误 / possibly_sent Agent ExecutionHostRouter + 原 host handle 的 binding/context/request digests、delivery、terminalResult;进程内 singleflight 不是全局事务 已完成返回原 terminalResult;possibly_sent 先 reconcile;摘要不符 unsupported 换宿主、换 digest 或新 callId 绕过不确定性 handle 与 reconcile 分流;宿主细节见主路径
用户 Stop,原提交尚未确认 / Stop ACK 未知 Main Stop delivery;Agent 原 Work 控制 owner 独立 stopCommandId/sourceRef;原 rootRunId 一次绑定;不是观察窗口生命周期 unresolved 先查询原提交;只有 prepared 且未跨发送屏障可首次发送;unknown 只 queryStop 停“当前最新任务”代替原 root;重复发送未知 Stop;关窗口等同 Stop;承诺回滚已提交效果 RUNTIME_WORK_STOP_TARGET_CONFLICT;绑定与首次发送、未知 Stop 核对
切账号 / 切 endpoint / executor generation 改变 Main 当前身份与资源授权 owner scopeDigest、原 identity、requestDigest、executor instance;冻结的是意图而不是可复用旧 token 停止旧 scope 操作;用当前凭据重新核对同一身份,不能跨账号取旧结果;无法恢复原身份则保持阻断 用新账号重放旧 command;缓存 token 绕过当前身份校验;改 scope 接管历史效果 RUNTIME_WORK_IDENTITY_CHANGED / CLIENT_RESOURCE_IDENTITY_CHANGED;transport 合同、安装能力身份检查

排障记录与停止条件

  • 留存错误码和原 command / run / operation 标识、request/response digest、执行实例与阶段;不要把原生绝对路径、凭据或冻结 body 贴进工单。LF 诊断字段提供定位维度。
  • 恢复完成必须由原 owner 的可验证事实证明:原受理绑定、原回执接受或原 Work 控制结果。accepted 不等于业务完成;Stop 接受不等于物理副作用撤销。
  • 只查到 unknown、权限失效、身份不符、证据不足时,停止自动物理重试并明确记录阻断;等待原 owner/用户补证,不猜成功也不猜失败。
  • 本页没有证明所有终端/平台的落盘、断电、真实网络和撤权竞态都通过。可执行验收入口见开发与验收导航;协议阻断先查跨仓协议地图。

代码证据

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

已核验实现

Desktop Main 经 prepareEnterpriseChatInput 组装企业 chat 输入(附 Plugin 投影与 Local File 能力),由统一 Work IPC 提交到 Agent;createEnterpriseAgentLoopStream 已删除。

aida-desktopapps/desktop/electron/agent-loop/enterprise-adapter.ts:119–1774346d79eb36402355e51118df0edf1f98586880c符号:prepareEnterpriseChatInput
aida-desktopapps/desktop/electron/agent-loop/register-runtime-work-ipc.ts:485–5104346d79eb36402355e51118df0edf1f98586880c符号:submitSubmission
已核验实现

Gateway createChatRoutes 挂载 /api/chat,负责校验、会话与 SSE;执行入口是 OrchestratorRuntime.resolveAndRun → prepareExecution → composeDeps → orchestrate。

aida-agentpackages/agent/src/gateway/chat-routes.ts:188–2187f2e519936b57902d4907ed8026fe1ecdd146e82符号:createChatRoutes
aida-agentpackages/agent/src/gateway/orchestrator-runtime.ts:411–4397f2e519936b57902d4907ed8026fe1ecdd146e82符号:resolveAndRun
aida-agentpackages/agent/src/gateway/orchestrator-runtime.ts:320–3507f2e519936b57902d4907ed8026fe1ecdd146e82符号:composeDeps
已核验实现

工具执行经 ExecutionHostRouter 的 advertise/dispatch/reconcile/cancel;用户输入生命周期由 InteractionKernel 持有,不是 Desktop 本地草稿。

aida-agentpackages/agent/src/execution-host/router.ts:50–807f2e519936b57902d4907ed8026fe1ecdd146e82符号:ExecutionHostRouter
aida-agentpackages/agent/src/interaction-kernel/kernel.ts:238–2707f2e519936b57902d4907ed8026fe1ecdd146e82符号:InteractionKernel
已核验实现

ExecutionHostRouter.dispatch 对同 callId+bindingDigest 做 singleflight;绑定/上下文不匹配返回 unsupported,不盲重试。

aida-agentpackages/agent/src/execution-host/router.ts:95–1257f2e519936b57902d4907ed8026fe1ecdd146e82符号:dispatch
已核验实现

InteractionKernel.settle 对缺失记录返回 not_found,策略禁行返回 forbidden;结算权威在 Kernel,不在 Desktop。

aida-agentpackages/agent/src/interaction-kernel/kernel.ts:802–8377f2e519936b57902d4907ed8026fe1ecdd146e82符号:settle
已核验实现

dispatchSingleflight 在 host.dispatch 抛错时默认将 handle.delivery 标为 possibly_sent 并返回 reconcile_needed;DeliveryError 可标 not_sent 并完成 host_unavailable。

aida-agentpackages/agent/src/execution-host/router.ts:129–1597f2e519936b57902d4907ed8026fe1ecdd146e82符号:dispatchSingleflight
aida-agentpackages/agent/src/execution-host/host-support.ts:41–537f2e519936b57902d4907ed8026fe1ecdd146e82符号:unavailableExecution
已核验实现

InteractionKernel.expireDue / requestTaskCancellation 将到期或人工取消写入 SoT;settle 对 not_found/forbidden/结构拒绝给出明确状态,仅 accepted+resolved 附带 resume。

aida-agentpackages/agent/src/interaction-kernel/kernel.ts:662–6927f2e519936b57902d4907ed8026fe1ecdd146e82符号:requestTaskCancellation
aida-agentpackages/agent/src/interaction-kernel/kernel.ts:802–8377f2e519936b57902d4907ed8026fe1ecdd146e82符号:settle
已核验实现

Unified entry 在 RunLeaseLostError 时向客户端产出 retryable RUN_LEASE_LOST;acquireLease 失败产出 RUN_LEASE_BUSY。

aida-agentpackages/agent/src/gateway/unified-entry.ts:2903–29257f2e519936b57902d4907ed8026fe1ecdd146e82符号:RUN_LEASE_LOST
aida-agentpackages/agent/src/gateway/unified-entry.ts:2167–21977f2e519936b57902d4907ed8026fe1ecdd146e82符号:RUN_LEASE_BUSY
已核验实现

dispatchSingleflight 在 host.dispatch 返回 kind=completed 时将 handle.delivery 更新为 completed 并保留 terminalResult。

aida-agentpackages/agent/src/execution-host/router.ts:129–1597f2e519936b57902d4907ed8026fe1ecdd146e82符号:dispatchSingleflight
已核验实现

InteractionKernel 在 attempt=accepted 且 interaction=resolved 时通过 buildInteractionResumeEvent 附带 resume,供 continuation。

aida-agentpackages/agent/src/interaction-kernel/kernel.ts:613–6437f2e519936b57902d4907ed8026fe1ecdd146e82符号:buildInteractionResumeEvent
已核验实现

RunStore.renewLease 以 lease_token 条件延长 expires_at;releaseLease 在 token 匹配时清空 lease 字段。

aida-agentpackages/agent/src/session/run-store.ts:714–7447f2e519936b57902d4907ed8026fe1ecdd146e82符号:renewLease
aida-agentpackages/agent/src/session/run-store.ts:736–7667f2e519936b57902d4907ed8026fe1ecdd146e82符号:releaseLease
已核验实现

reply_user 内部工具让前台轮次中途对当前用户发一条助手消息:复用 publishModelResponseInTx,消息 id 由 (run, toolCallId) 派生,重试为空操作;入参先做长度上限(2000 字)、内部标识脱敏、数字溯源校验;按 agent 级 contextPolicy.replyUserEnabled 挂载,默认关;旁路查询与子 / 后台 run 不挂载。

aida-agentpackages/agent/src/orchestrator/reply-user.ts:1–167f2e519936b57902d4907ed8026fe1ecdd146e82符号:replyUserEnabled
aida-agentpackages/agent/src/orchestrator/reply-user.ts:37–397f2e519936b57902d4907ed8026fe1ecdd146e82符号:REPLY_USER_MAX_CHARS
aida-agentpackages/agent/src/gateway/orchestrator-runtime.ts:339–3427f2e519936b57902d4907ed8026fe1ecdd146e82符号:replyUserEnabled
已核验实现

reply_user 首次发布成功后经 AgentRun 缓冲事件队列发出 reply_user_message { runId, messageId, text, kind } 事件;chat SSE ledger 把它列为关键事件(立即落账、可补读),不并入 response 正文。

aida-agentpackages/agent/src/shared/types.ts:138–1477f2e519936b57902d4907ed8026fe1ecdd146e82符号:reply_user_message
aida-agentpackages/agent/src/orchestrator/run.ts:1121–11247f2e519936b57902d4907ed8026fe1ecdd146e82符号:emitReplyUserMessage
aida-agentpackages/agent/src/runtime/stream/chat-sse-ledger.ts:107–1157f2e519936b57902d4907ed8026fe1ecdd146e82符号:reply_user_message
已核验实现

ADR-0092(Accepted,2026-10-20;2026-10-23 STA-113 修订 holdout「不退化」为同时段配对对照):路由选能力只来自分类器结构化理解或经校验的结构化状态;分类之后的确定性阶段只能否决、收窄或补参数;续接统一读主分类的 continuation_relation(applyRouteContinuation / prepareRouteContinuation),ADR 点名要删的措辞续接函数(continuationFromRecentMessages 等)已从 routing 删除;knowledge/workforce/analytics、recruit、vms 三族迁移 MR 已合入(STA-92 迁移 4/4,跨族规则清零);遗留 utteranceRefersBack 仅服务 child Decision(ADR-0063~0071,不在本 ADR)。RouteLlmPass 每轮最多 2 次实际请求。图未改。

aida-agentdocs/adr/0092-routing-decision-belongs-to-the-classifier.md:24–497f2e519936b57902d4907ed8026fe1ecdd146e82符号:选能力的只有两类来源
aida-agentpackages/agent/src/routing/router.ts:68–797f2e519936b57902d4907ed8026fe1ecdd146e82符号:prepareRouteContinuation
aida-agentpackages/agent/src/routing/router/continuation.ts:35–547f2e519936b57902d4907ed8026fe1ecdd146e82符号:applyRouteContinuation
aida-agentpackages/agent/src/routing/router/budget.ts:63–827f2e519936b57902d4907ed8026fe1ecdd146e82符号:RouteLlmPass
已核验实现

ADR-0092 本钉区间(9b78ef6261a2..2141b561dc97)的 routing 迁移与修复:knowledge/workforce/analytics、recruit、vms 收回分类器;跨族规则清零、续接只保留一处;没有一处用用户原文的正则或短语设定 primary、注入候选、抬高置信度或替代分类器;personalSkillManagement 由分类器判定后 router 只收窄文件决策(decision.ts / file-decision.ts)。

aida-agentpackages/agent/src/routing/router/decision.ts:63–777f2e519936b57902d4907ed8026fe1ecdd146e82符号:personalSkillManagement
aida-agentpackages/agent/src/routing/router/file-decision.ts:38–497f2e519936b57902d4907ed8026fe1ecdd146e82符号:personalSkillManagement
aida-agentpackages/agent/src/routing/verticals/candidate-query-reference.ts:20–397f2e519936b57902d4907ed8026fe1ecdd146e82符号:prepareCandidateQueryReference
aida-agentpackages/agent/src/routing/verticals/classifier-review-contracts.ts:274–2937f2e519936b57902d4907ed8026fe1ecdd146e82符号:needsInvalidSourceReadReview
条件路径

ADR-0092 第 4 条补充判断边界(RouteLlmPass):budget.ts 登记每轮最多 2 次实际请求;clarification 的 missing_input_reread 通道仍可触发已登记的补充判断;主分类内 reviewAllFileTargets 等灰区需 ADR owner 继续判断,本轮不改结论口径,只改引用到拆分后的模块。

这三处是否算 ADR 第 4 条「登记过的补充判断」或允许的确定性建议,ADR 没写明;只按代码静态判断,未跑判例。

aida-agentpackages/agent/src/routing/router/budget.ts:63–927f2e519936b57902d4907ed8026fe1ecdd146e82符号:RouteLlmPass
aida-agentpackages/agent/src/routing/router/clarification.ts:133–1527f2e519936b57902d4907ed8026fe1ecdd146e82符号:missing_input_reread
aida-agentpackages/agent/src/routing/llm-classifier.ts:195–2097f2e519936b57902d4907ed8026fe1ecdd146e82符号:reviewAllFileTargets
已核验实现

ADR-0097 D1-2a:listCapabilitiesForTenant({forRouting:true}) 在已核验零业务 scope 时跳过 Pack,只装配本地/Plugin;fresh 目录经 application-route-catalog(ADR-0099 应用访问边界抽出)传 forRouting+verifiedNoBusinessScope。ADR-0097 仍为 Proposed;D1-2b/D2 暂缓。

aida-agentpackages/agent/src/config/services/capability-service.ts:345–3857f2e519936b57902d4907ed8026fe1ecdd146e82符号:forRouting
aida-agentpackages/agent/src/gateway/application-route-catalog.ts:63–1037f2e519936b57902d4907ed8026fe1ecdd146e82符号:listCapabilitiesForTenant
aida-agentdocs/adr/0097-non-vms-tenants-keep-routing-within-their-entitled-products.md:1–107f2e519936b57902d4907ed8026fe1ecdd146e82符号:proposed
条件路径

ADR-0098:可回访待办卡方向 Accepted、实施待批;STA-193 止血(旁问顺序 + 新消息停 parked waiting root)已合入;其余 DDL/生产者接入未批。

除止血外的 ADR-0098 实施与验收未做;不能宣称全部待办卡可回访。

aida-agentdocs/adr/0098-revisitable-pending-cards.md:1–407f2e519936b57902d4907ed8026fe1ecdd146e82符号:Accepted
aida-agentpackages/agent/src/session/expired-interaction-closure.ts:4–167f2e519936b57902d4907ed8026fe1ecdd146e82符号:parked
已核验实现

条件产物目标先在受理时冻结,再由原 Plugin 请求/回执与文件读取事实证明,完成前复核;本次不满足导出条件时应说明未导出,而非捏造 Artifact。另一个独立变化是已选 Skill 的非文件目标:只有原目标没有文件意图、独立目标复核的 action/object 与原判断一致时才能接受,不得把原文件目标偷偷改成非文件。

aida-agentpackages/agent/src/gateway/workbench-route-preparation.ts:306–3137f2e519936b57902d4907ed8026fe1ecdd146e82符号:freezeConditionalArtifactRead
aida-agentpackages/agent/src/routing/classifier-current-target-review.ts:127–1547f2e519936b57902d4907ed8026fe1ecdd146e82符号:workbenchGoalReviewAgrees
已核验实现

开发者指南 recovery:查故障与恢复,按当前固定源码与关联主题定位责任和边界;建议操作与验收计划不是已执行结果。

只核对当前代码与文档结构;生产配置、所有真实客户端、清理作业及原生/浏览器验收另行举证。PR状态仅为读取时快照。

aida-desktopapps/desktop/electron/agent-loop/runtime-work-delivery.ts:75–1194346d79eb36402355e51118df0edf1f98586880c
aida-desktopapps/desktop/electron/agent-loop/runtime-work-delivery.ts:375–4284346d79eb36402355e51118df0edf1f98586880c
aida-desktopapps/desktop/electron/agent-loop/runtime-work-delivery-store.ts:59–704346d79eb36402355e51118df0edf1f98586880c
aida-desktopapps/desktop/electron/agent-loop/runtime-work-delivery-store.ts:154–1724346d79eb36402355e51118df0edf1f98586880c
aida-desktopapps/desktop/electron/agent-loop/runtime-work-delivery.ts:22–534346d79eb36402355e51118df0edf1f98586880c
aida-agentpackages/agent/src/session/run-store.ts:2029–20637f2e519936b57902d4907ed8026fe1ecdd146e82
aida-desktopapps/desktop/electron/local-files-v4/coordinator.ts:137–1534346d79eb36402355e51118df0edf1f98586880c
aida-desktopapps/desktop/electron/local-files-v4/coordinator.ts:312–3504346d79eb36402355e51118df0edf1f98586880c
aida-desktopapps/desktop/electron/local-files-v4/write-recovery.ts:24–1714346d79eb36402355e51118df0edf1f98586880c
aida-desktopapps/desktop/electron/local-files-v4/authorized-folder-authority.ts:374–4214346d79eb36402355e51118df0edf1f98586880c
aida-desktopapps/desktop/electron/local-files-v4/authorized-folder-authority.ts:457–4784346d79eb36402355e51118df0edf1f98586880c
aida-desktopapps/desktop/electron/local-files-v4/coordinator.ts:167–1784346d79eb36402355e51118df0edf1f98586880c
aida-agentpackages/agent/src/execution-host/router.ts:95–1757f2e519936b57902d4907ed8026fe1ecdd146e82
aida-desktopapps/desktop/electron/agent-loop/runtime-work-delivery.ts:122–2424346d79eb36402355e51118df0edf1f98586880c
aida-desktopapps/desktop/electron/agent-loop/runtime-work-delivery.ts:246–2744346d79eb36402355e51118df0edf1f98586880c
aida-desktopapps/desktop/electron/installed-capability-authorization.ts:43–974346d79eb36402355e51118df0edf1f98586880c
aida-desktopapps/desktop/electron/local-files-v4/coordinator.ts:240–2674346d79eb36402355e51118df0edf1f98586880c