dsh-doc-impact
Deterministic documentation impact engine for DeepSeek Harness
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:xarleyn/dsh-doc-impact说明文档
阅读完整 README ↗Workspace configuration
Create .dsh/doc-impact.yml in the project the agent works on:
version: 1
defaults:
mode: remind # remind | require-review | require-resolution | require-update
scope: turn # turn | session
changeDetection: auto # auto | git | filesystem
rules:
- id: auth-docs
description: Authentication behavior documentation
code:
include:
- packages/auth/**
- packages/server/src/auth/**
exclude:
- "**/*.test.ts"
docs:
- docs/authentication.md
direction: code-to-docs # code-to-docs | docs-to-code | bidirectional
relation: documents # documents | specification | synchronized | related
mode: require-resolution
# Concise form is also accepted:
- id: configuration-contract
code: [packages/config/**]
docs: [docs/configuration.md]
direction: bidirectional
relation: specification
Personal overrides belong in .dsh/doc-impact.local.yml (add it to
.gitignore):
disabledRules:
- legacy-docs
Plugin-level defaults (profile patch)
- insert:
- id: doc-impact
name: dsh-doc-impact
config:
enabled: true
configFile: .dsh/doc-impact.yml
defaults:
mode: remind
safety:
maxReminderRounds: 2
onLimit: allow # allow | warn | error
changeDetection:
maxSnapshotFiles: 10000
debug: false
Plugin Configuration UI
The plugin ships a browser half (lib/client.js, exports "./client"), so
Settings → Plugins → Plugin Configuration shows a "Doc Impact" card bound
to the doc-impact settings namespace. It follows the first-party card model:
- staged edits — nothing writes before Save; Discard drops drafts;
- the header carries an unsaved badge while drafts exist;
- Save stays disabled until there is something to write (and while a draft is invalid or a save is in flight);
- every field shows whether saving would leave a user-layer override and, when one stands, a per-field Reset that reverts to the composition layer.
Editable fields: enabled, configFile, default mode, maxReminderRounds,
onLimit, maxSnapshotFiles, debug. The profile patch row's config: acts
as the composition base under these user edits; the engine reads the merged
view live (toggling enabled silences the plugin without a restart).