← 返回列表
✓ 可直接安装
DeepSeek Harness 的交付质量门禁:拷问需求、测试实现、证明交付——然后用可交付/返工决策把守交接关口。
自动检查通过:npm 包已发布且 engines 声明满足基线(声明 Node ^22.19.0 || >=24.0.0);该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/12 · 已提供中文文档
发货前反复核查:拷问需求,测试实现,证明交付。一套面向 DeepSeek Harness 的工程纪律工具包。
综合分
45.4
GitHub 分
45.4
用户评分
—
★ Stars
33
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-doublechecknpm 包 dsh-doublecheck 已校验归属本仓库,走 npm 安装最省事
数据截至 2026/9/17(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-doublecheck @ 0.9.11
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/17 11:38:59
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-agent@deepseek-ai/dsh-commands@deepseek-ai/dsh-fs@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-session-projection@deepseek-ai/dsh-settings@deepseek-ai/dsh-skill@deepseek-ai/dsh-subagent@deepseek-ai/dsh-system-prompt用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-doublecheck
- 1024 商店渠道:先执行一次 npm i -g dsh1024,然后执行 dsh1024 plugin --profile web add dsh-doublecheck(会计入 deepseek1024.com 的安装排名)。
Gitee
DeepSeek Harness 的交付质量门禁:拷问需求、测试实现、证明交付——然后用可交付/返工决策把守交接关口。
需求在第一次编辑之前就被审问;交付是被证明的,而不是被声称的。
License
DSH plugin
dsh-doctor
Node
CI
Version
npm version
npm downloads
English · 简体中文 · Español · Português · हिन्दी
兼容性
| 层面 | 状态 |
|---|---|
| Harness | DeepSeek Harness dsh-v0.1.5-rc.2。已于 2026-09-11 针对 dsh-v0.1.5-rc.2 master 检出进行验证(完整门禁链 + profile 安装冒烟测试);已发布的 0.1.2-rc.1 固定版本线仍受支持。 |
| Node | ^22.19.0 \|\| >=24.0.0 |
| 平台 | 全部(纯宿主;无原生代码,自身不发起直接网络请求) |
| 模型 | 任意(守卫本身从不调用模型;critic 和 reviewer 阶段作为 harness 子代理运行) |
你将获得
dsh-doublecheck 安装两个插件行,它们从同一份持久会话日志中读取并执行约束:
1. doublecheck-grill — 需求熔炉:内置的 grill-requirements 技能,加上面向模型的 doublecheck_skills、doublecheck_spec 和 doublecheck_report 工具,以及按维度验证的工作流。
2. doublecheck-guard — 纪律守卫:grill 门禁、红/绿证据门禁、对抗式审查、/doublecheck 和 /gate 命令、doublecheck-gate 设置命名空间,以及四阶段交付门禁。
它们共同执行纪律循环——grill → design → red → green → review → verify:
grill ──▶ design ──▶ red ──▶ green ──▶ review ──▶ verify
│
└─ 六个需求维度、共识门禁、
提交到会话 + 工作区的结构化规格
| 阶段 | 含义 |
|---|---|
| grill | 审问六个需求维度;在达成共识前拒绝实施。 |
| design | 已确定的规格通过 doublecheck_spec 提交。 |
| red | 一次失败的测试运行在实施编辑之前证明差距。 |
| green | 编辑后一次通过的测试运行闭合循环。 |
| review | 一个分叉的对抗性批评者依据规格审计交付物。 |
| verify | doublecheck_report + 逐维度验证工作流证明交付物。 |
快速开始
1. 将 bundle 安装到你的 profile
dsh plugin --profile web add "github:PerryLink/dsh-doublecheck#main"
或从 npm 安装(已发布版本)
dsh plugin --profile web add dsh-doublecheck
2. 重启并验证该行
dsh --profile web --dump-config | grep -E -A3 'id: doublecheck-(grill|guard)'
两行(doublecheck-grill 和 doublecheck-guard)会随 profile 自动激活。
安装与卸载
- git 渠道(最新 main):dsh plugin --profile web add "github:PerryLink/dsh-doublecheck#main" —— prepare 脚本仅使用生产依赖进行构建。
- npm 渠道(已发布版本):dsh plugin --profile web add dsh-doublecheck。
- tarball 渠道:在本仓库中运行 pnpm pack,然后运行 dsh plugin --profile web add ./dsh-doublecheck-.tgz。
- 卸载:dsh plugin --profile web remove dsh-doublecheck(或从 profile 补丁中移除这些行)。
对于零配置严格模式(每个门禁都处于 block 强度,要求门禁覆盖),在 bundle 补丁之上应用随附的 overlay:dsh --profile web --patch ./node_modules/dsh-doublecheck/strict.patch.yml。
配置
所有可调项都是 Schemastery Config 字段(可从 cordis.yml 更改)。针对 id 的覆盖会替换整行 —— 请重新声明你需要的每个键。cordis.patch.yml 内联记录了每个键;Schema 默认值是调优默认值的唯一来源。
| 键 | 默认值 | 含义 |
|---|---|---|
| specFile | 'doublecheck-spec.md' | 用于已提交规格 markdown 的工作区文件(grill 行)。 |
| reportFile | 'doublecheck-report.md' | 用于交付报告的工作区文件(grill 行)。 |
| reportVerify | true | 默认运行验证工作流(grill 行)。 |
| verifyProvider | 'fork' | 逐维度检查器的子代理提供方(grill 行)。 |
| verifyMode | 'all' | all = 每个维度一个并行检查器;single = 一个合并检查器(grill 行)。 |
| intensity | 'remind' | grill、red/green 和 review 门禁的执行强度(remind / warn / block)。 |
| enableByDefault | true | 对于没有 /doublecheck on\|off 记录的会话的总开关。 |
| language | 'en' | 注入的提醒/拒绝/审查/门禁文案语言(en / zh)。 |
| guardTools | ['edit', 'write'] | 两个门禁都监视的变更工具名称。 |
| vagueTaskMaxChars | 200 | 更长的任务永远不会被视为模糊。 |
| remindOnce | true | 每个提醒在每个会话中最多注入一次(跨重启持久化)。 |
| testToolNames | ['bash', 'pwsh'] | 可以运行测试的 shell 工具名称。 |
| testCommandPatterns | (pnpm/npm/yarn/bun test, pytest, go/cargo/make test, node --test, deno test, uv run pytest) | 命令必须匹配才能计为一次测试运行的正则表达式。 |
| testFilePatterns | (test dirs, .test. / .spec.) | 用于识别测试文件的正则表达式——始终可编辑,不受红色门禁限制。 |
| modules.grill | true | 关闭则禁用拷问门禁。 |
| modules.tdd | true | 开启则启用红/绿证据门禁。 |
| modules.adversary | false | 开启则在绿灯时启用分叉批评者审查。 |
| adversaryModel | null | 批评者模型路由;null = 主模型自我审查。 |
| adversaryProvider | 'fork' | 批评者运行所在的子代理提供方。 |
| adversaryMaxFindings | 5 | 注入会话的发现数量上限(1–20)。 |
| adversaryTools | ['read', 'glob', 'grep'] | 批评者工具允许列表;保持只读。 |
| adversaryTimeoutMs | 120000 | 单次批评者运行的硬性时间预算。 |
| gate.enabled | true | 门禁面板和回合边界红色通知的总开关。 |
| gate.planSuggestion | true | 将计划模式重新检查建议追加到红色报告中。 |
| gate.reportFile | 'gate-report.md' | 门禁报告的工作区文件。 |
| gate.requirements.checklist | (six spec-dimension questions) | 可插拔的关键问题清单:{ id, question, specDimension, required }。 |
| gate.requirements.minConfirmed | 6 | 必须通过的最少必需问题数(1..必需数量)。 |
| gate.requirements.interrogateTool | 'ask_user_question' | 其调用计为质询证据的工具名称。 |
| gate.tests.requirePassingRun | true | 最新测试运行未通过(或缺失)即为红灯。 |
| gate.tests.allowFailingRuns | 0 | 最新绿灯之后允许的失败运行次数,超过则红灯。 |
| gate.tests.requireCoverage | false | 开启则要求测试输出中包含覆盖率证据。 |
| gate.tests.minCoveragePct | 80 | 最低覆盖率百分比(0–100)。 |
| gate.tests.evalReports.enabled | false | 开启则将 dsh-eval 报告(dsh-auto-review 的评估引擎)并入测试证据。 |
| gate.tests.evalReports.dir | '.eval-reports' | 存放引擎报告的工作区相对目录。 |
| gate.tests.evalReports.file | 'report.json' | 目录内的报告文件名。 |
| gate.tests.evalReports.required | false | 当为 true 时,报告缺失即为红灯(否则跳过)。 |
| gate.consistency. | provider: 'fork'、model: null、tools: ['read','glob','grep']、timeoutMs: 120000、maxFindings: 5 | 本地一致性审查器的调节项(model: null = 主模型)。 |
| gate.review.engine | 'auto' | auto = 当存在 dsh-auto-review 判定记录时使用该记录,否则使用本地审查器;local = 始终使用本地审查器。 |
| gate.review.provider | 'fork' | 本地审查审查器的提供方(其 model/tools/timeoutMs/maxFindings 与 gate.consistency. 一致)。 |
配置错误会在加载时大声失败:无效的正则表达式、为空或重复的名称列表、超出范围的阈值,以及重复的检查清单 id 都会抛出异常,而不是静默地什么都不做。strict.patch.yml 是全门禁阻断覆盖层,它以 intensity: block 重述守卫行,开启所有模块并启用覆盖率要求。
工具与界面
| 界面 | 类型 | 说明 |
|---|---|---|
| doublecheck_skills | 工具 | 通过技能注册表接缝列出并加载该包内置的四个技能。 |
| doublecheck_spec | 工具 | 将经过质询的六维规格提交到会话日志和工作区 markdown 副本。 |
| doublecheck_report | 工具 | 将纪律证据汇总为交付报告(可选的按维度验证工作流)。 |
| /doublecheck status\|report\|on\|off | 命令 | 开关、模块、强度、阶段事实、汇总报告,以及持久的开/关覆盖。 |
| /gate status\|run\|config | 命令 | 实时检查清单进度、已确定的交付物/返工报告,以及生效配置。 |
| grill-requirements、red-green-tdd、delivery-review、delivery-proof | 技能 | 覆盖全部六个循环阶段的内置纪律技能。 |
| doublecheck-gate | 设置命名空间 | 可插拔检查清单:用户部分覆盖组合中的 gate. 值,并在加载时读取一次(applies: restart),可通过 ctx.settings.describe() 查看。 |
| strict.patch.yml | 覆盖层 | 在一个补丁层中,以 block 强度开启所有门禁,并启用覆盖率要求。 |
| dsh-doublecheck/invariant | 伴随行 | 通过宿主 invariants 注册表报告包自有的写入路径矛盾。 |
门禁阶段
交付门禁将会话的持久证据聚合为可配置的四阶段检查清单,并确定一个可交付 / 需要返工的决策。每个阶段仅折叠会话日志(重放即状态),因此一次运行在恢复或分叉后会以相同方式重新推导。
| 阶段 | 检查 | 证据来源 | 模型成本 |
|---|---|---|---|
| 需求质询 | 逐项确认关键问题检查清单(默认六个规格维度问题) | 已提交的 doublecheck_spec + ask_user_question 调用 | 无 |
| 测试证据 | 最新运行颜色、绿色之后的失败运行、可选覆盖率阈值、可选 dsh-eval 报告 | 会话日志中的 Shell 测试运行([exit code: N]、覆盖率百分比);当 gate.tests.evalReports.enabled 时的 dsh-eval 报告文件 | 无 |
| 实现一致性 | Diff ↔ 需求映射:每次编辑都必须服务于某个规格维度 | 本地分叉审查器(结构化发现,只读工具) | 一个子代理 |
| 审查结论 | 交付裁决;当存在持久化裁决记录时,engine: auto 会采用 dsh-auto-review 的记录,否则使用本地审查器 | autoReview/verdict / autoReview/rejection 事件,或本地分叉审查器 | 一个子代理(本地) |
红灯表示检查失败(缺少规格、最新运行失败、覆盖率低于最低要求、存在未映射的编辑、阻断性/重大问题)——每项都附带返工建议。警告和跳过项绝不会改变决定。该门禁将 dsh-auto-review 集成为弱依赖:当存在裁决记录时,review.engine: auto 会将其纳入,否则降级为本地审查器;gate.tests.evalReports.enabled 会将其评估引擎的 dsh-eval 报告(提示回归 / 压力 / 公平性套件)纳入测试证据,并在没有报告时如实跳过。该门禁绝不会合成审批请求。
示例报告
/gate run 返回以下 markdown——将其粘贴到 PR 描述中:
交付门禁报告
裁决:需要返工 — 2 个红灯项
门禁为红灯。请在计划模式下重新打开工作,在交付前重新检查未完成项。
1. 需求质询 — 通过
- [✔] 交付必须产生什么结果? — 规格维度“目标”已提交
- [✔] 范围内和范围外分别是什么? — 规格维度“范围”已提交
- [✔] 哪些可观察的检查能证明工作已完成? — 规格维度“验收标准”已提交
- [✔] 可能出现什么问题,每种情况下正确的行为是什么? — 规格维度“失败模式”已提交
- [✔] 当目标冲突时,要权衡什么;什么是可选的? — 规格维度“优先级”已提交
- [✔] 用户明确不想要什么? — 规格维度“非目标”已提交
2. 测试证据 — 失败
- [✔] 通过的测试运行 — 最新测试运行已通过
- [✔] 变绿后的失败用例 — 变绿后有 0 次失败运行(允许:0)
- [✖] 覆盖率证据 — 61% 覆盖率低于 80% 最低要求 — 返工:将覆盖率提升到配置的最低要求以上
3. 实现一致性 — 警告
- [⚠] [次要] src/telemetry.ts 在无需求的情况下被改动 — [次要] 该编辑添加了一个没有任何规格维度覆盖的指标
4. 审查结论 — 通过
- [✔] dsh-auto-review 结论 — 3 次调用已获 dsh-auto-review 批准(最新风险:低)
红灯项
1. tests/coverage — 61% 覆盖率低于 80% 最低要求 — 返工:将覆盖率提升到配置的最低要求以上*
2. consistency/finding-1 — [次要] 该编辑添加了一个没有任何规格维度覆盖的指标 — 返工:src/telemetry.ts 在无需求的情况下被改动
审计
- 审查引擎:dsh-auto-review
- 生成时间:2026-08-14T12:00:00.000Z
- 仅计数、ID 和判定结果:不嵌入任何文件内容或会话文本,识别出的机密信息会被脱敏。
CI 输出
/gate run 还会写入一个 gate-report.json(与 gate-report.md 并列,是相同已定状态的 lossless JSON)。doublecheck-gate CLI 将该文件转换为 GitHub Actions 可读的机器可读输出:
JSON(PR 评论 / 状态负载)
doublecheck-gate --format json --input gate-report.json
SARIF 2.1.0(代码扫描上传 / 状态检查)
doublecheck-gate --format sarif =24
pnpm run build # tsc --noEmitOnError (lib/ is committed)
pnpm run prepare # tsc --noEmitOnError (git-install channel)
pnpm run prepublishOnly # build + full test suite
pnpm run typecheck # tsc --noEmit + tests tsconfig
pnpm run lint # eslint src tests
pnpm test # vitest run
pnpm run test:coverage # vitest run --coverage
pnpm run pack:check # build + pack the tarball
主题
dsh、dsh-plugin、deepseek-harness、engineering-discipline、requirements、guard、skill、quality-gate、delivery-gate
贡献者
- @PerryLink — 创建者与维护者:grill → design → red → green → review → verify 纪律循环、四阶段交付门禁、五语言文档,以及 CI/发布流水线。
PerryLink DSH 插件家族
本项目是由 PerryLink 维护的 40 个 DeepSeek Harness 插件之一。如果这个插件对你有帮助,其他的很可能也会:
| 插件 | 一句话简介 |
|---|---|
| dsh-auto-review | 审批链上的第二模型自动审查,默认失败关闭 | |
| dsh-background-agents | 持久化后台子代理,带 Web UI 侧边栏、消息传递与中断 | |
| dsh-budget | DeepSeek Harness 的成本治理:预算、碳排与延迟集于一个面板。 | |
| dsh-checkpoint-rewind | 等同于 Claude Code /rewind:快照、会话分叉、一键恢复 | |
| dsh-claude-move | 将 Claude Code 会话、记忆、技能与 CLAUDE.md 迁移到 DSH | |
| dsh-click | 面向 DeepSeek Harness 的跨平台原生桌面控制——Windows 优先。 | |
| dsh-composer-history | Web 输入框的终端风格输入历史:方向键、Ctrl+R 搜索 | |
| dsh-data-quality | 数据集质量检查与引用交叉核对(此处消费的可选数值桥接) | |
| dsh-defend | 面向 DeepSeek Harness 的提示注入、越狱与密钥泄露防御。 | |
| dsh-draw | 面向 DeepSeek Harness 的统一静态图像生成路由。 | |
| dsh-fast | 面向 DeepSeek Harness 的只读性能诊断。 | |
| dsh-fund-research | 面向中国公募基金的确定性研究报告 | |
| dsh-github | 面向 DSH 的 GitHub PR/issue 集成,每次写入均需审批 | |
| dsh-industry-research | 行业研究编排,通过本插件的 ctx.researchReport.assemble 封存其交付物 | |
| dsh-library | 面向 DeepSeek Harness 的本地文档知识库。 | |
| dsh-local-ai | 面向 DeepSeek Harness 的本地模型(Ollama)集成。 | |
| dsh-lsp-actions | 通过语言服务器实现 LSP 诊断、格式化、补全、代码操作和重命名 | |
| dsh-mask | PII 脱敏中间件:在模型边界处匿名化,在显示层还原 | |
| dsh-mcp-panel | 只读 MCP 运行时面板:/mcp 命令 + 设置标签页,显示状态、工具和错误 | |
| dsh-memento | 需审批的跨会话记忆:ctx.memory 接缝 + SQLite + memory 工具 | |
| dsh-observe | 面向 DeepSeek Harness 的 OpenTelemetry 和 Langfuse 可观测性导出器。 | |
| dsh-output-styles | 与 Claude Code outputStyles 等价的运行时样式切换 | |
| dsh-reach | 多渠道审批/提问桥接:微信/Telegram/飞书,会话控制台 | |
| dsh-permission-rules | Claude Code 风格的声明式 allow/deny/ask 权限规则,带审计 | |
| dsh-personal-directive | 带顶栏开关的个人指令注入器(框架版) | |
| dsh-plugin-guide | 以按需智能体技能形式提供的插件开发知识库 | |
| dsh-plugin-doctor | 面向 DSH 插件的零依赖静态 + 沙箱冒烟检测器 | |
| dsh-research-report | 可验证的研究报告引擎:内容寻址的证据账本和密封版本 | |
| dsh-score | 面向 DeepSeek Harness 插件的多维度质量评分。 | |
| dsh-session-pin | 在 Web 侧边栏中固定会话,并保持持久排序 | |
| dsh-session-sync | 面向 DeepSeek Harness 的跨设备会话同步——你的会话存储的专用 git 镜像。 | |
| dsh-skill-pack-security | 安全审计技能包:密钥扫描、依赖和供应链审查 | |
| dsh-talk | 面向 DeepSeek Harness 的语音优先会话循环:对它说话,听它回答。 | |
| dsh-test-drive | 面向 DeepSeek Harness 插件的隔离安装与冒烟测试驱动。 | |
| dsh-ticktick | TickTick/滴答清单任务桥接:会话头部面板 + 11 个工具 | |
| dsh-translate | 面向 DeepSeek Harness 的供应商参数转换和确定性 JSON 修复。 | |
| dsh-wechat | 微信 ↔ DSH 桥接(腾讯 iLink 机器人):文本/图片/文件/语音,聊天内审批 |
| dsh-autotier | 自动强/廉价模型层级路由,带确定性风险防护和 /tier 命令 | |
| dsh-catalog | PerryLink 系列的 DSH Desktop Market 标准目录源 | |
| dsh-cert-mcp | 只读 MCP 服务器,公开认证注册表:等级、快照和五维证据 | |
| dsh-kit | 一键安装核心系列的入门包 | |
| dsh-plugin-certification | 社区认证注册表,带可复现检查的等级和徽章 | |
| dsh-plugin-kit | PerryLink DSH 插件共享的零运行时依赖工具包 | |
| dsh-plugin-portal | 零依赖静态门户,将整个插件系列渲染为单个页面 | |
| dsh-plugin-upgrade-015 | 合并的 0.1.3-alpha.1 → 0.1.5-rc.1 升级通道卡片,外加零依赖接缝扫描器 | |
| dsh-team-rooms | 跨会话团队房间:共享消息总线、任务板和时线 | |
从 DSH Desktop Market 安装
所有 PerryLink 插件均可在内置的 DSH Desktop Market 中浏览:Market → Sources → add source → 粘贴 https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json → 选择它。安装仍需通过 Market 的 npm 身份验证和你的确认。
许可证
Apache License 2.0 © 2026 dsh-doublecheck 贡献者扫码进群