前言¶
在 DSH(DeepSeek Harness)裏做開發和運維時,經常會遇到這樣的需求:會話進行中臨時記一條想法、貼一張截圖、留一個待辦,但不想爲了一條筆記打斷工作流。常見的做法是另開一個筆記應用,或者把內容塞進會話上下文;前者多一次切換,後者會讓上下文變長且難以檢索。
dsh-sticky-notes 就是針對這個場景的插件:它在 DSH 左側邊欄放一個圖標,點開就是一面便利貼牆,所有的讀寫都落在本地磁盤上,頁面刷新或 Harness 重啓後內容不會丟。同時它還暴露了一個給模型調用的工具,讓 Session 或 IM 機器人也能往牆上寫便籤。
這是什麼¶
dsh-sticky-notes 由 LoveStudyXin 維護,分類爲「記憶」。插件包自帶全部資源,安裝後不依賴額外依賴、構建步驟或配置,目標 DSH 版本爲 engines.dsh: ^0.2.1-alpha.2(要求構建包含 sidebar.panellist 槽位)。它解決的問題是:在對話流程內提供一處輕量的、可檢索、可備份的本地便籤空間,並允許自動化工具代入寫入。
核心功能¶
下面介紹的能力均來自插件 README,安裝後在面板內即可使用。
- 側邊欄入口:左欄出現面板圖標,點擊打開便利貼牆。
- 快速記錄:在頂部輸入框輸入文字,按
↵添加一條便籤;⇧↵換行,⌘/Ctrl + ↵同樣可以添加。 - 圖片筆記:支持粘貼截圖(
⌘V/Ctrl+V)、把圖片拖到牆上、或用附件按鈕選擇文件。每條便籤最多 6 張 PNG/JPG/GIF/WebP 圖片,單張不超過 8 MB;紙面上顯示縮略圖,點擊可看大圖,Esc關閉。 - 視覺:六種紙面顏色、輕微傾斜、masonry 佈局。
- 原地編輯:點擊便籤文字即可修改,點擊其他位置或按
⌘/Ctrl + ↵保存,Esc取消。 - 置頂與刪除:置頂會把便籤移到頂部;刪除後有 6 秒的撤銷提示。
- 搜索:過濾整面牆,底部顯示保存狀態。
- 本地備份、導出、導入:每次覆寫前都會先備份磁盤上的牆文件,最多保留最近 30 份;面板頭部提供一鍵恢復,也可以導出爲 JSON 或從 JSON 導入。
文字跟隨 DSH 當前的語言環境(中文/英文)。
安裝與啓用¶
從終端安裝:
dsh plugin add github:LoveStudyXin/dsh-sticky-notes
也可以從圖形界面安裝:打開 DSH → Plugins / 插件 → Add / 添加,粘貼同一個地址。如果使用本地檢出目錄(修改後刷新即可生效):
dsh plugin add link:/absolute/path/dsh-sticky-notes
安裝後保持插件啓用並刷新一次頁面(插件管理器要求重啓時則重啓 DSH)。左欄會出現便利貼圖標,點擊打開牆。插件附帶中文安裝說明 INSTALL.md。
典型用法¶
會話內調用工具 sticky_notes_add¶
插件在 Host 側註冊了一個面向模型的工具 sticky_notes_add,Session 無需打開瀏覽器即可寫便籤,這對由 IM 機器人(飛書、微信等)啓動的 Session 尤其有用——人只需要說「把這張圖存到便利貼裏」。
工具參數如下:
| 參數 | 含義 |
|---|---|
text |
便籤文字;給了圖片時可省略 |
color |
amber(默認)、rose、sky、mint、lilac、tangerine |
pinned |
是否置頂,默認 false |
imagePaths |
圖片文件路徑,絕對路徑或相對於調用 Session 工作目錄,最多 6 張 |
工具自己讀取文件字節,並執行與面板相同的規則(PNG/JPG/GIF/WebP,單張不超過 8 MB,每條最多 6 張),寫入同一個 notes.json,同樣先做覆寫前備份,返回 { noteId, noteCount, images }。
需要注意:模型不必看到圖片本身。IM 機器人把收到的圖片先放到工作區、再把路徑交給模型,因此純文本模型也能保存一張它沒有「看過」的截圖。
IM 零 token 命令 /sticky(可選補丁)¶
即使消息只是「存到便利貼」,IM 消息仍然消耗一次模型輪次。scripts/patch-dsh-im-sticky.mjs 會就地修補已安裝的 @xmanrui/dsh-im 包,讓以 /sticky 開頭的消息在不經過 Session 輪次的情況下直接寫入文字和圖片,並回復便籤 id。
# 在包目錄下執行
node scripts/patch-dsh-im-sticky.mjs --check # 僅報告
node scripts/patch-dsh-im-sticky.mjs # 應用(保留 lib/index.js.dsh-sticky.orig)
node scripts/patch-dsh-im-sticky.mjs --revert # 還原未修補的包
之後禁用再啓用「IM機器人」插件(或重啓 DSH),在飛書裏發送 /sticky 測試測試小肥魚,可附帶圖片。/sticky 不在插件的命令面板或 /help 中,需要直接輸入。
該補丁會就地修改第三方插件,因此 dsh-im 升級會覆蓋它,升級後需要重新執行腳本(腳本會校驗錨點,遇到未知包版本拒絕猜測)。修補後的路徑跳過了機器人命令權限檢查,請保持機器人的 allowlist 收緊。另外牆是單個 JSON 文件、採用最後寫入生效策略,開着便利貼面板時保存舊內容可能覆蓋 IM 寫入的便籤,IM 寫入後如面板開着,請重新加載面板。
存儲與限制¶
所有數據都是本地文件,不會只留在瀏覽器裏。路徑均位於 $DSH_HOME(默認 ~/.dsh)之下:
$DSH_HOME/state/sticky-notes/notes.json:牆本身。$DSH_HOME/state/sticky-notes/images/<id>.<ext>:粘貼的圖片字節。$DSH_HOME/state/sticky-notes/backups/notes-<timestamp>-<count>.json:覆寫前的牆備份(最多保留 30 份,編輯時每 30 秒最多一份),備份引用的圖片也會保留,恢復後不會出現缺圖。
取回或複製數據有三種方式:面板頭部「備份」列出本地備份、便籤數和恢復時間,一鍵恢復;「導出」下載當前牆爲 sticky-notes-<date>.json;「導入」用之前導出(或手工編輯)的 JSON 替換整面牆,無法渲染的條目會被跳過,服務端會先備份當前牆。備份彈層還會顯示 notes.json 的絕對路徑。
限制方面:一面牆最多 5000 條便籤、每次保存最多 64 MB JSON,超出部分在寫入時丟棄;同一面牆開兩個窗口時採用最後寫入生效策略。cordis.patch.yml 中的 config.dataDir 可以移動整個目錄,它是普通字符串(無 schema、不做 ~ 展開),必須給出絕對路徑。
如需把便籤額外同步到飛書多維表格,插件提供單向、只增的鏡像能力(可選):本地文件始終是權威來源,本地編輯或刪除不會改動飛書裏已推送的行,飛書不可達也不會阻塞本地保存(失敗會記日誌並在下一個 tick 重試)。配置由 scripts/setup-feishu-bitable.mjs 完成,它會創建字段爲 文字 / 顏色 / 置頂 / 創建時間 / 圖片 的「DSH 便利貼」表,並寫出 $DSH_HOME/state/sticky-notes/feishu.json。鏡像歷史記錄在 feishu-sync.json 中,重啓不會重複推送。
適用場景與注意¶
適合兩類使用者:一是想在日常 DSH 會話裏隨手記錄想法和截圖、又不希望上下文被打斷的開發者;二是需要讓機器人把外部消息或圖片歸檔到便籤牆的自動化場景。
使用前請注意:插件以當前 DSH 進程的權限運行,安裝前應查看源碼與許可證(package.json 標註爲 MIT),確認補丁腳本的改動範圍後再決定是否啓用。/sticky 和飛書鏡像屬於可選能力,其中 /sticky 會對第三方 @xmanrui/dsh-im 包做就地修改,升級後需要重新執行補丁腳本。
dsh-sticky-notes 的價值在於把便籤牆、本地備份和模型工具三者合到一個側邊欄插件裏,既保留人工隨手記錄的入口,也給自動化留出寫入接口。目錄頁在 https://www.skillhub.cn/plugins/LoveStudyXin/dsh-sticky-notes ,源碼在 https://github.com/LoveStudyXin/dsh-sticky-notes 。
(社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係;插件版本、星標與許可證均以目錄頁和倉庫原文爲準。)