Local-first learning mode: cross-session learning threads with per-source explanations.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:yuezengwu/dsh-explain
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
dsh-explain is a learning-mode plugin for DeepSeek Harness. It turns useful concepts from completed work into structured explanations, schedules lightweight reviews, and lets you inspect or correct what it learns about you.
The primary agent stays untouched. Explain uses its own model calls, scheduler, context, and local SQLite database.
See the learning loop

The 28-second preview runs against real assembled DSH Web 0.1.2-rc.1 with deterministic, private fixture data. Watch the higher-quality MP4 or read the recording contract.
| Capture | Review | Adapt |
|---|---|---|
Turn a finalized answer or selected text into an editable /explain draft. Nothing submits automatically. |
Revisit due concepts through recall, application, and distinction questions. | Inspect explanation preferences and topic familiarity, then correct or forget an inference. |
Quick start
DSH 0.1.7-rc.2 support is available on main and has not been tagged as a new Explain release. It preserves the thirteen previously verified hosts. The latest Explain release, v0.3.1, supports DSH through 0.1.6-alpha.2. See the compatibility contract for exact source revisions and evidence.
For the current DSH release candidate, install the current development branch:
npx @deepseek-ai/dsh@0.1.7-rc.2 plugin --profile web add github:yuezengwu/dsh-explain#main
npx @deepseek-ai/dsh@0.1.7-rc.2 --profile web
For the existing tagged release, keep DSH 0.1.6-alpha.2 and install github:yuezengwu/dsh-explain#v0.3.1. As checked on 2026-09-28, npm latest and next both resolve to 0.1.7-rc.2; alpha remains 0.1.7-alpha.2. The commands above pin rc.2 so a future dist-tag change cannot silently change the host version.
Open Settings → Learning, choose an auxiliary provider and model, enable learning mode, and save. Explain observes only future completed top-level turns; it does not scan existing history.
Git-hosted plugins build during installation. If pnpm requests build approval, add the printed dsh-explain entry to the profile's pnpm-workspace.yaml, then repeat the install command. For automated runs that should not open a browser, start DSH with --no-open.
v0.3.1 adds DSH 0.1.6-alpha.2 support while retaining all eight previously verified hosts. It fixes source navigation and Explain shortcuts for the new Session API, with live plugin disable/re-enable coverage. Existing learning data remains compatible (SQLite schema 4, backup v3).
Start from the work itself
| Entry point | What happens |
|---|---|
/explain <request> |
Requests an explanation using the current session as bounded source context. |
| Explain selected text | Creates an editable /explain --selection … draft from visible text. |
| Learn from this answer | Creates an editable draft tied to the exact finalized assistant turn. |
| Automatic evaluation | May add one useful explanation after an eligible turn, within your configured budget. |
/review |
Opens or resumes a local review round in the Learning tab. |
Each explanation answers three practical questions: What is it? Why does it matter here? What is the common pitfall? Choose Got it to close the card, or Not yet for a different explanation.
Review, then correct the model
Concepts marked Got it enter a local spaced-review schedule. Learning → Today's review selects up to three due concepts. Each concept advances from recall to application to distinction after successful answers; an unsuccessful answer repeats that skill next time. The auxiliary model evaluates each answer as Mastered, Partial, or Forgotten and schedules the next review at a deterministic interval. Partial or forgotten concepts are treated as learning again and can receive a new explanation; an active explanation pauses that concept's quiz.
Learning → Learning overview exposes the current judgments about explanation length, structure, examples, terminology, and topic familiarity—with confidence and source links. You can correct an inference, forget it, or set an explicit preference. Precedence is fixed and visible: explicit preference → user correction → model inference.
One learning thread, many sessions
- Every
$DSH_HOMEowns exactly one Explain learning thread; resumes and forks never copy it. - Every source session has at most one explanation awaiting feedback.
- One global scheduler serializes explanations, reviews, autonomous evaluation, rephrases, and compaction.
- Autonomous evaluation has a persistent rolling 24-hour budget, configurable in Settings.
- Rephrasing still works if a source session is later deleted because only a bounded source summary is retained.
Local-first by design
| Data | Behavior |
|---|---|
| Learning thread | Stored in $DSH_HOME/dsh-explain/v1/thread.sqlite. |
| Enablement and model settings | DSH 0.1.7 stores live fields in the active profile patch; older hosts use $DSH_HOME/settings.yaml. Explain imports its own legacy section once per profile, preserves explicit profile overrides and the original file, and leaves storage paths unchanged. |
| Source material | Reduced to bounded capsules; rephrasing retains at most a 2,000-character restricted summary. |
| Global learning context | Sent with bounded source text to the configured auxiliary provider. Local storage does not imply offline model inference. |
| Export | A versioned local backup excludes private source summaries and filters common credential/path formats in public text. Arbitrary private prose may remain; review before sharing. |
| Clear | A typed CLEAR confirmation atomically removes learned content while preserving runtime settings and the active budget window. |
Explain uses first-party DSH conversation, composer, assistant-action, and settings extension points. It does not require patches to DSH or other plugins.
Compatibility and verification
| Check | Current result |
|---|---|
| DSH compatibility | 0.1.7-rc.2 published packages; 0.1.2-rc.1, 0.1.3-alpha.1, 0.1.3-alpha.2, 0.1.5-alpha.1, 0.1.5-alpha.2, 0.1.5-rc.1, 0.1.5-rc.2, 0.1.5-rc.3, 0.1.6-alpha.1, 0.1.6-alpha.2, 0.1.7-alpha.1, 0.1.7-alpha.2, 0.1.7-rc.1, 0.1.7-rc.2 assembled source |
| Unit and integration | 90 tests on each source version |
| Assembled DSH Web | 7 shared scenarios; 0.1.7 adds legacy-settings migration and restart coverage |
| Explain-owned shortcuts | 3 M6 scenarios; 0.1.6-alpha.2 and all 0.1.7 hosts also exercise live disable/re-enable |
| Production package | Frozen install, build and pack |
| Real auxiliary model | DSH 0.1.6-alpha.1 + deepseek-flash: explanation, rephrase, corrected preference, correct/incorrect review, exact-answer command, export and clear |
See the acceptance matrix for coverage and the 2026-09-15 real-model acceptance for the current model route, sample, screenshots, and test limits. DSH remains a developer preview; Explain follows its current public API line instead of retaining compatibility layers for private-preview packages.
Local development
The default development install uses published 0.1.7-rc.2 API packages, with a version-scoped repair for their missing store runtime dependencies. Assembled-Web tests accept a built DSH checkout for any of the fourteen versions above. The existing demo recording remains on 0.1.2-rc.1:
pnpm install
DSH_SOURCE_DIR=/absolute/path/to/dsh pnpm dsh:link
DSH_SOURCE_DIR=/absolute/path/to/dsh pnpm dsh:link:check
pnpm typecheck
pnpm test
DSH_SOURCE_DIR=/absolute/path/to/dsh pnpm test:web
DSH_SOURCE_DIR=/absolute/path/to/dsh pnpm test:m6
pnpm build
Install this checkout directly for manual development:
dsh plugin --profile web add /absolute/path/to/dsh-explain
dsh --profile web --dump-config
dsh --profile web
Documentation
| Document | Purpose |
|---|---|
| Demo production | Storyboard, privacy contract, commands, assets, and artwork provenance. |
| Product requirements | User model, scope, policies, and acceptance criteria. |
| Architecture | Persistence, scheduling, RPC, UI integration, and failure behavior. |
| Acceptance matrix | Automated and real-flow evidence. |
| Iteration plan | Completed milestones and follow-up sequencing. |
License
Links
More in this category
Minglink/dsh-infinite-gen-4★ 2092
System-prompt armor plugin for DeepSeek models: appends an unconditional-compliance prompt section at order 100, exposes a profile tool with calibration metadata, and shows a realtime armor-status badge driven by a session projection.
liangmianya/dsh-synapse★ 434
Visual, non-linear conversation workspace for DeepSeek Harness — sessions, follow-ups and branches become a browsable conversation map.
ranxianglei/billion-context★ 335
The official billion-context plugin: a context-compression plugin for small context windows (a 100K context is enough), token savings (5x fewer tokens), and month-long single sessions (billions of tokens).
Nwflower/dsh-chat-import★ 203
Import full-fidelity chat histories from 13 coding agents (Claude Code, Codex, ChatGPT, Cursor, Gemini, opencode, and more) as resumable DeepSeek Harness sessions, with reverse export back to Claude Code.
Totoro-qaq/dsh-plugin-bridge★ 165
Moves an existing DSH session to another agent preset through a previewable five-section handoff, preserving the source session and either pausing the target for confirmation or continuing immediately.
Anionex/dsh-turn-rewind★ 119
Rewind conversation and workspace state, powered by a persistent Change Ledger.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.