dsh-task-decision:把 AI 每輪的待決問題收進右側邊欄

前言

在 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 工具登記摘要與問題,客戶端側自動彈出面板。

典型用法

  1. 正常對話,每輪結束時 AI 調用 gate_ask 登記摘要與問題。
  2. 聊天流出現一行卡片,右側自動打開「本輪工作 & 待拍板」。
  3. 逐題選擇;選項都不合適時,直接在該題備註框裏寫想法,可不選。
  4. 需要截圖或文檔時,在這道題的備註框裏 Ctrl+V 粘貼,或點「添加附件」選擇。
  5. 點「提交拍板」,回傳自動發回當前會話,面板自動收起。
  6. 面板被關掉後,點會話頁頭右側的「拍板」按鈕可重新打開;已提交的輪次不會重複提交。
  7. 這一輪不用處理了:點「提交拍板」右邊的「取消本輪」,再點「確認取消」,整輪劃掉,右側欄收起。
  8. 最後一題固定是「繼續深挖,還是直接開幹」:選第一項,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
羽毛球分组比赛记分
小程序二维码

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

小夜