DeepSeek Harness Web 內置的問題編輯器(QuestionComposer)設計爲通用提問,採用緊湊卡片佈局。當內容是完整的 Markdown 設計文檔(含標題、表格、代碼塊、公式)時,卡片內的 60vh / 520px 滾動區域顯得侷促,審閱體驗不佳。dsh-doc-review 將文檔類提問替換爲全屏彈窗,以渲染後的 Markdown 全幅展示,並保留完整的交互能力。
該插件由 yaodongH 維護,旨在解決設計文檔與方案審閱的展示問題,將原本侷促的卡片升級爲支持行內評論、自動彈出、關閉不取消的全幅渲染彈窗。
核心功能¶
文檔渲染¶
- 支持 GFM Markdown 全量渲染:標題層級、列表、表格、代碼塊(含語法高亮)、KaTeX 數學公式。
- 彈窗內寬表格支持橫向滾動,避免佈局錯亂。
交互能力¶
- 選項按鈕:單選即提交,與內置流程答案編碼一致。
- 自定義意見:單行輸入框,用於補充修改意見。
- 取消操作:以
ASK_CANCELLED拒絕請求,編輯器恢復爲普通聊天狀態。 - 一次性鎖:點擊後禁用所有操作,直到宿主響應落定;失敗自動重試並顯示錯誤。
彈窗行爲¶
- 自動彈出:文檔類提問到達時彈窗立即打開。
- 關閉不取消:點擊 X / Esc / 遮罩層關閉彈窗,請求保持待審狀態。
- 重新展開:控制條上的「展開完整文檔」按鈕可重新打開彈窗。
- 重連恢復:頁面刷新或斷連重連後,待審彈窗隨組件重開。
行內評論¶
- 評論管理:支持添加、編輯、刪除行內評論。評論持久化存儲於
localStorage(key 格式:dsh-doc-review:v1:comments:<wait.key>)。 - 提交反饋:存在評論時,彈窗頁腳與收起控制條切換爲「提交評論 / 取消」,選項按鈕與自定義輸入隱藏。提交時按行號升序聚合,格式爲
對於第N行{原文內容},我認爲應{評論內容}。 - 編輯與刪除:評論提供編輯(✎)和刪除(🗑)按鈕,編輯態預填原文。
國際化¶
- 插件自身文案支持中英文雙語切換。
plan-review意圖的選項按鈕標籤(如Approve)根據語義本地化顯示(如「確認執行」),但發送的答案值保持原標籤。
安裝與部署¶
環境要求¶
- DeepSeek Harness
>= 0.0.1 - pnpm
>= 11 - Node
>= 22
構建¶
在插件源碼目錄下執行:
pnpm install
pnpm run typecheck
pnpm run test
pnpm run build # 構建 ESM 與 Client Bundle
pnpm run pack # 打包爲 tarball
部署到 profile¶
- 編輯
~/.dsh/profiles/web/package.json,將打包產物(如dsh-doc-review-0.1.0.tgz)添加到bundles列表。 - 在
dependencies中添加該產物路徑。 - 進入
~/.dsh/profiles/web目錄執行pnpm install。 - 重啓 DeepSeek Harness Web 服務。
快速迭代¶
開發期間可跳過打包步驟,直接同步構建產物:
pnpm run build
rsync -a lib/ cordis.patch.yml dsh.plugin.json \
~/.dsh/profiles/web/node_modules/dsh-doc-review/
使用示例¶
觸發方式¶
在自適應模式下跑一個任務進入設計階段,或在標準模式下輸入 /plan,彈窗會自動彈出並渲染設計文檔。
評論與反饋¶
- 在彈窗中選中文本或點擊行號槽,添加評論。
- 審閱完畢後,點擊「提交評論」。
- 若需拒絕,點擊「去聊天裏說」。
標準端到端驗證¶
提交評論(有評論時)按行號升序聚合爲一條意見,每條逐字 對於第N行{原文內容},我認爲應{評論內容},經 { selected: [], custom } 信封發送;成功後清空評論與持久化。
適用場景¶
本插件接管以下文檔審閱路徑:
- 標準 plan-mode:輸入
/plan後exit_plan_mode提交方案審閱。 - 自適應流水線:任務進入設計階段。
未被認領的提問(短問題、無標題 detail、多選、>3 選項、未知意圖等)原樣落回內置問題編輯器。
認領條件¶
滿足以下全部條件時接管:
- 單個 question(非多題批量)。
- multiSelect 非真。
- intent 爲 undefined 或 { kind: 'plan-review' }。
- detail 爲含 Markdown ATX 標題行(/^#{1,6}\s+\S/m)的字符串。
- 選項數 ≤ 3。
已知限制¶
- 彈窗內寬表格保持橫向滾動。
- 依賴項包括
@deepseek-ai/cordis、react、@deepseek-ai/dsh-client-runtime等。