dsh-session-memo:DSH 對話側邊備忘錄插件

前言

DSH(DeepSeek Harness)的 Web UI 插件生態允許開發者擴展對話界面。dsh-session-memo 是一個對話側邊備忘錄插件,它將當前會話工作區的 GitHub 同步狀態 / npm 發佈狀態 / 項目版本 / 備忘標籤 彙總到一個可隨時呼出的浮動面板中,方便在對話中快速掌握項目上下文。

插件簡介

  • 名稱:dsh-session-memo
  • 維護者:LucienLL
  • 類別:客戶端
  • 許可證:MIT

該插件旨在解決在 DSH 對話中快速查看項目當前狀態(如 Git 同步情況、npm 版本差異)的需求,同時提供手動記錄備忘的功能。

核心功能

  1. 自動探測 Git 狀態:探測當前 Git 分支、與上游的同步狀態(ahead/behind)、未提交改動數(dirty)以及衝突數。
  2. npm 發佈狀態對比:對比本地 package.json 版本與 npm registry 最新版本,判斷是否落後。
  3. 項目版本管理:自動探測項目版本,支持手動輸入覆蓋。
  4. 備忘標籤與備註:支持備忘標籤的自由增刪,以及備註的自由文本輸入。
  5. 狀態聯動:與 dsh-session-status 插件狀態標籤弱聯動,面板頭部顯示當前會話狀態並可點擊切換。

安裝與啓用

在 DSH profile 下執行以下命令安裝:

dsh plugin --profile web add dsh-session-memo

安裝完成後,重啓 dsh web 即可生效。

使用方式

  1. 打開面板:在 DSH Web 對話頭部點擊 📋 按鈕。面板打開時會自動探測一次狀態,也可在面板內手動刷新。
  2. GitHub 同步:面板中顯示當前分支、上游地址及同步狀態。
    • 當 behind > 0 或 dirty > 0 時,狀態爲琥珀色(如“落後 2 · 3 個未提交”)。
    • 當存在衝突時,狀態顯示爲紅色。
    • 當完全同步時,顯示綠色“已同步”。
  3. npm 發佈:顯示包名及本地版本與 Registry 最新版的對比。落後時提示“可發佈新版本”。可點擊“標記已發佈”手動記錄發佈時間,但自動比對仍會顯示實際狀態。
  4. 版本覆蓋:在版本輸入框中手動輸入版本號,按回車或失焦保存。點擊“恢復”按鈕可回到自動探測模式。
  5. 備忘標籤與備註:自由輸入標籤內容,失焦後自動保存;備註爲自由文本,失焦自動保存。
  6. 狀態切換:面板頭部顯示 dsh-session-status 的當前狀態 Pill,點擊可循環切換(進行中 → 已結項 → 擱置中 → 無)。

工作原理

插件採用 Host + Browser 雙端架構。

  • Host 端:
    • lib/index.js:註冊 settings namespace dsh-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 倉庫。

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

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

小夜