dsh-code-pipeline:为 PTC Code Mode 流水线注入阶段子代理工具

前言

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 中注册工具,并将模型选择逻辑解耦至运行时读取设置,从而实现无需重启会话的动态配置。

核心功能

  1. 动态注入工具:为组合了 code-pipeline 预设的 ROOT 代理注入三个阶段子代理工具。
  2. 动态模型配置:通过 Settings → 代码流水线 页面,实时配置各阶段的 enabled、provider、model、reasoningEffort 和 maxConcurrency。
  3. 多轮评审复用:利用 pipeline_followup 工具,在多轮评审(plan → impl ↔ review)中复用同一个评审子代理,避免重复传递上下文。
  4. 派发消息落盘:主代理调用阶段工具时,将完整派发消息(含 diff、plan 等)整体写入系统临时文件,避免上下文截断。
  5. 后台模式运行:阶段工具默认以 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 和多轮评审复用协议,能够有效管理长任务的上下文传递与变更响应。安装后重启会话即可使用。

GitHub 仓库

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜