前言¶
在 DSH(DeepSeek Harness)裏做多輪開發時,常見的一個場景是:AI 一輪拋出三五個需要你拍板的決策點,它們散落在正文裏,逐條回覆很容易漏答、或答錯題號;等你把答案發回去,AI 又常常對不上”q1 到底問的是什麼”。正文標記塊的方案也不理想——DSH 聊天渲染器會把 HTML 註釋原樣轉義顯示,聊天流裏會出現一大坨 JSON。
本文介紹的 long-yin-zi/dsh-task-decision 就是針對這個問題的 DSH 桌面端插件:AI 每輪結束時自動把「本輪摘要 + 待決問題」登記進右側邊欄的一個 tab,你在面板裏一次選完、給每題寫備註,點一下提交,答案帶着問題標題自動發回當前會話。
這是什麼¶
一句話定位:一個 DSH 客戶端插件,把多輪會話中的”人-in-the-loop 拍板”環節從正文搬到右側邊欄,並保證回傳內容結構化。
- 維護者:Long-Yin-Zi(GitHub 組織)
- 分類:客戶端插件
- 許可證:MIT
- 版本:0.8.6(截至本文寫作時 README 所列最新版本)
- 目標宿主:在 DSH 0.2.1-rc.2(nightly)桌面端驗證
解決的核心痛點有三個:決策點散落正文容易漏答;回傳內容不帶題號和選項 id,AI 無法對題;多輪之間”上一輪沒拍板、新一輪已到達”的狀態容易丟。
核心功能¶
下面按 README 中列出的能力逐條介紹。
右側獨立面板。 本輪摘要與全部待決問題集中在一個 tab(「本輪工作 & 待拍板」),聊天流裏只出現一行卡片:📋 本輪有待拍板項,見右側面板。
單選 / 多選。 按問題類型渲染,勾選框區分樣式:圓形爲單選,方形爲多選。
每題一個常駐備註框。 選項都不滿意時,可以不選任何選項,只在備註框裏寫自己的想法,照樣能提交。
提交前校驗。 既沒選選項、也沒寫備註的題會被標紅攔住,避免漏答。
回傳帶問題標題。 提交後發回會話的內容形如 q1(問題標題): 選 b「…」;整題備註:…,AI 拿到即可對上題號與選項 id。若用戶否掉全部選項,格式爲 未選項;整題備註:…。
提交後自動收起側邊欄。 把注意力還給 AI 的回覆。
提交後只讀回放。 已提交的輪次把「選了哪幾項、每題備註、整體補充」原樣列出,關掉面板再打開也能覈對,不必翻聊天記錄。
每題可加附件。 在題卡里 Ctrl+V 粘貼,或點「添加附件」選擇。圖片內聯發出,其他文件走 DSH 自帶的上傳服務;提交時按題分組,哪道題的附件就跟在哪道題的文字後面。
可以取消整輪。 底欄「提交拍板」佔 2/3、「取消本輪」佔 1/3,點兩次確認後整批問題劃掉,面板變「已取消」、右側欄自動收起;AI 下一輪登記新問題時自動恢復。
末尾固定附加「繼續深挖還是直接開幹」。 每輪尾部追加一道必答單選題:選「先繼續討論」則回傳要求 AI 先講清思路、細節、影響面、邏輯閉環再動手;選「不用討論」則直接執行。空輪(0 題)不渲染這道題,也不能提交空拍板。
整題備註支持語音輸入。 備註框下方點「語音輸入」,說完點停止,自動轉寫並追加到備註;需相機/麥克風權限,且宿主已啓用語音插件。
防重複提交與失敗重試。 同步鎖加「本輪已提交」雙閘,連點或關掉再開都不會重複發送;發送失敗保留已填內容,一鍵重試。
中英雙語。 文案走 locale 表(locale/zh.json、locale/en.json),跟隨 DSH 界面語言。
安裝與啓用¶
前置:已安裝 DeepSeek Harness (dsh)。本插件沒有發佈到 npm,只能從 GitHub 源碼安裝。
# profile 名換成你自己的(桌面端一般是 desktop)
dsh plugin --profile desktop add github:Long-Yin-Zi/dsh-task-decision
安裝完成後需要重啓 DSH,因爲宿主半部(index.js)在啓動時加載工具與提示詞;客戶端改動刷新頁面即可生效。
兩個容易誤解的點,README 裏專門做過說明:
package.json中的dsh.client.platform = "web"是 DSH 客戶端加載器的硬性校驗(只接受字符串"web"),桌面端同樣滿足;它不代表插件”只支持網頁端”。- 插件僅在桌面端 DSH 驗證過。瀏覽器裏單獨部署的
dsh web沒有測試,是否可用未知。
啓用後無需額外配置。每輪結束時 AI 會調用 gate_ask 工具登記摘要與問題,客戶端側自動彈出面板。
典型用法¶
- 正常對話,每輪結束時 AI 調用
gate_ask登記摘要與問題。 - 聊天流出現一行卡片,右側自動打開「本輪工作 & 待拍板」。
- 逐題選擇;選項都不合適時,直接在該題備註框裏寫想法,可不選。
- 需要截圖或文檔時,在這道題的備註框裏 Ctrl+V 粘貼,或點「添加附件」選擇。
- 點「提交拍板」,回傳自動發回當前會話,面板自動收起。
- 面板被關掉後,點會話頁頭右側的「拍板」按鈕可重新打開;已提交的輪次不會重複提交。
- 這一輪不用處理了:點「提交拍板」右邊的「取消本輪」,再點「確認取消」,整輪劃掉,右側欄收起。
- 最後一題固定是「繼續深挖,還是直接開幹」:選第一項,AI 先講思路、影響面、風險等你確認;選第二項則直接按上面的選擇執行。
回傳格式示例(README 原樣):
【拍板回傳】
q1(學生全流程收尾做哪些): 選 b「…」、c「…」;整題備註:優先做風險低的
q2(推進節奏): 選 a「做完一項再彙報」
(整體補充:……)
它是怎麼工作的,README 給出的鏈路如下:
模型每輪結束前調用工具 gate_ask({ summary, questions })
↓
聊天流裏只顯示一行卡片,右側自動打開 tab
↓
頁頭探針從 tool-result 的 argsRaw 解析出 gate,寫入模塊 store
↓
用戶選選項 / 寫備註 → 點「提交拍板」
↓
ctx.sessions.scope(sessionId).conversation.send("【拍板回傳】…")
↓
面板自動收起,AI 繼續幹活
實現上分宿主半部與瀏覽器半部:index.js 註冊 gate_ask 工具並注入系統提示詞規則,client.js 負責解析、頁頭探針、右側 tab、面板 UI 和提交回傳。早期 v0.1 用正文標記塊,因渲染轉義問題改爲工具調用,殘留的標記塊解析路徑仍保留作兼容。
適用場景與注意¶
適合誰:在 DSH 桌面端做多輪、帶審批環節開發的人。這類會話裏每輪決策點較多、需要逐項確認和留備註,用正文來回貼容易亂,面板化的收益比較直接。
注意事項:
- 安裝前先讀源碼與許可證(MIT),確認
index.js注入的系統提示詞規則和gate_ask工具的參數結構符合你的預期。插件以當前 dsh 進程權限運行。 - 插件自己不發起網絡請求、不主動讀寫文件;只有你粘貼或選中的文件才由 DSH 自帶的
fileUpload服務保存,回傳走 DSH 自己的發送通道發回當前會話。 - 平臺支持 Windows / macOS / Linux(純 JS,無原生依賴,
react由宿主提供)。 - 已知邊界:拖拽附件不可用(DSH 在
document冒泡階段接管了拖拽事件),只能用 Ctrl+V 粘貼或「添加附件」;收起側邊欄依賴內部接口sidebarRight.actionsFor(...).setExpanded(...),DSH 升級若改名會退化爲”不自動收起”,不影響提交。
結尾¶
dsh-task-decision 的價值在於把”拍板”這個環節從正文裏拆出來,用結構化回傳降低漏答和錯題的概率。它對現有工作流的侵入很小:裝完重啓,之後每輪只需在右側面板裏點選。
- 目錄頁:https://www.skillhub.cn/plugins/Long-Yin-Zi/dsh-task-decision
- GitHub:https://github.com/Long-Yin-Zi/dsh-task-decision