DeepSeek Harness 并行开发门禁插件

前言

DeepSeek Harness(DSH)提供了团队任务板和状态机,但允许成员直接把任务标成 completed,没有验收、没有证据、没有独立核对。「实施和验收是同一个人」是并行开发里最隐蔽的失败方式。本插件用 DSH 的 tools/pre-execute 钩子拦截「标记完成」动作,把「验收通过」从模型的声称变成能被机器校验、且能被强制的状态。

是什么

zzd1990/dsh-parallel-dev 是面向 DSH 的编排插件,当前版本 v0.3.0(实验性)。它不重造任务板,只补上平台没做的那件事:把任务标记为「完成」时,必须有一份独立验收记录。插件提供验收门禁、独立验收、提交绑定、用户豁免、依赖看板、编排纪律注入与设置页。

核心功能

  • 验收门禁:team_task_update(complete) 必须命中一份 passed 的验收记录,否则拒绝。门禁模式为 enforce(拒绝)或 advise(仅提醒)。
  • 独立验收:由一次性验收代理(subagent)登记,带逐条判据、可定位证据、验收方标识;实施方自己签字的记录会被拒(自证检查,默认开启)。
  • 提交绑定:验收记录绑定 worktree 的 commit sha;完成时 HEAD 已变化 → 拒绝(默认开启)。
  • 用户豁免:用户本人明确说「这个任务不用验收」时,pdev_waive 逐字核对用户原话后放行,并留痕。
  • 依赖看板:/pdev/board,提供纵向依赖图 + 关键路径 + 同泳道排队 + 并发时间轴;可嵌在 DSH 侧栏。
  • 编排纪律注入:自动把团队并行开发纪律写进系统提示,不依赖用户手动贴提示词。
  • 设置页:「并行开发配置」,查看插件状态 / 运行条件 / 安装信息 / 插件事件,并配置 8 项行为。

安装与启用

前置条件

项 说明
DSH 0.2.1-rc 系列(插件以 @deepseek-ai/dsh-tools、@deepseek-ai/schemastery 为运行时依赖)
Node.js >= 20
git 命令行可用;验收记录要读 worktree 的 HEAD
Agent Teams profile 需挂载 @deepseek-ai/dsh-experimental-agent-team 和 @deepseek-ai/dsh-experimental-tool-agent-team
Web Server profile 需挂载 @deepseek-ai/dsh-host-webserver
Settings profile 需挂载 @deepseek-ai/dsh-settings 服务;没有则设置页只读

安装

把本仓库目录交给 DSH 会话里的 Agent,让它调用插件管理器:

plugin_manager({
  action: "install_bundle",
  target: "/绝对路径/dsh-parallel-dev"
})

安装结果以返回的 application 字段为准;为 applied 后重启 DSH。安装后无需手工改 cordis.patch.yml:本包自带的 cordis.patch.yml 会插入 parallel-dev 这一行。

验证安装

重启 DSH 后,在会话里调用:

pdev_gate_status()

看到 plugin: dsh-parallel-dev v0.3.0、gateInstalled: true 即安装成功。设置 → 并行开发配置 也应出现;看板地址是 /pdev/board。

典型用法

开工前

pdev_preflight(project_root = "/path/to/project")

它会检查:团队工具是否真的存在、项目根是否被另一个编排会话占用、git 是否可用、已有验收记录覆盖情况。返回的 blockers 不为空时不要降级硬做 —— 先告诉用户。

团队开发 + 独立验收

  1. Lead 用 team_task_create 建任务,写清 blocked_by 和 write_scopes;第一层尽量做宽。
  2. 实施任务用 spawn_teammate;每个实施任务一个独立 worktree + 分支。
  3. 实施方完成后,Lead 派一次性验收代理(subagent)独立核对。
  4. 验收代理调用 pdev_verify_record 登记记录(判据 + 证据 + commit sha)。
  5. 实施方或 Lead 调 team_task_update(action = "complete");门禁命中记录才放行。

没有验收记录的 complete 会被拒绝,并返回正确做法与所需参数。

用户豁免

用户本人明确表示某任务不需要验收时:

pdev_waive(task_id = "task-3", user_quote = "task-3 不用验收", reason = "文档改动")

插件会去本会话的用户消息里核对这句原话,并要求包含明确的豁免意思。编造的引用会被拒绝。豁免会留痕,最终验收报告应列出所有豁免项。

看板

  • 浏览器打开 /pdev/board(拼在 DSH Web UI 地址后面)。
  • 或在 DSH 侧栏打开「并行开发」面板:检测到未完成任务时会自动打开(可在设置页关闭)。

设置页

设置 → 并行开发配置:查看插件版本、加载状态、5 个服务是否可用、安装目录 / profile / 配置文件 / 数据目录、插件提供的能力、最近插件事件;配置 8 项行为并保存(写入当前 profile 的 cordis.patch.yml)。

工具一览

工具 作用 关键参数
pdev_preflight 开工前门禁检查 project_root?
pdev_verify_record 登记独立验收记录(完成任务的唯一凭据) task_id、commit_sha、worktree、verdict、verifier_id、evidence、criteria?、notes?、project_root?
pdev_waive 登记用户豁免(逐字核对用户原话) task_id、user_quote、reason?、project_root?
pdev_gate_status 查看门禁与验收记录,排查为什么被拒 project_root?
pdev_board 给出看板地址与依赖图摘要 无

project_root 省略时使用当前会话的 session.header.cwd。

配置

配置全局一份,存在当前 profile 的 cordis.patch.yml,由设置页写入;默认值全部保持最严格行为。

分组 配置 默认 作用
功能 injectPolicy 开 是否把编排纪律注入系统提示
功能 autoOpen 开 检测到未完成任务时自动打开侧栏看板
时间线 timelineEnabled 开 记录任务状态变更到 .pdev/timeline.jsonl
时间线 timelineMaxEntries 60 内存中每个任务保留条数(10–500)
门禁 gateMode enforce enforce 拒绝;advise 只记录、不拒绝
门禁 requireEvidence 开 验收记录必须至少一条证据
门禁 requireCommitMatch 开 完成时 HEAD 必须等于验收记录的 sha
门禁 blockSelfCertification 开 禁止任务所有者给自己登记验收

放宽 gateMode 或任一严格项会让「完成」的可信度下降;设置页会二次确认并显示警告。修改只在保存后生效,Host 读侧最多 1 秒缓存。

数据与命名空间

所有数据都在项目根下,可读、可 diff、可进版本库(默认建议把 .pdev/ 加进 .gitignore):

<项目根>/.pdev/
├── verify/
│   ├── team-<leadId>__task-3.json           # 验收记录
│   └── team-<leadId>__task-7.waiver.json    # 用户豁免
└── timeline.jsonl                           # 任务状态变更(append-only)

验收记录按团队隔离:key 取团队 Lead 的会话 id;一次性验收 subagent 会归属到它所属的根会话,避免「记录落在 subagent 自己的命名空间里、Lead 找不到」。这样多个并行会话的同名 task-1 不会串。

工作原理

Lead / teammate ──team_task_update(complete)──▶ tools/pre-execute 钩子
                                                  │
                          ┌───────────────────────┴───────────────────────┐
                          │ 用户豁免?                                    │ 放行
                          │ 验收记录存在且 passed?                       │
                          │ 记录 worktree 的 HEAD == commit_sha?         │
                          └───────────────────────┬───────────────────────┘
                                                  │ 任一不满足
                                                  ▼
                                              拒绝并说明原因
  • 验收记录由 pdev_verify_record 写入,工具自己跑 git rev-parse HEAD 取证,不采信调用方转述。
  • 验收方不能是任务所有者(默认开启;比对任务板 ownerName 与调用方成员)。
  • gateMode = enforce 时拒绝;advise 时只打一行「仅提醒」并放行。

适用场景与注意

  • 适合使用 DSH 团队模式进行并行开发的场景,需要独立验收与可校验的门禁。
  • 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。
  • DSH 0.2.1-rc 系列、Node.js >= 20、git 命令行可用是前置要求。
  • 缺 Agent Teams 时插件仍会加载,但团队工具不可用,门禁没有可拦截的对象。

结尾

本插件把「智能体团队模式并行开发」从建议变成有门禁、可校验的机制,适合需要独立验收与编排纪律的 DSH 工作流场景。更多细节可访问插件目录页与 GitHub 仓库。

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

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

Xiaoye