前言¶
DeepSeekRuntime(DSH)通過插件擴展能力,開發者可以在本地構建專用工作流。在軟件研發流程中,任務、Bug、需求往往分散在禪道(ZenTao)等工具裏,需要頻繁在工具和 AI 之間切換。傳統做法是手動複製標題、描述到 DSH,截圖需要另存爲圖片再上傳。這種方式不僅繁瑣,而且截圖往往只是佔位符,模型看不到真實內容。
本文介紹 big-li99/dsh-zentao-panel,一個 DeepSeekRuntime 的禪道工作臺插件。它把禪道任務/Bug/需求集成到 DSH 左側邊欄,支持多賬號、截圖轉真實圖片附件、卡片一鍵轉對話上下文,並提供處理狀態實時反饋。
這是什麼¶
dsh-zentao-panel 是一個工作流插件,由維護者 big-li99 開發,分類爲「工作流」。它在 DSH 左側邊欄以禪道圖標爲入口(與「記憶系統」同款形式),點擊後面板佔據主區域,查看指派給我的任務、Bug、需求,並支持一鍵轉成 DSH 對話上下文。
核心功能¶
左側欄全局面板¶
插件在 DSH 左側邊欄註冊一個禪道圖標,點擊後以全局面板方式展示任務、Bug、需求三個分段標籤。每個標籤下顯示卡片列表與詳情,支持點擊查看完整信息。
多賬號支持¶
插件支持保存多個禪道賬號,包括同實例切換賬號、多實例混用。頭部提供賬號菜單,可一鍵切換、按賬號移除。切換即時生效,無需重新登錄;每賬號使用獨立的 cookie/緩存。
卡片插入對話¶
支持卡片拖拽或點擊插入到 DSH 對話輸入框。插入內容爲精簡 Markdown,僅包含標題與描述/重現步驟,不帶元信息、原地址或頁腳。
截圖轉真實圖片附件¶
禪道描述裏的 <img> 標籤(含列表接口的佔位符如 {35861.png})在插入時會被下載,作爲 DSH 圖片附件掛到輸入框。發送後模型可以真正看到圖片,而非佔位符。
「處理」按鈕¶
點擊卡片上的「處理」按鈕,會彈窗選擇工作區、接入的模型(按接入方分組)和思考強度(默認帶出當前會話的設置)。確認後新建會話,按所選模型設置並自動下發任務背景提示詞(含圖片附件)。下發過程不會跳轉視圖,仍留在禪道面板繼續處理其他卡片。
關聯會話跳轉¶
處理過的卡片左側會出現會話 chip,顯示該 DSH 會話標題。點擊即可跳回該會話繼續跟進。會話被刪除後 chip 顯示「會話已刪除」,點擊可清除標記。關聯按禪道賬號隔離,只存本地 localStorage,不落任何遠端。
實時狀態反饋¶
處理過的卡片 chip 前有活性狀態點。會話在跑時,卡片顯示藍色「處理中」膠囊(三點跳動);agent 等決策時,顯示琥珀色「等你決策」(呼吸描邊);後臺會話完成後,顯示綠色「已完成」徽標,同時彈出提醒條,點擊「去看看」直接跳回會話。提醒不依賴面板是否打開(正開着的會話完成不重複提醒;安裝了 dsh-notify-me 的話系統通知也會照發,兩條通道獨立)。
登錄態持久化¶
插件支持登錄態持久化,約 30 天免登。會話失效時自動重登。
主題跟隨¶
全部顏色使用 DSH 語義 token(--dsw-alias-*),日間/夜間自動跟隨。
只讀,不回寫禪道¶
插件爲只讀,不會向禪道回寫任何數據。
安裝與啓用¶
從 npm 安裝(推薦):
DSH="/Applications/DeepSeekRuntime.app/Contents/Resources/runtime/cli/bin/dsh"
"$DSH" plugin --profile desktop add dsh-zentao-panel
或從源碼安裝:
git clone https://github.com/big-li99/dsh-zentao-panel.git
DSH="/Applications/DeepSeekRuntime.app/Contents/Resources/runtime/cli/bin/dsh"
"$DSH" plugin --profile desktop add "$(pwd)/dsh-zentao-panel"
重啓 DSH Desktop 生效(client 側改動一般 ⌘R 重載渲染進程即可;host 側改動需重裝插件後重啓)。
卸載¶
"$DSH" plugin --profile desktop remove dsh-zentao-panel
# 可選:清除本地憑據
rm -rf ~/.dsh/zentao-panel
配置¶
登錄信息保存在 ~/.dsh/zentao-panel/config.json(權限 0600,僅本機),schema v2:
{
"version": 2,
"accounts": [ /* { id, baseUrl, account, password(base64 混淆), cookies } */ ],
"activeId": "當前激活賬號的 id"
}
賬號 id 由 baseUrl + account 哈希得到,同賬號重複登錄等於更新憑據;舊版單賬號格式讀取時自動遷移,無需手動處理。卸載插件後文件不會自動刪除,需要時手動清理。
技術說明¶
數據鏈路¶
插件在 ZenTao 18.13 開源版實測,RESTful API v2 在該實例不可用。網頁登錄協議使用 md5(md5(password) + verifyRand) 加密,配合 jQuery 風格請求頭。數據主通道爲 /my-work-{task,bug,story}.json(需登錄態 cookie,一次拿全量),詳情接口爲 /api.php/v1/{tasks,bugs,stories}/{id}。
界面掛載¶
插件利用 DSH 0.2.1-rc.2 的 slot 機制:左側欄全局面板通過 sidebar.panellist 列表 slot 註冊圖標行({id, order, label}),同 id 在根作用域 main keyed slot 註冊面板組件。點擊圖標調用 ctx.layout.selectPanel(id),面板佔據整個主區域。main slot 按 entryKey = activePanelId ?? 'conversation' 只渲染當前選中面板,切回會話時面板卸載,重掛由模塊級 paneCache 秒恢復列表。
用戶主動跳轉(會話 chip / 提醒條「去看看」)走 uiWorkspace.openSession,內部調用 replaceMain(..., "reveal") → selectPanel(null),自動切回會話視圖。「處理」下發不走 openSession(會強制切視圖),改爲 sessions.retain(sessionId, {source:'zentao-panel'}) 後臺保活,再通過 conversation.input.for(scope) 的服務級 setDraft / addAttachments / submit 發送,不需要視圖掛載,發送完成後釋放 retain。
舊版 DSH 沒有這兩個 slot 時,插件自動退回右緣懸浮按鈕 + 側滑面板。顏色使用 --dsw-alias-* 語義 token,暗色由 body[data-ds-dark-theme] 自動切換。
真實圖片附件¶
宿主利用登錄態 cookie 下載禪道圖片,RPC zentao.image 返回 {name, mediaType, base64}。渲染端通過 new File([bytes], name, {type}) → conversation.createDrafts(sessionId, files) 獲取 draft id,再通過 conversation.input.for(scope).addAttachments(ids) 添加附件。addAttachments 只接受已註冊的 draft id,不直接收 File。由於用戶消息不渲染 markdown,圖片只能走附件通道,發送後模型可見。支持的格式爲 png/jpeg/webp/gif,單圖 ≤20MB、單邊 ≤8192、單消息 ≤20 張;超大截圖會先在瀏覽器裏縮到 2048 長邊再附加(DSH 宿主本身也會歸一化到 ≤2048)。模型不支持圖片輸入時宿主會拒絕整條 prompt,此時可在輸入框裏移除圖片附件後發送。
詳見《計劃書.md》附錄 A。
適用場景與注意¶
本插件適合需要在 DSH 中直接處理禪道任務/Bug/需求、希望截圖能被模型真實看到的開發者。使用前請檢查 DSH 版本兼容性(當前兼容 DSH 0.2.1-rc.2),並在安裝前閱讀源碼與許可證(MIT)。
插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。
結尾¶
本文介紹了 big-li99/dsh-zentao-panel,一個將禪道任務/Bug/需求集成到 DSH 左側邊欄的工作流插件。它支持多賬號、截圖轉真實圖片附件、卡片一鍵轉對話上下文,並提供處理狀態實時反饋。更多細節可查看插件目錄頁與 GitHub 倉庫。