DSH Plugins Marketplace

DSH Plugins

Skills

/

Models & Providers

/

dsh-advisor-group

x

dsh-advisor-group

Manifest valid

Consult multiple expert advisor models in a retro CRT chat-group card: one ask_advisors call runs an auto-deepen pipeline (driver deep-question, advisor relay, synthesis conclusion) with SSE streaming

UI (client)hasBundlePatch

dsh-advisor-group

A DeepSeek Harness (DSH) plugin that lets the main model consult multiple expert advisor models in a retro chat-group card — for professional, long-tail world-knowledge, high-risk, or uncertain questions.

dsh-plugin

📖 中文文档 / Chinese: README.zh.md


1788679983177

✨ Features

  • Auto-deepen consultation pipeline — one ask_advisors call runs up to maxRounds rounds automatically: each round is a driver deep-question → advisor A → advisor B (sees A) → advisor C (sees A+B) → … sequential relay, closed by a driver-generated synthesis conclusion.
  • Zero-config driver model — the driver formulation of deep follow-ups reuses the current agent's provider/model, so no extra API key or model setup is needed; it falls back to discussion.driverModel when the session header is unavailable.
  • Three ways to activate — @顾问群 mention (force-start), same question repeated 3 times without resolution, or main-model self-assessed confidence below the threshold.
  • Optional Jev semantic pre-classification (off by default) — when trigger.jev.enabled is on, a configured Jev model judges non-force-started consultations first (escalation / high-risk / web-search fit, thresholds under trigger.jev.*); if Jev is unavailable the local rules-based classifier still decides. With trigger.jev.useEnglishState, the judge reads the caller-supplied English gist (questionEn) instead of the Chinese question — display and session records stay Chinese.
  • Retro CRT chat cards — green/amber/blue CRT themes, scanlines, LIVE/DONE headers, auto-expanded thinking panel with auto-scroll; advisor Markdown rendered with a link-protocol whitelist (headings, lists, code, quotes, links, tables).
  • Provider presets (11 platforms · 26 presets) — DeepSeek, Moonshot Kimi, Kimi Code, Aliyun Bailian, Zhipu AI, OpenAI, Claude, Gemini, SiliconFlow, AIHubMix, OpenRouter (OpenAI/Anthropic-compatible variants included).
  • Security-minded by design — API keys use official SecretField semantics (never returned to the browser; apiKeysByProvider key history is server-side only), SSRF-guarded diagnostics (https-only / loopback, no IP literals, no redirects), per-boot token auth on /advisor-group/* routes, and an atomic configurable daily consultation cap (default 50, can be disabled) persisted across restarts.
  • Runtime toggle — toggle_advisor_group enables/disables the plugin and persists the flag to settings.

✅ Compatibility

SurfaceStatus
HarnessDeepSeek Harness 0.1.7-rc.2
Node^22.19.0 || >=24.0.0
PlatformsDSH Web (client bundle) + headless host logic

📦 Installation

# 1. Install the plugin (one package, everything included)
dsh plugin --profile web add dsh-advisor-group

# 2. Restart DSH web
npx @deepseek-ai/dsh web

From source (development)

npm install --legacy-peer-deps --no-audit --no-fund
npm run build
dsh plugin --profile web add ./dsh-advisor-group-<version>.tgz   # after npm pack (version from package.json)

🚀 Quick start

image
  1. Restart DSH web and hard-refresh the browser (Ctrl+Shift+R).
  2. Go to Settings → Plugins → Advisor Group: configure your advisors (provider route + model; use 获取模型列表 to pull the authoritative model list) and tune maxRounds, thresholds, and the UI theme.
  3. Just start a conversation:
    • type @顾问群 in your question to force a consultation, or
    • ask a professional/uncertain question — the plugin escalates automatically when appropriate.

ask_advisors tools available to the model: ask_advisors, toggle_advisor_group.

⚙️ Configuration

KeyTypeDefaultDescription
enabledbooleantrueEnable advisor group
discussion.maxRoundsnumber2Total rounds of the auto-deepen pipeline (each round = driver question + all advisors in relay)
discussion.maxAdvisorsPerCallnumber3Max advisors per call (1–10)
discussion.autoDeepenbooleantrueRun the auto-deepen pipeline (driver follow-ups + final synthesis)
discussion.driverModelobject–Fallback driver model {provider, model} when the session header cannot be read
discussion.advisorTimeoutMsnumber600000Per-advisor call timeout (ms, 1000–600000), applied to both channels
discussion.driverTimeoutMsnumber600000Driver generation timeout (deep-question / conclusion; ms, 1000–1200000)
discussion.advisorToolsstring'readonly'Global default advisor tool scope when an advisor sets no own tools: readonly / all (every session-visible tool incl. writable — elevated risk, see Security) / off. Tool calling needs the direct-http (OpenAI/Anthropic) channel.
quota.enabledbooleantrueEnable the daily new-consultation cap (cost safety valve)
quota.maxPerDaynumber50Max new consultations per UTC day (1–100000); ignored when quota.enabled is false
trigger.requireClassifierbooleantrueRun the pre-classifier before starting
trigger.allowWebFallbackbooleantrueAllow classifier to recommend web search
trigger.confidenceThresholdnumber0.6Escalate when main-model confidence is below this
trigger.jev.enabledbooleanfalseUse the external Jev model for semantic pre-classification of non-forced consultations; falls back to the local rules-based classifier when Jev is unavailable
trigger.jev.provider / trigger.jev.modelstring'typesafe' / 'jev-latest'Jev route (typesafe or openrouter) and model; key via trigger.jev.apiKey (secret) or trigger.jev.apiKeyEnv; optional baseURL, timeoutMs (default 10000)
trigger.jev.confidenceThresholdnumber0.6Escalate when Jev answers needsAdvisor yes (or its 0–1 score reaches this value)
trigger.jev.highRiskThresholdnumberfollows jev.confidenceThresholdFlag high-risk when Jev answers high_risk yes (or its 0–1 score reaches this value); unset = follows trigger.jev.confidenceThreshold
trigger.jev.useEnglishStatebooleanfalseJudge using the caller-supplied English gist (questionEn) instead of the Chinese question; display and session records stay Chinese
ui.themestringretro-greenChat card theme (retro-green / retro-amber / retro-blue)
ui.showTimestampsbooleantrueShow timestamps
ui.autoExpandbooleantrueAuto-expand card
advisors[].toolsstring–Per-advisor tool-scope override (readonly/all/off; unset follows the global default)
advisorsarray[]Advisor list (provider/model/baseURL/apiKey/apiKeyEnv/protocol…, keys are role('secret'))

discussion.parallel and discussion.stopOnConsensus are deprecated leftovers kept only for stored-config compatibility.

🔒 Security & privacy

  • Direct API keys can be stored in the DSH settings.yaml (marked secret, never returned to the browser by describe); prefer apiKeyEnv (env-var mode) if you don't want keys on disk.
  • /advisor-group/* routes use a per-boot shared token for local single-user use — not multi-user auth. Add a reverse-proxy auth layer before LAN exposure.
  • Diagnostics endpoints resolve the real key server-side and validate the target URL against an https-only / loopback SSRF guard; DNS-rebinding protection is a documented out-of-scope limitation.
  • The daily consultation cap (configurable via quota.*; default 50; can be disabled) is persisted to $DSH_HOME/storages/advisor-group/daily-guard.json (UTC day key), so restarts don't reset it.
  • Classifier shadow mode appends one observation sample per non-forced classification (read-only /advisor-group/shadow), used for threshold tuning only — never influences behavior.
  • advisorTools: 'all' is an elevated-risk scope. It exposes every session-visible tool to the advisor models, including writable/execution ones (pwsh, bash, write, config/SSH tools), executed through the official guarded pipeline. Only enable it for advisors you trust (e.g., your own local models), keep them on the direct-http channel, and note that every non-read-only invocation is logged with console.warn for audit. Prefer the default readonly (read/grep/glob/web_search/web_fetch/scan_discover/list_imported_sessions) or off.

⚠️ Known limitations

  • A hard crash of the DSH host can leave an already-open card showing LIVE until the page is refreshed (a disconnect notice now appears); refresh restores the true state from the session log.
  • Risk notes (truncation / cancellation / caution hints) are heuristically extracted from advisor text: users see them on stopped or completed cards and in the session log, and the main model receives them in the ask_advisors result; the heuristic may miss or over-trigger.

🛠️ Development

npm install --legacy-peer-deps --no-audit --no-fund
npm run typecheck
npm test        # vitest suite, incl. provider streaming contracts against a local fake LLM server
npm run build   # tsdown; client bundle must NOT be built with minify: true

📄 License

Apache License 2.0 © 2026 dsh-advisor-group contributors.

Compatibility

DSH 0.2.1-alpha.4: failedDSH 0.2.0-rc.1: failedDSH 0.2.0-rc.2: failed

Versions

Latest versionPublishedSize
0.1.0——
0.0.1——

Comments

Loading…

Similar plugins

dsh-consult

by DK-Zhu

Evidence-first multi-model consultation for DeepSeek Harness: 2–5 independently configured models review the same evidence, and the main agent synthesizes their anonymous opinions.

Manifest valid

★ 0

MIT

TypeScript

Sep 13, 2026

dsh plugin --profile web add dsh-consult

by slhssb

Independent-model advisory review for DeepSeek Harness: after each tool step, a reviewer model audits the agent's operations and injects concerns/guidance into the next step.

Manifest valid

★ 0

MIT

TypeScript

Aug 14, 2026

dsh plugin --profile web add @slhssb/dsh-advisor

by Socialist-Sister

Multi-agent collaboration suite for DeepSeek Harness: specialist roster with on-demand dispatch, roundtable, model comparison and a multimodal vision bridge — models via the official provider flow.

Workflow & AutomationManifest valid

★ 4

MIT

TypeScript

Aug 19, 2026

dsh plugin --profile web add dsh-collaboration

by omdsh-dev

Advisor - Pair a second model that passively reviews each turn and injects notes. 搭配一个会在每轮对话被动注入见解和审查的副模型。

Models & ProvidersManifest valid

★ 32

↓ 1.2k/wk

MIT

TypeScript

Oct 28, 2026

dsh plugin --profile web add dsh-advisor

Auto-switch DeepSeek models: routes every request to the vision model when images are present, to the pro model for complex tasks, and to the fast model otherwise; includes a switch_model tool for man

Tools & CapabilitiesManifest valid

★ 0

dsh plugin --profile web add dsh-deepseek-model-router

by kvmem

DSH SuperAdvisor: on-demand second opinions from a stronger model, with editable requests and per-call human approval.

Tools & CapabilitiesManifest valid

★ 9

MIT

TypeScript

Sep 11, 2026

dsh plugin --profile web add dsh-super-advisor