dsh-second-opinion:卡住时用独立顾问会话要第二意见

前言

在 DeepSeek Harness(DSH)里长时间改代码、排错时,常见现象是同一会话反复试相近思路:每一步看起来都在推进,却迟迟出不了结果。宿主里已有 sessionController.prompt、send_message 等跨会话能力,但前者会把消息标成用户本人发言,后者又受父子会话链限制,平级会话之间很难「请另一个人从头看一遍」而不打断、不冒充。

dsh-second-opinion(维护者 xfgil,GitHub 分类为工作流插件)针对的是这一缺口:求助方在自己的工具调用里同步等待,顾问在独立会话里分析,答案作为工具结果回到原会话;用户也不必转述问题。下面介绍它是什么、怎么装、怎么用,以及使用时要注意什么。

这是什么

一句话:DSH 跨会话「第二意见」插件——会话卡住时,通过 ask_advisor 把问题交给自动创建的顾问会话,顾问答完后答案 inline 返回;每个求助会话有专属顾问(标题为「辅助 + 求助会话标题前三字」),同一问题还可指定 advisor: 2、3 再要完全独立的第二个、第三个顾问。

仓库:github.com/xfgil/dsh-second-opinion
社区目录:skillhub.cn/plugins/xfgil/dsh-second-opinion
许可证:MIT;当前 package 版本 0.1.0;Node 要求 >= 22(与 package.json 的 engines 一致)。README 写明在 DSH 0.2.0-rc.2 上实测。

和宿主现有通道的差别

插件 README 用表格说明了为什么不直接用两条现成路:

通道 问题
sessionController.prompt 能唤醒会话,但来源被硬编码为 kind: "user",等于冒充用户
send_message 授权限制在父子链,够不着两个平级会话

本插件绕开「跨会话投递」:求助方在工具调用里阻塞等待,结果天然属于调用方会话,不投递、不冒充。等待期间主会话会停住——作者认为这符合「卡住就该等外部判断」的语义。

核心功能

求助方工具

ask_advisor:把明确问句(必填 question)交给顾问;可选 situation、tried、context;advisor 默认为 1,传 2、3 使用独立槽位。成功返回含 answer、advisor.sessionId、elapsedMs 等;失败或超时返回 { ok: false, ... },不抛异常。

advisor_status:查看本会话顾问状态;reset: true 丢弃记录(下次新建映射,不删旧会话);all: true 可列出各求助会话的顾问。

顾问侧工具(仅插件创建的顾问会话可调用)

advisor_watch:只读查看所辅助主会话的实况(sessionController.inspect,不 resume Agent);可选 detail: "tools" 只看近期工具调用。

advisor_note:给主会话留便条;主会话下次调用 ask_advisor 或 advisor_status 时消费式读取,默认队列上限 5 条。

触发方式

  1. 模型自行判断卡住(反复改同一处、同类错误、用户说「换个思路」等)并调 ask_advisor。
  2. 用户口头说「问问顾问」,会话同样调工具。
  3. 用户打开顾问窗口,让顾问 advisor_watch / advisor_note,不打断主会话。

插件不做自动监听打转行为;触发需显式。

安装与启用

安装命令以 README「安装」节为准。本地链接:

dsh plugin --profile <你的profile> add link:/绝对路径/dsh-second-opinion

若已从 npm/GitHub 发布渠道安装:

dsh plugin --profile <你的profile> add dsh-second-opinion

装好后通常无需重启;可用 /status 或让模型调一次 advisor_status 确认装载。

配置写在 profile 的 cordis.patch.yml(不导出 Config schema,运行时读取)。常用项包括:enabled(默认 true)、waitMs(默认 600000,超时只放弃求助方等待,不杀顾问)、cwd(默认跟随求助方)、advisorLabel(默认「辅助」)、maxAdvisors(默认 9)等。完整键与默认值见仓库 README「配置」表。

典型用法

README 给出的最小验证:不必真卡住,让模型调用 ask_advisor,例如:

question: "2 的 10 次方是多少?"

检查返回的 advisor.title 是否在会话列表里形如「辅助 + 标题前三字」;打开顾问会话应能看到自我介绍与提问;求助方工具结果里的 answer 即顾问正文。

实际排错时,应把 question 写成明确问句,并在 tried 里写已失败的路径,避免顾问重复你的死路。需要第二个独立视角时:

ask_advisor({ question: "...", tried: "...", advisor: 2 })

适用场景与注意

适合谁:已在用 DSH、希望在不冒充用户、不依赖父子 relay 的前提下,为单个会话增加外部顾问视角的开发者。

权限与安全:插件以当前 DSH 进程权限运行,会自动创建会话并把问题内容写入顾问会话;安装前应阅读源码与 MIT 许可证,确认符合隐私与合规预期。状态默认落在 $DSH_HOME/second-opinion/state.json(无 DSH_HOME 时退回 ~/.dsh)。

稳定性:README 免责声明写明依赖宿主内部接口(如 resolveAgent、followup、snapshotEvents 等),非稳定 API,DSH 升级后可能失效;作者非官方,按「现状」提供。

生态说明:DSH 社区插件目录(如 SkillHub)是独立站点,与 DeepSeek / 幻方无官方从属关系;本文介绍的是社区维护的 xfgil/dsh-second-opinion,GitHub 上当前星标数为 1。

结尾

卡住时用一次工具调用换独立会话的第二意见,答案直接回到求助方工具结果里,顾问命名也在列表里标明「在辅助谁」。需要细节、配置表与实现说明时,以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/xfgil/dsh-second-opinion
  • GitHub:https://github.com/xfgil/dsh-second-opinion
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜