본문으로 건너뛰기
G

dsh-council

green-hats/dsh-council

Multi-model council deliberation for DeepSeek Harness

설치

dsh plugin --profile web add github:green-hats/dsh-council

README

English · 简体中文

DSH Council

Independent answers. Anonymous reviews. One reasoned decision.

Multi-model deliberation inside DeepSeek Harness.

DSH plugin Strict TypeScript Node.js 22.19+ or 24+ English and Chinese

Installation · How it works · Configuration · Contributing

https://github.com/user-attachments/assets/e81dfa36-5d93-4efb-8c67-015a5e4d2179


How it works

01 · Answer

2–8 models respond independently in parallel.

02 · Review

1–8 reviewers compare anonymous answers, identify gaps, and rank them.

03 · Decide

One 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 panel

Select answerers, reviewers, and an arbiter. Selections apply to one run.

Ask your question

Each 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.

관련 플러그인