PerryLink/dsh-doublecheck ↗★ 26
dsh-doublecheck
Delivery quality gate for DeepSeek Harness: grill the requirements, test the implementation, prove the delivery, and gate the handoff with a deliverable/rework decision.
AI 分析
适合需要在交付前进行需求对齐、自动化测试验证和质量把控的开发团队。
インストール
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:PerryLink/dsh-doublecheckドキュメント
README 全文を読む ↗Configuration
All tunables are Schemastery Config fields (changeable from cordis.yml). An id-targeted override replaces the whole row — restate every key you need. cordis.patch.yml documents each key inline; Schema defaults are the single source of tuning defaults.
| Key | Default | Meaning |
|---|---|---|
specFile | 'doublecheck-spec.md' | Workspace file for the committed spec markdown (grill row). |
reportFile | 'doublecheck-report.md' | Workspace file for the delivery report (grill row). |
reportVerify | true | Run the verification workflow by default (grill row). |
verifyProvider | 'fork' | Subagent provider for the per-dimension checkers (grill row). |
verifyMode | 'all' | all = one parallel checker per dimension; single = one combined checker (grill row). |
intensity | 'remind' | Enforcement strength of the grill, red/green, and review gates (remind / warn / block). |
enableByDefault | true | Master switch for sessions without a /doublecheck on|off record. |
language | 'en' | Injected reminder/deny/review/gate prose language (en / zh). |
guardTools | ['edit', 'write'] | Mutation tool names both gates watch. |
vagueTaskMaxChars | 200 | Longer tasks are never treated as vague. |
remindOnce | true | Inject each reminder at most once per session (durable across restarts). |
testToolNames | ['bash', 'pwsh'] | Shell tool names that can run tests. |
testCommandPatterns | (pnpm/npm/yarn/bun test, pytest, go/cargo/make test, node --test, deno test, uv run pytest) | Regexes a command must match to count as a test run. |
testFilePatterns | (test dirs, *.test.* / *.spec.*) | Regexes identifying test files — always editable, exempt from the red gate. |
modules.grill | true | Off disables the grill gate. |
modules.tdd | true | On enables the red/green evidence gates. |
modules.adversary | false | On enables the forked critic review at green. |
adversaryModel | null | Critic model route; null = main model self-reviews. |
adversaryProvider | 'fork' | Subagent provider the critic runs on. |
adversaryMaxFindings | 5 | Findings cap (1–20) injected into the session. |
adversaryTools | ['read', 'glob', 'grep'] | Critic tool allowlist; keep it read-only. |
adversaryTimeoutMs | 120000 | Hard time budget for one critic run. |
gate.enabled | true | Master switch for the gate panel and the turn-boundary red notice. |
gate.planSuggestion | true | Append the plan-mode re-check suggestion to red reports. |
gate.reportFile | 'gate-report.md' | Workspace file for the gate report. |
gate.requirements.checklist | (six spec-dimension questions) | Pluggable key-question checklist: { id, question, specDimension, required }. |
gate.requirements.minConfirmed | 6 | Minimum required questions that must pass (1..required count). |
gate.requirements.interrogateTool | 'ask_user_question' | Tool name whose calls count as interrogation evidence. |
gate.tests.requirePassingRun | true | A non-passing (or missing) latest test run is a red light. |
gate.tests.allowFailingRuns | 0 | Failing runs after the latest green allowed before red. |
gate.tests.requireCoverage | false | On requires coverage evidence in the test output. |
gate.tests.minCoveragePct | 80 | Minimum coverage percentage (0–100). |
gate.tests.evalReports.enabled | false | On folds the dsh-eval report (dsh-auto-review's eval engine) into the test evidence. |
gate.tests.evalReports.dir | '.eval-reports' | Workspace-relative directory holding the engine's report. |
gate.tests.evalReports.file | 'report.json' | Report file name inside the directory. |
gate.tests.evalReports.required | false | A missing report is a red light exactly when true (a skip otherwise). |
gate.consistency.* | provider: 'fork', model: null, tools: ['read','glob','grep'], timeoutMs: 120000, maxFindings: 5 | The local consistency reviewer's knobs (model: null = main model). |
gate.review.engine | 'auto' | auto = dsh-auto-review verdict records when present, else the local reviewer; local = always local. |
gate.review.provider | 'fork' | The local review reviewer's provider (its model/tools/timeoutMs/maxFindings match gate.consistency.*). |
Misconfiguration fails loud at load: invalid regexes, empty or duplicated name lists, out-of-range thresholds, and duplicate checklist ids throw instead of silently doing nothing. strict.patch.yml is the all-gates-block overlay that restates the guard row at intensity: block with every module on and the coverage requirement enabled.