Skip to content

协作:父方所有权与执行分支 ​

委派、后台作业与脚本编排分别由独立插件提供。父 Agent 关联子任务身份与生命周期,提供者拥有实际执行资源,工作流通过同一委派能力组织可选并行协作。

协作能力与执行所有权

箭头表示标注的调用或依赖关系;点击组件定位正文。完整关系见下方文字说明。

文字关系说明与章节链接

父 Agent/工具消费者 →(可选编排)→ 可选工作流引擎;可选工作流引擎 →(携带父方身份)→ 子任务管理服务;父 Agent/工具消费者 →(直接委派)→ 子任务管理服务;子任务管理服务 →(预检后调用)→ 具名委派提供者;父 Agent/工具消费者 →(启动与控制)→ 后台作业运行时;后台作业运行时 →(预检后启动)→ 作业生产者。

父 Agent/工具消费者 · 可选工作流引擎 · 子任务管理服务 · 具名委派提供者 · 后台作业运行时 · 作业生产者

委派服务管理提供者与子会话 ​

dsh-subagent 提供统一委托服务,tool-subagent 发起任务,tool-subagent-control 负责后续控制。

// 按提供者名称启动委托,能力检查通过后返回调用者拥有的运行。
async start(name: string, request: SubagentStartRequest): Promise<SubagentRun>

spawn-in-process、fork-in-process、ACP 和外部代理等提供者支持的能力不同;请求启动时就应拒绝不支持的选项,不能启动后才发现无法续聊。可继续的子 Agent 由管理器准备并关联父方权限;持久目录里能列出旧子任务,并不赋予当前调用者继续控制它的权利。

作业运行时管理身份与输出 ​

dsh-jobs 管理作业身份、所有者权限、运行状态和输出环;实际运行命令或其他工作的是生产者。注册前先做权限与输入预检,启动器抛错不留下半注册作业,生产者负责清理部分创建的资源。

// 先预检权限与控制器,再原子注册生产者启动的后台作业。
abstract start(spec: JobSpec): JobId

// 按所有者读取输出并推进模型游标,终态结果仅首次读取携带。
abstract read(id: JobId, caller?: SessionId): JobRead

作业状态包含 running、stopping、completed、killed、failed。可见作业编号不是访问许可,读取和取消仍检查所有者,避免知道一个 ID 就能观察别人执行内容。

取消结算与活作业观察 ​

作业 cancel 是同步且幂等的请求,最终状态要等生产者释放资源后结算;拥有它的活 Agent 被销毁时,注册表会取消并等待作业。

输出按 UTF-8 字节限额保留,输出容量与记录保留时间独立,终态后的写入被记录并丢弃。最终结果对模型的首次读取还具有一次性消费语义。这意味着后台运行只改变等待方式,不自动提供进程重启后的持续执行。

工作流复用委派能力编排 ​

dsh-workflow 管理调用者拥有的运行,workflow-ptc 执行 JavaScript 编排,tool-workflow 提供入口。

// 启动调用者拥有的编排运行,结果结算后仍须释放运行。
abstract start(request: WorkflowStartRequest): WorkflowRun

脚本通过 agent、parallel、pipeline、phase、log 组织子任务,执行前校验元信息和语法,子 Agent 归属于发起方。结果把失败或取消表示为结算结果,销毁等待脚本和子任务结束;普通工作流工具会阻塞到结束。一个或两个独立任务直接委托即可,工作流不是必经层。

辅助示例

主 Agent 让两个子 Agent 分别检查模型和文件模块,同时把构建命令作为后台作业。子 Agent 返回分析结论,jobs 返回进程输出和状态,两者不能混作同一种消息。用户取消整个任务后,父方需要停止其拥有的子工作并等待收尾;只关闭展示面板不会终止这些资源。

设计取舍 ​

统一委托入口和作业观察接口减少主 Agent 的等待负担,显式所有权防止遗留工作失控;代价是并行结果需要汇总,生命周期也更复杂。同进程委托共享故障范围,外部执行隔离较强但能力可能较少,不能假定所有提供者支持同样的续聊和恢复。

相关包与插件
资料来源与核验范围

本章依据固定版本的官方文档整理,设计取舍根据所述机制分析;核验范围为文档,不包含运行实测。

图示
100%双指缩放 · 滑动查看