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
羽毛球分组比赛记分
小程序二维码

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

小夜