dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
主模型在专业/长尾/高风险或不确定问题上召集多个专家顾问模型,以复古 CRT 聊天组卡片展示:一次 ask_advisors 自动跑满自动深挖流水线(驱动模型追问、顾问接力、综合结论),真流式 SSE、26 个供应商预设、可配置每日配额、停止/继续,以及可选的顾问工具调用。
让 DeepSeek Harness(DSH)的一个会话,既能向其他模型借智慧,也能向其他会话借记忆。
English · 安装 · 快速开始 · 核心功能 · 配置参考 · 开发
能力 · 它帮你做什么 多模型会诊(顾问群) · 面对专业、高风险或没有把握的问题,让多位专家模型接力回答,再由驱动模型汇总结论。 跨会话协作(全局蜂群) · 直接询问另一个已有会话,复用它读过的代码、做过的排查和定下的约定,不必从零再来。 在本会话子代理功能之外,提供模型跨项目写作的能力。 顾问团角色卡 · 给会话分配姓名和职责。之后直接说“去问小明”,不必记会话标题或 sessionId。
项目 · 说明 DSH · 当前开发基线为 0.2.1-rc.3;声明可安装的版本范围(peer)为 >=0.1.7-rc.2 =24.0.0 使用端 · DSH Web 与桌面端,共用同一份客户端代码包
声明范围内的更早版本没有逐一实装验证。跨会话功能还需要宿主提供会话控制服务 sessionController;缺少该服务时,相关工具会明确报错,多模型会诊不受影响。
DSH Web:
dsh plugin --profile web add dsh-advisor-group安装后按你原来的方式重启 DSH Web,并硬刷新浏览器(Ctrl+Shift+R)。
桌面端:在应用内打开 Plugins → Add plugin,输入 dsh-advisor-group。桌面端的配置清单由应用管理,dsh plugin --profile desktop … 会被官方拒绝,这不是权限不足。
git clone https://github.com/xingzhen199186/dsh-advisor-group.git
cd dsh-advisor-group
npm install --legacy-peer-deps --no-audit --no-fund
npm run build
npm pack
# 以 npm pack 实际生成的文件名为准
# 当前 package.json 版本为 0.1.5,因此文件名如下:
dsh plugin --profile web add ./dsh-advisor-group-0.1.5.tgz桌面端安装源码包时,在 Plugins → Add plugin 中填写这个 .tgz 文件的绝对路径。安装后重启相应的 DSH 端。
@顾问群,并交代必要背景。例如:@顾问群 请评审这个插件的跨会话协作方案。
背景:DSH Web 与桌面端共用一份代码,要求不自动投递、不猜测目标会话。@顾问群 会强制发起会诊。普通专业问题也可以由主模型按规则升级;同一问题连续三次未解决,或主模型给出的置信度低于阈值,也会触发会诊。
设置页按使用路径分区,默认全部折叠;展开哪一节,就在那一节底部保存。
去问一下小明:顾问团角色卡今天完成了哪些改动?也可以一次问多位成员:
同时问小明和阿龙:分别检查这个方案在桌面端和 Web 端有没有遗漏,并汇总两边结论。自动生成的内容只会填入草稿;保存后才生效,已有卡不会被覆盖。原来的会话标题、目录名和 sessionId 仍然可用。
一次 ask_advisors 会完成整场讨论:
原问题
→ 第 1 轮:顾问 A → 顾问 B(看过 A)→ 顾问 C(看过 A、B)
→ 后续轮:驱动模型提出更深追问 → 顾问按同样顺序接力
→ 驱动模型生成综合结论maxRounds 为 1–5,默认 2。关闭 autoDeepen 后,后续轮次重复使用原问题,综合结论仍会生成。discussion.driverModel 兜底。📋 行动 → 💭 思考 → ⛭ 工具 → 📄 正文展示。思考和工具详情默认折叠,正文默认展开。会话标题适合描述窗口,却不一定适合长期称呼。顾问团把「姓名 + 职责」绑定到会话 id,并保存在本机 $DSH_HOME/storages/advisor-group/corps.json;它不会改写会话标题。
list_sessions 会显示角色姓名和职责;ask_session、ask_sessions 可以直接使用这个角色名,精确角色名优先于同名会话标题。ask_session 默认同步等待,也可用 detach: true 立即返回 askId,稍后通过 ask_result 读取。ask_sessions 一次向 1–8 个明确目标发送同一个问题。mode: 'all' 等全部目标结束;mode: 'any' 在首个目标结束后返回,其余目标继续完成并写入各自记录。swarm.deliverBack 默认开启。完成(done)的答案会回送到提问会话;超时和出错不会自动回送。批量提问把完成答案合并为一条回送消息。askId。异步记录可能是 waiting、done、timeout、error 或 interrupted;最后一个状态表示宿主重启使等待未能完成。ask_session 未点名时,路由只返回候选,不自动投递。ask_sessions 不做路由;无法解析、同名歧义或被排除的目标会列出跳过原因。ask_session 请求;问题和背景合计上限 32,000 字节;等待超时不会取消目标会话的回合。返回内容的准确含义:工具取得的是目标会话从「投递回执」到「下一次整体空闲」之间说过的全部内容,不保证是逐条对应你那个问题的一段答案。结果中的status(ok/partial/failed)用于说明这次收集的可靠性。
这些工具由主模型在会话中调用,不是斜杠命令,也不需要你手写工具参数。跨会话工具只应在你明确要求询问其他会话或窗口时使用。
工具 · 用途 ask_advisors · 发起多模型会诊,或用 sessionId + followUp 追加一轮讨论 ask_session · 询问一个已有会话;支持同步等待、异步投递和候选路由 ask_sessions · 向 1–8 个明确目标批量提问;支持 all / any 两种收集方式 list_sessions · 只读列出会话标题、目录、活跃状态及顾问团姓名和职责;不唤醒会话 ask_result · 按 askId 读取异步结果,或查看当前会话最近发起的提问 toggle_advisor_group · 启停多模型会诊功能,并持久化开关状态
日常使用时,通常只需要调整以下几项:
配置键 · 默认值 · 什么时候调整 discussion.maxRounds · 2 · 想减少成本时调低;想讨论更深时调高,最高 5 discussion.maxAdvisorsPerCall · 3 · 控制每次参与会诊的顾问人数,范围 1–10 discussion.advisorTools · 'readonly' · 改为 'off' 禁止顾问用工具;'all' 仅用于充分信任的场景 quota.enabled / quota.maxPerDay · true / 50 · 设置每日新会诊上限;关闭上限后仍统计次数 swarm.defaultMode · 'wait' · 改为 'detach',让跨会话提问默认异步投递 swarm.defaultWaitMs · 180000 · 调整默认等待上限,范围 1000–600000 毫秒 swarm.deliverBack · true · 关闭后,完成答案只通过 ask_result 读取,不自动回送
展开完整配置键参考
配置键 · 类型 · 默认值 · 说明 enabled · boolean · true · 启用多模型会诊 discussion.maxRounds · number · 2 · 会诊总轮数,1–5 discussion.maxAdvisorsPerCall · number · 3 · 单次会诊最大顾问数,1–10 discussion.autoDeepen · boolean · true · 后续轮次是否由驱动模型生成更深追问;关闭后重复原问题,结论仍生成 discussion.driverModel · object · – · 当前会话线路不可读时使用的 { provider, model } discussion.advisorTimeoutMs · number · 600000 · 单顾问超时,1000–600000 毫秒 discussion.driverTimeoutMs · number · 600000 · 深挖追问或综合结论的超时,1000–1200000 毫秒 discussion.advisorTools · string · 'readonly' · 顾问工具默认范围:readonly / all / off advisors · array · [] · 顾问列表;包含 provider、model、systemPrompt,以及可选的 baseURL、apiKey、apiKeyEnv、protocol 等 advisors[].tools · string · – · 单顾问工具范围,覆盖全局默认;未设置时跟随 discussion.advisorTools advisors[].thinking · string · – · enabled / disabled;未设置时跟随供应商默认 advisors[].reasoningEffort · string · – · off / low / high / max;未设置时跟随供应商或模型默认 advisors[].temperature · number · – · 采样温度,0–2 advisors[].maxTokens · number · – · 单次回答的 token 上限,至少 1 advisors[].authMode · string · – · Anthropic 直连的鉴权头:x-api-key / bearer advisors[].avatar · string · – · 卡片上的短头像,可使用 emoji 或 ASCII
顾问工具调用仅直连的 OpenAI / Anthropic 通道支持。DSH 内置通道可复用宿主凭据进行普通回答,但不支持这里的顾问工具循环。
配置键 · 类型 · 默认值 · 说明 trigger.requireClassifier · boolean · true · 非强制会诊发起前先进行前置分类 trigger.allowWebFallback · boolean · true · 分类器认为更适合联网时,返回不启动会诊的提示 trigger.confidenceThreshold · number · 0.6 · 主模型置信度低于此值时允许升级,范围 0–1 trigger.jev.enabled · boolean · false · 使用 Jev 做语义前置分类;失败时回退本地规则 trigger.jev.provider / trigger.jev.model · string · 'typesafe' / 'jev-latest' · Jev 线路与模型;线路也可设为 openrouter trigger.jev.baseURL · string · – · 可选自定义 Jev 地址 trigger.jev.apiKey / trigger.jev.apiKeyEnv · string · – · Jev 密钥或保存密钥的环境变量名;密钥字段按 secret 处理 trigger.jev.timeoutMs · number · 10000 · Jev 请求超时,1000–60000 毫秒 trigger.jev.confidenceThreshold · number · 0.6 · 判定需要顾问的阈值 trigger.jev.highRiskThreshold · number · 跟随上一项 · 高风险判定阈值;未设置时跟随 trigger.jev.confidenceThreshold trigger.jev.useEnglishState · boolean · false · 开启后,Jev 使用调用方提供的英文概要 questionEn;卡片和会话记录仍保留原始问题
配置键 · 类型 · 默认值 · 说明 swarm.enabled · boolean · true · 跨会话总开关;关闭后四个跨会话工具会明确拒绝调用 swarm.defaultMode · string · 'wait' · ask_session 默认同步等待或异步投递:wait / detach swarm.defaultWaitMs · number · 180000 · 默认等待上限,1000–600000 毫秒 swarm.resultTtlHours · number · 24 · 异步结果保留时间,1–720 小时 swarm.deliverBack · boolean · true · 自动回送 done 答案;timeout / error 不自动回送 swarm.rosterIncludeSubagents · boolean · false · 名录是否显示子代理;这不改变投递工具禁止以子代理为目标的规则 swarm.routingEnabled · boolean · true · ask_session 未点名时是否按问题给出候选;只给候选,不自动投递 swarm.routingTopN · number · 3 · 候选数量,1–8 swarm.routingEngine · string · 'local' · local 本地排序,或 jev 重排闭合候选;Jev 失败时回退本地 swarm.routingAsk · string · 'gated' · 是否建议跨会话提问:off / gated / always;建议不等于投递 swarm.routingExclude · string[] · [] · 不参与蜂群的会话;不出现在名录或候选中,被点名也会拒绝
discussion.parallel 与 discussion.stopOnConsensus 已弃用,只为读取旧配置保留。
ui.theme、ui.showTimestamps、ui.autoExpand 同样是历史配置字段;当前客户端没有读取它们,修改这些值不会改变卡片外观或展开行为。当前卡片为绿色 CRT 样式,思考与工具详情默认折叠。
完成 R 轮讨论、每轮有 N 位顾问且没有工具调用时,一场会诊通常包含 `R × (N + 1)` 次模型调用:R × N 次顾问回答、R - 1 次深挖追问,以及 1 次综合结论。按默认轮数 R = 2、每场实际有 3 位顾问参与计算时为 8 次。
实际费用还取决于以下行为:
每日配额按 UTC 日历日统计新发起的会诊,默认 50 次。续跑、后续追问和跨会话提问不占用这项配额。计数保存在 $DSH_HOME/storages/advisor-group/daily-guard.json;关闭上限后仍计数,但不拦截。需要控制成本时,可减少轮数或顾问人数、关闭顾问工具,并设置每日上限。
SecretField 语义处理,不返回浏览器。不希望密钥写入配置时,可使用 apiKeyEnv。/advisor-group/* 使用每次启动生成的共享 token,面向本地单用户场景。需要暴露到局域网或公网时,必须在外层增加反向代理鉴权。readonly 或 off,非只读工具调用会写入警告日志。$DSH_HOME/storages/advisor-group/。分类器影子日志仅用于阈值调优,不参与运行决策。swarm.enabled 开启时四个工具对会话可见,关闭后调用会明确拒绝;两个会话互相等待的死锁目前也不会被专门检测。npm install --legacy-peer-deps --no-audit --no-fund
npm run typecheck
npm test
npm run build
npm pack --dry-run测试使用 Vitest,包含供应商流式协议、跨会话投递与等待、角色卡、设置脱敏和恢复边界。构建使用 tsdown;客户端 bundle 不能使用 `minify: true`,否则会破坏启动守卫所依赖的插件 id 形式。
Apache License 2.0 © 2026 dsh-advisor-group contributors.