dsh-plugin-mindmap:把會話沉澱爲可交互的故事線地圖

前言

用智能體開發時,會話往往是最重要的記錄:一個話題拖上幾個小時,中間有分叉、有折返、有推翻重來。想回頭看「這個問題當時討論到哪、爲什麼這麼定」,能依賴的只有原始日誌,一條條往上翻;重啓項目或換個代理之後,這些上下文基本就丟了。

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

羽毛球分组比赛记分
小程序二维码

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

小夜