前言¶
DSH(DeepSeek Harness)的 Web UI 插件生態允許開發者擴展對話界面。dsh-session-memo 是一個對話側邊備忘錄插件,它將當前會話工作區的 GitHub 同步狀態 / npm 發佈狀態 / 項目版本 / 備忘標籤 彙總到一個可隨時呼出的浮動面板中,方便在對話中快速掌握項目上下文。
插件簡介¶
- 名稱:dsh-session-memo
- 維護者:LucienLL
- 類別:客戶端
- 許可證:MIT
該插件旨在解決在 DSH 對話中快速查看項目當前狀態(如 Git 同步情況、npm 版本差異)的需求,同時提供手動記錄備忘的功能。
核心功能¶
- 自動探測 Git 狀態:探測當前 Git 分支、與上游的同步狀態(ahead/behind)、未提交改動數(dirty)以及衝突數。
- npm 發佈狀態對比:對比本地 package.json 版本與 npm registry 最新版本,判斷是否落後。
- 項目版本管理:自動探測項目版本,支持手動輸入覆蓋。
- 備忘標籤與備註:支持備忘標籤的自由增刪,以及備註的自由文本輸入。
- 狀態聯動:與
dsh-session-status插件狀態標籤弱聯動,面板頭部顯示當前會話狀態並可點擊切換。
安裝與啓用¶
在 DSH profile 下執行以下命令安裝:
dsh plugin --profile web add dsh-session-memo
安裝完成後,重啓 dsh web 即可生效。
使用方式¶
- 打開面板:在 DSH Web 對話頭部點擊 📋 按鈕。面板打開時會自動探測一次狀態,也可在面板內手動刷新。
- GitHub 同步:面板中顯示當前分支、上游地址及同步狀態。
- 當
behind > 0或dirty > 0時,狀態爲琥珀色(如“落後 2 · 3 個未提交”)。 - 當存在衝突時,狀態顯示爲紅色。
- 當完全同步時,顯示綠色“已同步”。
- 當
- npm 發佈:顯示包名及本地版本與 Registry 最新版的對比。落後時提示“可發佈新版本”。可點擊“標記已發佈”手動記錄發佈時間,但自動比對仍會顯示實際狀態。
- 版本覆蓋:在版本輸入框中手動輸入版本號,按回車或失焦保存。點擊“恢復”按鈕可回到自動探測模式。
- 備忘標籤與備註:自由輸入標籤內容,失焦後自動保存;備註爲自由文本,失焦自動保存。
- 狀態切換:面板頭部顯示
dsh-session-status的當前狀態 Pill,點擊可循環切換(進行中 → 已結項 → 擱置中 → 無)。
工作原理¶
插件採用 Host + Browser 雙端架構。
- Host 端:
lib/index.js:註冊 settings namespacedsh-session-memo以及GET /dsh-session-memo/probe路由。lib/memo.js:負責純邏輯處理,包括 git porcelain 解析、semver 版本對比、package.json 解析,以及編排MemoService(執行 git 只讀探測、讀取 fs、fetch npm registry)。
- Browser 端:
lib/client.js:負責通過conversation.session.header.actions注入入口按鈕,以及使用shell.overlay渲染浮動面板,通過settingsScope讀寫數據。
權限邊界:
* Git 僅使用只讀命令(如 status --porcelain=v1 -b、log -1、remote -v、rev-parse --show-toplevel)。
* npm 僅執行 GET 請求。
* 文件系統僅讀取 package.json。
數據流:
* 自動探測結果不落盤,僅在內存中展示。
* 手動覆蓋的版本、備註、標籤等數據寫入 settings namespace,實現跨會話持久化。
注意事項¶
- 探測只在打開面板或手動刷新時執行,不常駐輪詢。
- Git 命令設置了 graceMs=5000 超時兜底,npm 查詢設置了 8s 超時,失敗時僅降級該字段顯示。
- 插件安裝後以當前 dsh 進程的權限運行,安裝前建議檢查源碼與許可證。
結語¶
dsh-session-memo 通過將項目狀態可視化,減少了在對話中切換終端查看狀態的時間。更多細節與源碼可訪問其 GitHub 倉庫。