前言¶
DSH bundle 插件 dsh-code-pipeline 旨在为 code-pipeline 预设(PTC Code Mode 流水线)动态注入阶段子代理工具,并允许在设置页配置各阶段子代理使用的模型。
原本的 code-pipeline 预设将 3 个 dsh-tool-subagent 行(subagent_plan / subagent_impl / subagent_review)以及每个阶段的 provider/model/persona/toolFilter 静态钉死在 agent.cordis.yml 里。若要修改模型,必须修改 YAML 并重启会话。本插件通过监听 agent/created 事件,在 agent.ctx 中注册工具,并将模型选择逻辑解耦至运行时读取设置,从而实现无需重启会话的动态配置。
核心功能¶
- 动态注入工具:为组合了
code-pipeline预设的 ROOT 代理注入三个阶段子代理工具。 - 动态模型配置:通过 Settings → 代码流水线 页面,实时配置各阶段的
enabled、provider、model、reasoningEffort和maxConcurrency。 - 多轮评审复用:利用
pipeline_followup工具,在多轮评审(plan → impl ↔ review)中复用同一个评审子代理,避免重复传递上下文。 - 派发消息落盘:主代理调用阶段工具时,将完整派发消息(含 diff、plan 等)整体写入系统临时文件,避免上下文截断。
- 后台模式运行:阶段工具默认以
run_in_background模式运行,立即返回子代理 ID,子代理独立会话继续执行。
安装与启用¶
推荐使用一行命令从 GitHub 分发安装。
dsh plugin --profile web add github:ErrorLst/dsh-code-pipeline
- 该命令在 web profile 下执行
pnpm add github:ErrorLst/dsh-code-pipeline,并自动将@dsh-external/dsh-code-pipeline追加进dsh.profile.bundles。 - 安装成功后,重启
dsh web即可挂载生效。 - 首次启动自动安装预设:插件会检测
$DSH_HOME/.agent-presets/code-pipeline,若缺失则自动从包内preset/code-pipeline/拷贝(幂等,已存在则跳过,绝不覆盖)。
本地开发安装方式:
dsh plugin --profile web add link:<本仓库绝对路径>
卸载方式:
dsh plugin --profile web remove @dsh-external/dsh-code-pipeline
配置与使用¶
设置页配置¶
在浏览器设置页进入「代码流水线」配置:
* Provider/Model:列表来自 GET /dsh-code-pipeline/options,不可用时相应字段禁用,不允许手输。
* 运行状态:每阶段卡片显示「当前运行 N / 上限 M」,数据来自 GET /dsh-code-pipeline/status(每 5 秒轮询)。
* 子代理消息投递:支持「固定插入」(默认)和「固定排队」两种投递方式。固定插入利用 steer 语义,运行中子代理在下一模型步骤即可收到消息;固定排队则走原生 human-queue 通道。
pipeline_followup 工具¶
当阶段子代理已派发并开始运行时,用户改需求需使用 pipeline_followup 工具:
* 参数 child:支持 latest、阶段键(plan / impl / review)或完整 subagentId。
* 参数 message:需求变更文本,需自包含(子代理无本对话上下文)。
* 行为:调用宿主原生 subagents.sendMessage。若子代理空闲或已结束,会唤醒新回合;若正在运行,则插入到下一个模型步骤。
人工闸门¶
Plan 阶段结束后,主代理将完整计划以 Markdown 回复直接呈现在对话中,结束回合等待用户输入。
* 批准(如 approve、同意、ok):进入实现阶段。
* 其他内容:视为修订反馈,并入计划重新呈现(最多两轮)。
多轮评审复用协议¶
基于 prompt 协议,第一轮评审后的轮次复用同一个评审子代理:
1. 第 1 轮:使用 subagent_review,返回 subagentId。
2. 第 2 轮起:使用 pipeline_followup,child 传该 subagentId,message 包含完整的新 diff、编号问题处理说明及回复契约(APPROVED / CHANGES REQUIRED:)。
3. 注意:第 2 轮起不再传递计划与历轮 diff,依靠子代理会话内的前缀缓存。
限制与要求¶
- 子代理输入框:子代理自己的输入框仍会排队(宿主
subagents.prompt硬编码mode: 'continuable',且输入栏对子代理会话关闭了 steering)。改需求请走主对话 → 代理调用pipeline_followup。 - 评审物料落盘:评审物料只允许写系统临时目录(
$env:TEMP)。主代理不得在项目根目录或子目录创建*.diff、.review_*等文件。 - 预设维护:
preset/code-pipeline目录随项目维护。插件升级后若行为对不上,请检查该目录是否落后于仓库版本。 - 引擎要求:
node >= 22.19.0,dsh >= 0.1.6-alpha.1。 - 许可证:MIT。
总结¶
dsh-code-pipeline 插件通过解耦工具注册与模型选择,提供了灵活的流水线配置能力。配合 pipeline_followup 和多轮评审复用协议,能够有效管理长任务的上下文传递与变更响应。安装后重启会话即可使用。