Skip to content

Delegated Runtime:审批门控只注入窄回调,不再向 adapter 暴露完整 coordinator #242

Description

@suntianc

Parent

来源

2026-07-28 对 #201 落地代码的 Spec review。

问题

#201 的 Spec 明确要求:

adapter 需要的审批门控能力以延迟提供者/回调注入;adapter 不再引用 coordinator 整体。

当前 CreateDelegatedRuntimeAdapterOptions 仍包含:

resolveApprovalCoordinator: () => DelegatedAgentRunCoordinator

createDelegatedToolApprovalMiddleware() 也接收完整 coordinator,并调用其 runToolAction()。这只把原闭包循环改成了显式延迟 getter;adapter 依然知道 coordinator 的完整接口,依赖方向和可用能力都比审批门控实际需要的更宽。

目标

adapter 只接收执行一次 delegated tool action 所需的窄能力,不导入或持有完整 DelegatedAgentRunCoordinator

推荐形状按现有类型最小化,例如:

type RunDelegatedToolAction = (input: DelegatedToolActionInput) => Promise<unknown>

resolveRunDelegatedToolAction: () => RunDelegatedToolAction

也可以使用只包含 runToolAction 的窄接口,但不得重新暴露 coordinator 的其他方法或状态。

实现要求

  • createDelegatedToolApprovalMiddleware() 接收窄 callback/gateway。
  • delegated-runtime-adapter.ts 不再导入 DelegatedAgentRunCoordinator 类或完整接口。
  • composition root 在 coordinator 构造后绑定 coordinator.runToolAction(...)
  • 保留延迟绑定,避免 adapter/coordinator 构造顺序形成运行时循环。
  • 不改变 DelegatedRuntimeAdapter.run(request)、coordinator 并发窗口、持久身份或审批调度语义。
  • 不新增宽泛 event bus、service locator 或容器抽象。

测试

  • adapter 单测只注入 fake tool-action callback,不构造 fake coordinator。
  • strict / agent_decides / bypass 三种父审批模式继续断言门控集合正确。
  • 需要审批与无需审批的 tool call 都经过相同窄 callback,requiresApproval 值正确。
  • callback 抛错/拒绝时保留现有失败传播和 Delegated Failure Isolation。
  • 既有 parallel-delegated-runtime 与 delegated contract 集成测试保持通过。

验收标准

  • adapter 的类型表面无法访问 coordinator 的其他能力。
  • coordinator ↔ adapter 的依赖从构造签名可读,且无完整对象反向引用。
  • ADR-0061/0062/0063 行为全部不变。
  • deepagent 相关单测与集成测试通过。
  • pnpm run typecheckpnpm run build 通过。

非目标

  • 不修改审批模式规则。
  • 不修改工具 scope、模型选择、Skill Snapshot 或失败分类。
  • 不重构 coordinator 的其他职责。
  • 不新增 CONTEXT.md 领域词或 ADR。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2规范 / 坏味道 / 测试缺口architecture架构 deepening 候选(来自架构评审)ready-for-agentFully specified, ready for an AFK agentrefactor重构(非行为变更)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions