前言¶
在 DSH 裏做長任務時,常遇到兩類記錄需求:一類是給智能體下的臨時提醒,比如”明天 10 點交週報”;另一類是開發過程中隨手記的狀態、待辦、顏色約定。這些內容如果散落在對話裏,隨着會話滾動就丟了;如果回到外部筆記工具,又和當前在改的插件上下文隔開。dsh-sticky-notes 解決這個問題的方式是:把一塊便籤板塞進 Harness 的左側欄,同時把 note_create / note_list / note_update / note_delete 四個工具暴露給智能體,讓界面和工具寫的是同一份存儲。
下面介紹這個插件。
這是什麼¶
dsh-sticky-notes 是社區開發者 439436269-ctrl 維護的 DSH 插件,分類爲”記憶”。它在 DeepSeek Harness 的側欄加一個便籤入口,點擊後打開一塊平鋪的便籤板;同時通過四個 note_* 工具讓智能體讀同一批便籤。
它的特點是存儲落在插件的 sticky_notes storage domain 下($DSH_HOME/storages),而不是 localStorage。換句話說,換端口、換瀏覽器、重啓桌面應用,筆記都還在。
核心功能¶
經覈對官方 README,實際提供的能力包括:
- 側欄入口與平鋪板:左側欄顯示便籤圖標,點擊後在主列打開板;每行密度可選 2 / 3 / 4 / 5,或自動填充寬度,選擇會被記住。
- 七種顏色:plain、amber、rose、mint、sky、violet、slate。卡片主體、邊框、圓點共用一個 accent,工具欄可按顏色過濾。
- 置頂與回收站:置頂卡片置頂並帶圖釘標記;刪除進回收站標籤頁,可恢復、徹底刪除或清空,刪除時 toast 提供撤銷。
- 編輯對話框:點擊卡片打開浮層,含標題、正文、顏色、置頂開關、字數統計、複製、複製副本、歸檔/恢復、永久刪除。打字停手約 0.55 秒後自動保存。
- 搜索、排序、導出:對標題和正文做文本搜索;按最近更新、創建時間、標題排序;一鍵把整板導出爲 Markdown。
- 快捷鍵:
Ctrl/Cmd+N新建、Ctrl/Cmd+F聚焦搜索、Escape關閉。 - 持久化存儲:見上文,落
$DSH_HOME/storages下的sticky_notesdomain。 - 智能體工具:
note_create、note_list、note_update、note_delete。
板子與工具操作同一份數據:對智能體說”記一條:明天 10 點交週報,放琥珀色”,卡片就會出現在板上。
四個工具的參數¶
這四個工具都以單個文本塊返回結果,便籤 id 形如 note-<base36 time>-<random>。
| 工具 | 參數 | 作用 |
|---|---|---|
note_create |
body、title?、color?、pinned? |
創建一條;省略 title 時取正文第一行 |
note_list |
query?、color?、pinned?、includeArchived?、sort? |
按板子的篩選條件列出;回收站默認不含,需顯式請求 |
note_update |
id、title?、body?、color?、pinned?、archived? |
局部更新某條;archived: false 可恢復 |
note_delete |
id、permanent? |
默認移入回收站,permanent: true 時徹底刪除 |
安裝與啓用¶
安裝命令來自 README 原文,支持 npm 與本地目錄兩種來源:
dsh plugin add @vfvrpq/dsh-sticky-notes # from npm
dsh plugin add /path/to/dsh-sticky-notes # from a checkout, while developing
裝完後 bundle patch 會插入一行 sticky-notes,dsh.client 塊讓 web 端加載 lib/client.js。目錄方式安裝後應用不需要重啓,宿主會重載這一行;但已經打開的標籤頁只會在下次加載時拿到新 bundle。可以用下面這條命令確認行是否掛載:
dsh --profile <name> --dump-config | grep sticky-notes
運行環境要求 Node >= 22,依賴 @deepseek-ai/cordis ^4.0.1、@deepseek-ai/dsh-storage-domain ^0.2.0-rc.2、@deepseek-ai/dsh-tools ^0.2.0-rc.2。許可證爲 MIT,包版本 0.2.0。
HTTP 接口¶
板子的瀏覽器端和後端只走一條需要鑑權的路由,掛載在 /api 之下,因此會先經過連接服務的 Host/Origin 校驗和瀏覽器會話檢查:
GET /api/dsh-notes -> { ok, notes: [...] } (含回收站)
POST /api/dsh-notes { action: ... } -> { ok, note?, notes: [...] }
create { title?, body, color?, pinned? }
update { id, title?, body?, color?, pinned?, archivedAt? }
archive { id } (alias: delete)
restore { id }
purge { id }
duplicate { id }
clear-trash { }
路由路徑通過 globalThis.__DSH_STICKY_NOTES_CONFIG__ = { routePath } 注入頁面,瀏覽器端不硬編碼路徑。
代碼結構¶
如果想改這個插件,官方 README 給出的目錄劃分是:
lib/index.js wiring: domain, route, tools, page injection
lib/config.js route path, domain name, limits
lib/palette.js colour ids shared with the board
lib/notes.js pure shaping/patching/filtering/ordering(無運行時 import)
lib/domain.js storage domain + repository(archive、restore、purge、duplicate)
lib/route.js /api/dsh-notes 處理
lib/tools.js 四個工具的 spec
lib/client.js 瀏覽器端:側欄入口、板子、編輯框、字典、樣式
locale/*.json meta.title / meta.description
lib/notes.js 明確標註爲純函數,不依賴運行時,方便單測;adapter.test.js 用 stub 的 Harness 包掛載真實 lib/,驗證 apply() 能把 domain、route、tools 和銷燬鉤子接在一起。
測試¶
單元測試直接跑:
node --test test/*.test.js
覆蓋範圍:notes.test.js 測純 shaping、顏色、置頂、回收站和排序;route.test.js 測每個 HTTP 分支;client.test.js 測 bundle 註冊和篩選/排序文案;adapter.test.js 測 apply() 的裝配。
瀏覽器端 e2e 需要一個 web host,用隔離 profile 啓動後再驅動:
dsh --profile <name> --no-open --port 0 # 輸出 http://127.0.0.1:<port>/?token=…
node scripts/e2e-notes.mjs --base http://127.0.0.1:<port> --token <token>
該腳本會在 UI 裏創建一條有色置頂卡片、把網格切到每行 3 列、搜索、歸檔再經回收站恢復,並在顏色、置頂、內容必須跨 reload 存活的前提下判定成敗。運行證據在倉庫的 VERIFY.md。
適用場景¶
適合以下幾類使用者:
- 做長任務時需要給智能體留提醒、狀態、顏色約定,希望對話裏說一句就能落到板上的人。
- 想用程序化方式(API 或工具調用)讀寫同一份便籤,而不是手動點 UI 的人。
- 需要在自動化流程裏批量 create / list / update / delete 便籤,把便籤當作輕量結構化存儲的人。
不適合以下需求:官方 README 明確寫明沒有文件夾、標籤,也沒有跨設備同步——同步範圍限於持有該 storage domain 的 Host。卡片順序按置頂加排序鍵生成,不支持拖拽重排。單條正文上限 20,000 字符,標題上限 200,超長會截斷而非拒絕。
注意¶
- 插件以當前 dsh 進程的權限運行,能訪問
$DSH_HOME/storages下的 domain 與工具層。安裝前建議先讀一遍源碼和許可證(MIT),確認自己接受這些能力邊界。 - npm 上的包名是
@vfvrpq/dsh-sticky-notes,GitHub 倉庫爲439436269-ctrl/dsh-sticky-notes,兩者歸同一作者維護。作者標註的倉庫、主頁、issue 入口都指向 GitHub。 - 該插件屬於社區目錄裏的條目。社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係,使用時不要當成官方應用商店的背書。
結尾¶
dsh-sticky-notes 的價值在於把”隨手記”和”給智能體下達的提醒”合到同一塊板、同一份存儲裏,省掉了在對話和外部筆記之間來回搬運的步驟。功能剋制,邊界清楚:沒有文件夾、沒有跨 Host 同步、沒有拖拽排序。
目錄頁:https://www.skillhub.cn/plugins/439436269-ctrl/dsh-sticky-notes
GitHub:https://github.com/439436269-ctrl/dsh-sticky-notes