OrchestratorRuntime 装配与执行
启动依赖如何成为本轮执行环境
构造 Runtime 时,公共基础依赖与 memory/internalToolDeps 分别保存。每轮解析生成 TurnConfig,composeDeps 再组合模型、工具、提示词与策略,得到供 orchestrate 消费的 OrchestratorDeps。
prepareExecution 是普通执行与持久化准入共同使用的准备边界,本身不请求模型。resolveAndRun 在准备成功后调用 orchestrate;文本 Worker 也可使用准备能力。因此共享机制的边界比单个便捷入口更深。
ReAct 循环内部:轮次证明、断点续跑与上下文收敛
进入 orchestrate → driveReActLoop 后,模型循环在受控边界内推进:
- 单轮所有权与工具调用证明(
OwnedRoundProjection/OwnedToolCallProjection):每轮记录system、messagesDigest、toolsDigest与acceptedResponseDigest,通过进程内WeakMap绑定由当前驱动颁发的真实调用证明,外部调用方不能凭猜测文本伪造轮次状态。 - 原工具断点续跑(
resumeOriginalToolRound):当上一轮因本机读取或前置依赖挂起并满足恢复条件时,由原 Work owner 携带OriginalToolRoundResume直接复跑该单次挂载的 SDK 工具调用(严格核对runId、invocationId、boundarySeq、toolCallId、toolDomain与argsDigest),不重新请求 LLM Provider。 - 原地打转熔断(
RepeatedToolCallBreaker):按确定性指纹(工具名 + 规范化参数 + 规范化结果)统计连续完全相同的工具轮次,达到阈值(默认REPEATED_TOOL_CALL_LIMIT = 3)触发REPEATED_IDENTICAL_TOOL_CALL熔断;挂起未决或有独立失败预算的本机/桌面/插件工具域不计入。 - 下一轮上下文裁剪与持久读占位(
slimToolResultsForNextRound/durableLocalReadPlaceholder):超长工具输出仅对下一轮模型上下文做截断(read_files与图像结果豁免,SSE 与持久化仍保留完整原始输出);本机持久读在消息历史中只存status: "received"证明占位,不把本机文件正文落入通用消息表。
模型上下文压缩重建与前缀完整性核验(run-work-model-rebuild)
当多轮执行因上下文窗口超限触发模型输入拒绝(ModelInputRejection)时,Runtime Work 通过确定性三步流水线压缩重建上下文(见视图 model-context-rebuild):
- 链式槽位预留(
reserveRuntimeWorkModelRebuild):在runtime_work_model_rebuilds中按每条开放 Root 链最多预留 2 次重建(ordinal: 1 | 2),其中第 2 次必须精确绑定已消费的前驱predecessorBuildId,仅当模型响应被接受收口后才允许开启新链。 - 候选摘要生成与前缀核验(
prepareRuntimeWorkModelRebuildCandidate/verifyPreparedPrefix):生成压缩视图后,在 Root 事务内强制复核sourceMessageIds数量、顺序、Run 资格与sourceDigest,并校验未切碎同一 Run 的已发布模型响应(split === false),否则抛RUNTIME_WORK_MODEL_REBUILD_SOURCE_CHANGED。 - Repeatable-Read 原子消费(
admitRuntimeWorkModelRebuildRequest):在repeatable read隔离级别与当前 claim fence 下复核驱动端授权、写入不可变的runtime_work_model_rebuild_consumptions并推进run_checkpoints;若遇40001序列化冲突仅重试 DB 事务,绝不重跑摘要生成。
证据与范围
aida-agent·packages/agent/src/gateway/orchestrator-runtime.tsL379–407 ·prepareExecution·e2adc9a3c325aida-agent·packages/agent/src/gateway/orchestrator-runtime.tsL278–308 ·composeDeps·e2adc9a3c325aida-agent·packages/agent/src/gateway/orchestrator-runtime.tsL397–427 ·durableText·e2adc9a3c325aida-agent·packages/agent/src/runtime/execution/run-execution-worker.tsL69–70 ·RunExecutionWorker·e2adc9a3c325aida-agent·docs/adr/0018-orchestrator-runtime-and-turn-config.mdL9–54 ·e2adc9a3c325aida-agent·packages/agent/src/orchestrator/drive-react-loop.tsL82–161 ·OwnedRoundProjection·7f2e519936b5aida-agent·packages/agent/src/orchestrator/resume-original-tool.tsL14–75 ·resumeOriginalToolRound·7f2e519936b5aida-agent·packages/agent/src/orchestrator/repeated-tool-call-breaker.tsL12–90 ·RepeatedToolCallBreaker·7f2e519936b5aida-agent·packages/agent/src/orchestrator/context-tool-result.tsL25–60 ·slimToolResultsForNextRound·7f2e519936b5aida-agent·packages/agent/src/orchestrator/message-projection.tsL27–46 ·durableLocalReadPlaceholder·7f2e519936b5
结论来自固定版本的静态源码与合同阅读;实现存在、默认开关和生产启用分别判断。本站代码证据面板列出声明状态与具体限制。