前言¶
用智能體開發時,會話往往是最重要的記錄:一個話題拖上幾個小時,中間有分叉、有折返、有推翻重來。想回頭看「這個問題當時討論到哪、爲什麼這麼定」,能依賴的只有原始日誌,一條條往上翻;重啓項目或換個代理之後,這些上下文基本就丟了。
dsh-plugin-mindmap 針對的就是這個場景:在對話進行的同時,把內容提煉成一條條獨立的故事線(storyline),渲染成可交互的地圖,並持久化到工作區裏。
這是什麼¶
dsh-plugin-mindmap 是一個 DeepSeek Harness(DSH)插件,由 ImCabbage 維護,許可證爲 MIT。一句話定位:把會話提煉爲持久化的故事線,並渲染成可交互的地圖。
DSH 的理念是「一切皆插件」,會話視圖、RPC、持久化機制都開放給插件擴展。這個插件正是建立在這些擴展點上:Host 側負責分類與持久化,Client 側在會話視圖中註冊標籤頁做渲染。
核心功能¶
故事線分類:規則優先,增量運行¶
插件自動組織對話邏輯並識別關鍵思維分叉。每個 storyline 對應一個獨立主題;分類規則優先、LLM 兜底,以增量方式運行——每條新消息只判定一次是 append、fork 還是 new,不會整體重聚類。
點擊節點回顧過往問答¶
點擊節點會聚焦其 storyline,並打開詳情卡片,內含問題、工具調用的一行摘要與答案。較長的 storyline 會在語義斷點摺疊爲多行,用粗體標籤標註回合。
持久化的開發記憶¶
分類結果存於工作區根目錄的 DEV_LOG.json——這個文件本身就是提煉出的記憶。重啓項目或切換代理後,地圖即時重載,0 次 LLM 調用。
會話視圖中的 MindMap 標籤頁¶
插件在會話視圖中註冊 MindMap 標籤頁:每行一個主題,以貝塞爾漸變緞帶繪製,共六種節點形狀(question / decision / feature / bugfix / refactor / research)。每個標題下有狀態徽章——進行中(綠)、有阻塞(琥珀)、已完成(藍)、討論結束(灰),後跟一行描述。
即時打開與後臺進度¶
DEV_LOG.json 存在且格式版本匹配時,打開無需重建、0 次 LLM 調用;新消息在後臺同步,地圖自動刷新。進度呈現上,完整重建顯示進度條,增量同步顯示小提示。
實現方式¶
- Host 側:MindMapGateway 服務(Typert remotes
mindmap/graph與mindmap/progress)負責讀取會話日誌、增量分類(規則 + LLM)、讀寫DEV_LOG.json,並運行帶進度的後臺同步任務。 - Client 側:在
conversation.view槽位註冊 MindMap 標籤頁,通過ctx.remote拉取圖形、從DEV_LOG即時渲染,並輪詢後臺進度自動刷新。 - RPC:使用 Typert 協議,manifest 手寫於
src/host/typert.host.js(host 端)與src/host/typert.remote-client.js(client 掛載端),使用嚴格的 zod 編解碼。
安裝與啓用¶
前提條件:已安裝 DeepSeek Harness(dsh 命令可用)、正在使用 web profile,且 PATH 上有 pnpm(dsh plugin 會轉發給 pnpm;缺失時用 npm install -g pnpm 安裝)。
安裝命令:
dsh plugin --profile web add github:ImCabbage/dsh-plugin-mindmap
1、該命令用 pnpm 把包安裝進 profile,並自動加入 profile 的 bundle 列表(包內聲明瞭 dsh.bundle)。Host 與瀏覽器 bundle 均爲預構建產物,隨倉庫提供,無需額外構建。安裝會寫入 $DSH_HOME/profiles/<name> 目錄,該目錄必須可寫。
2、重啓 web 進程:停止正在運行的 dsh web 並重新啓動。僅刷新瀏覽器頁面不夠——組合在啓動時固定。
3、驗證掛載:
dsh --profile web --dump-config | grep mindmap
應看到 - id: mindmap 位於 name: dsh-plugin-mindmap 旁。
4、打開任意會話,視圖標籤欄會出現 MindMap 標籤頁。
典型用法¶
1、正常聊天,MindMap 在後臺分類,進度顯示在標籤頁內。
2、打開 MindMap 標籤頁:
- 每條彩色緞帶是一個獨立主題,節點按時間從左到右排列;
- 點擊節點,聚焦其 storyline 並打開詳情卡片(問題 / 工具調用摘要 / 答案);
- 點擊空白處,清除聚焦;
- 標題下的小字是當前狀態(徽章 + 描述)。
3、首次打開(或 DEV_LOG 格式升級)會帶進度條運行一次完整提煉,之後每次打開都是即時的。
本地開發使用獨立測試 profile,不影響日常的 web profile:
dsh plugin --profile mindmap-test add .
修改源碼後執行構建,esbuild 會生成主機端 lib/index.js 與瀏覽器端 lib/client.js:
npm install
npm run build
構建後重啓測試 profile 的 dsh web。注意構建產物 lib/ 已提交到倉庫,git 安裝直接使用它,因此修改源碼後需將 lib/ 與源碼改動一起提交。
適用場景與注意¶
適合的場景:會話週期長、話題多的開發工作;需要重啓項目或切換代理後回顧過往決策過程;想以低成本複用會話結構作爲開發記憶。
幾點注意:
- 插件會在每個使用它的項目工作區根目錄創建
DEV_LOG.json,不想提交可加入項目.gitignore。 - 首次完整提煉需要可用的模型憑據(LLM 調用);LLM 調用失敗時標籤頁會顯示警告行,請檢查模型憑據與網絡。
- 出現權限 /
EROFS/ 只讀錯誤,說明安裝目標目錄$DSH_HOME/profiles/<name>不可寫,請換到可寫環境再執行。 - 該插件沒有構建腳本(預構建
lib/隨倉庫提供),pnpm 失敗後 dsh 打印的 allowBuilds 提示不適用、可忽略,應查看其上方的真實 pnpm 錯誤。 - 插件以當前 dsh 進程的權限運行。安裝前建議先查看倉庫源碼並確認許可證(MIT)符合預期。
結尾¶
dsh-plugin-mindmap 把會話內容提煉爲持久化的故事線地圖,回顧決策、恢復上下文不再依賴翻日誌。對以會話爲主要工作記錄的 DSH 用戶來說,值得一試。
社區目錄頁面(獨立站點,與 DeepSeek / 幻方無官方從屬關係):https://www.skillhub.cn/plugins/ImCabbage/dsh-plugin-mindmap
GitHub 倉庫:https://github.com/ImCabbage/dsh-plugin-mindmap