dsh-council
green-hats/dsh-council
Multi-model council deliberation for DeepSeek Harness
安装
dsh plugin --profile web add github:green-hats/dsh-councilREADME
English · 简体中文
DSH Council
Independent answers. Anonymous reviews. One reasoned decision.
Multi-model deliberation inside DeepSeek Harness.
Installation · How it works · Configuration · Contributing
https://github.com/user-attachments/assets/e81dfa36-5d93-4efb-8c67-015a5e4d2179
How it works
01 · Answer2–8 models respond independently in parallel. |
02 · Review1–8 reviewers compare anonymous answers, identify gaps, and rank them. |
03 · DecideOne arbiter weighs the answers and reviews to produce a final recommendation. |
|
Your models. Use configured DSH providers and credentials. Choose models separately for each role, with reuse across roles. English and Chinese follow DSH's language setting. Inspectable results. Confidence notes, consensus, disagreements, blind spots, model identities, and average rankings. Original answers and reviews remain in DSH's child sessions. |
||
Installation
1. Install DSH
Install DeepSeek Harness (dsh) by following the official installation guide.
2. Install DSH Council
| Node.js | pnpm | DeepSeek Harness |
|---|---|---|
^22.19.0 || >=24.0.0 |
11.7.0 |
At least two configured, authenticated models |
Install the prebuilt package from npm:
npx --yes @deepseek-ai/dsh@latest plugin --profile web add @greenhats/dsh-council@0.1.4
npx --yes @deepseek-ai/dsh@latest web
Restart DSH Web if it is already running.
No source checkout or compilation is required. See Contributing for development setup.
For Desktop DSH, install the bundle into the profile used by the desktop app; a separate CLI web profile is not necessarily shared. This release adapts both the legacy start() interface and Desktop DSH 0.2.1-rc.5's startActivation() interface. See release readiness for qualification results.
Council requires fresh child context and explicit model/structured-output support. On the activation API it requires a managed local provider (the default spawn), reinstalls its persona and durable per-run tool policy before the first prompt and on cold continuation (no Web in chat-background mode; Web remains available in topic-only mode), and rejects presets that suppress the Council persona. Only reviewers and the arbiter receive structured_output during their original activation; shell, file, and delegation tools remain blocked.
Chat integration in 0.1.3
Version 0.1.3 retains new sessions before model selection, records the real question, and renders a Council response in conversation order. Expand the execution panel to inspect participants' public reasoning/text; the final prose is separate from the collapsed audit. This uses the Desktop 0.2.1-rc.5 Client APIs; older clients retain a command-report fallback. The npm command above pins 0.1.4; installing it does not restart the app or update other profiles automatically.
After adding this Client half, fully quit and reopen Desktop DSH: refreshing the page alone does not invalidate the Host's cached package manifest. See chat integration and acceptance checks.
Context-integration MVP in 0.1.3
By default, choose current chat background / topic only / cancel before the roster picker. Chat mode takes a consistent cut of the exact live parent and current Inbox. Select original-text sources, then review the complete public material and every receiving route in the native confirmation. Reselecting invalidates earlier consent. Assistant proposals remain unverified; tool evidence is opt-in. Prior Council history contributes only a reliably separated compact result. No model summarizes your history.
- Chat mode denies Web, files, Shell and delegation. Attachments are reference-only/excluded names: no body reading or OCR.
- Oversized material fails explicitly or offers topic-only; nothing is silently truncated. Every model needs a trustworthy context window from metadata or a verified exact-key override. Unknown windows never dispatch chat requests. Older Hosts lacking capture capabilities offer explicit topic-only/cancel; missing authoritative Inbox may offer explicitly approved surface-only history.
- Only the compact ModelReturn enters the original chat: answer, decision changes, consensus/disagreements, necessary sources, anonymous coverage and limitations. Full mappings/rankings/raw process stay in audit details and separate children. No extra parent summarization request is made; the next ordinary follow-up admits the handoff.
- Only consented packets persist. Reopening does not restore cleared pending input. Records and restricted cold children remain observable, but an interrupted whole Council run is not automatically resumed. Editing original text cannot recall copies already sent to providers or child sessions.
Local engineering and isolated Host qualification are complete; npm publication does not install the bundle into your Desktop profile. Complete native-preview usability, real follow-up conversations, narrow layouts and themes still need authorized device acceptance. See the implementation report.
Usage
Enter this command in a DSH Web conversation:
/council
Choose your panelSelect answerers, reviewers, and an arbiter. Selections apply to one run. |
Ask your questionEach participant starts in a fresh independent session. First choose selected chat excerpts with a complete export preview, or use only the topic. |
Example question
Compare PostgreSQL leasing with a managed message queue for three workers. Explain how each recovers when a worker crashes after an external side effect but before acknowledging the job. Recommend one design and state its assumptions.
|
Cost 4–17 model participants per run. Each may make multiple requests; only topic-only mode permits Web tools. |
Privacy Your topic, consented selected chat excerpts, and intermediate artifacts go to selected providers. No chat body is exported before consent. See Security. |
Accuracy Model agreement does not guarantee correctness. Review the evidence and confidence notes. |
Configuration
Defaults and overrides
The default offers chat-background selection; missing trusted windows or capture capability requires an explicit topic-only choice. To adjust limits, set config on the dsh-council entry in your DSH profile:
- id: dsh-council
config:
answerMaxTokens: 16384
reviewMaxTokens: 16384
arbiterMaxTokens: 16384
childTimeoutMs: 300000
runTimeoutMs: 900000
subagentProvider: spawn
contextMode: chat # topic-only skips all history capture
contextCaptureAttempts: 3
contextCaptureTimeoutMs: 5000
contextPreparationTimeoutMs: 30000
contextMaxSources: 64
contextCandidateMaxBytes: 524288
contextPacketMaxBytes: 65536
contextMaxTokens: 4096
contextAnswerArtifactTokens: 2048
contextReviewArtifactTokens: 2048
contextArbiterOutputTokens: 4096
contextEnvelopeReserveTokens: 8192
contextSafetyMarginTokens: 2048
contextWindowOverrides: {} # exact provider/model -> verified positive window
Token limits apply per model request. Timeouts are in milliseconds; runTimeoutMs must be at least childTimeoutMs.
Chat output caps are the smaller of the existing stage cap and artifact budget. UTF-8 bytes and heuristic token estimates are checked separately. Human waiting is excluded from preparation/deliberation deadlines; actual requests recheck system text, messages and tool schemas. TokenMeter is not a provider-exact tokenizer.
Contributing
Development setup · Tests · Bug reports →
Acknowledgements
Thanks to Andrej Karpathy for llm-council, which inspired this project.
Review dimensions also draw on OpenRouter Fusion.