前言¶
在 DeepSeek Harness(DSH)裏隨手記一段提示詞草稿、待辦或會話摘錄,很多人會裝社區裏的 @adamcjm/dsh-memo。上游 0.2.11 已經能落盤、打標籤、同步 GitHub,但正文按純文本展示:粘進去的 ## 標題、表格源碼原樣躺着;手機上輸入區、標籤雲和篩選條又把列表可視區擠到半屏;觸屏上輕輕一滑就被 SortableJS 當成拖拽,列表很難正常上下滾。
ymf2317-tech/dsh-memo-plus 是針對這些痛點的自用 fork。包名與面板 id 仍保持 @adamcjm/dsh-memo / memo,屬於 drop-in 替換,不是多裝一個面板,也不單獨遷數據目錄。下面按定位、改動點、接口用法和安裝方式說明。
這是什麼¶
- 倉庫: ymf2317-tech/dsh-memo-plus
- 目錄頁:SkillHub 插件條目
- 維護者:ymf2317-tech(上游作者 adamcjm,MIT)
- 當前包版本(資料中
package.json):0.3.3-ymfd.4,基於上游@adamcjm/dsh-memo@0.2.11 - 分類:記憶
一句話:在不動 memo 數據模型和 host API 的前提下,給客戶端補上 Markdown 渲染、佈局收緊、觸屏長按拖拽門控,以及面板內「筆記」區長文檔區。
與上游 0.2.11 的差異¶
| 能力 | 上游 0.2.11 | 本 fork |
|---|---|---|
| 正文 | white-space:pre-wrap 純文本 |
Markdown 渲染(標題/表格/代碼/引用/列表) |
| 長文 | 一條佔滿整屏 | 摺疊 9 行 + 展開全文 |
| 手機佈局 | 輸入區 80px + 標籤兩三行 + 篩選換行 | 輸入單行聚焦展開、標籤收起、篩選單行橫滾 |
| 觸屏 | 一滑就變拖拽 | 長按 220ms 才拖,正常上下滾動 |
| 長文檔 | 只能塞進備忘列表 | 「筆記」區(正文首行 # 標題 即名稱,全屏閱讀) |
核心功能¶
1. Markdown 渲染¶
host 半側新增 GET /memo/vendor/marked.js,把 profile 裏已有的 marked@18.1.3(node_modules/marked/lib/marked.umd.js)原樣提供;不新增 npm 依賴。client 按需 loadMarked(),renderMarkdown() 使用 marked.parse(gfm:true, breaks:true),按正文文本緩存(超過 400 條清空)。
渲染前經過 sanitizeHtml(),去掉 script/iframe/object/embed/link/style、on* 屬性、javascript: 協議。若拿不到 marked,則降級爲上游純文本行爲,不報錯、不阻塞面板。樣式覆蓋標題層級、表格橫向滾動、行內/塊代碼、引用、列表、鏈接與分隔線。
2. 佈局(CSS + 少量狀態)¶
輸入框默認約 40px 單行,:focus-within 再展開到 104px。標籤雲默認收起,只顯示 標籤 N ▸ chip。篩選條單行橫滾,不再換兩排。窄屏(max-width:720px)收緊頭部、隱藏條數、縮小同步按鈕,列表底部留安全區。備忘列表區域喫滿剩餘高度。
3. 觸屏拖拽門控¶
SortableJS 使用長按門控,鼠標端零延遲不變:
delay: 220,
delayOnTouchOnly: true,
touchStartThreshold: 6,
fallbackTolerance: 4,
配合 touch-action: pan-y 與 overscroll-behavior: contain,手機上先滾動,長按才排序。
4. 筆記本(備忘 / 筆記 雙 tab)¶
頂欄用 chip 在「備忘」與「筆記」之間切換。不單獨建表:用保留標籤「筆記本」區分長文檔,數據仍在同一套 notes/*.md 事實源,GitHub 同步、快照、附件與上游一致。
- 備忘區列表自動排除帶「筆記本」標籤的條目;「全部 / 待處理」計數也會扣除這部分。
- 標籤雲對用戶隱藏「筆記本」這一內部分類標記。
- 筆記列表:標題取正文第一個
# 標題行(否則取首行);摘要去掉 Markdown 記號後截 120 字。 - 閱讀:面板內全屏層,Markdown 渲染後可滾動;編輯爲等寬 textarea,
Ctrl / ⌘ + Enter保存。 - 刪除需兩次確認。保存時顯式傳
tags: ['筆記本', ...正文裏的 #標籤],避免歸類被正文覆蓋。
host 側 API 未改,仍復用 create / update / remove / list / tags。
5. 刻意未註冊 Agent 工具¶
插件沒有向 DSH 註冊 agent 工具:設計上是讓人工(或你自己寫的腳本)通過 HTTP 寫備忘,而不是讓模型默認自動讀寫私人筆記。
安裝與啓用¶
資料中的 README 未給出 dsh plugin add github:... 一類一鍵命令;安裝思路是把本 fork 替換已存在的 @adamcjm/dsh-memo 包目錄(包名不變)。常見兩種方式:
A. link 到 fork 目錄(改代碼即時生效,自用推薦)¶
- 將 dsh-memo-plus 倉庫 放到本機某絕對路徑(例如資料作者示例中的
D:\dsh-workspace\packages\dsh-memo-plus)。 - 在 DSH profile(
~/.dsh/profiles/<profile>)的package.json的dependencies增加:
"@adamcjm/dsh-memo": "link:<絕對路徑>/dsh-memo-plus"
- 讓
<profile>/node_modules/@adamcjm/dsh-memo指向該目錄(Windows 可用目錄聯接,其他平臺用符號鏈接)。 - 重啓 DSH Web。
僅改 lib/client.js 時刷新瀏覽器即可;改 lib/index.js(含 /memo/vendor/marked.js)須再次重啓 DSH Web。
B. 覆蓋已安裝的上游目錄¶
把本倉庫的 lib/、cordis.patch.yml、package.json 覆蓋進 profile 下已有的 node_modules/@adamcjm/dsh-memo。DSH 仍識別爲同一插件,不會新建數據目錄。
說明:包名故意仍叫 @adamcjm/dsh-memo,以便 bundle patch 與面板 key 不變;因此該 fork 不能直接以原包名 npm publish。將來若改名發佈爲 dsh-memo-plus,需同步改 package.json 與 cordis.patch.yml 中的 name。
運行環境:package.json 要求 node >= 22.5.0。
典型用法:走 HTTP API,不要手改磁盤文件¶
對 AI 或自動化腳本,唯一穩妥入口是 host 暴露的接口。不要直接編輯 notes/YYYY-MM/<ID>.md 再指望界面生效——需自拼 frontmatter、23 位大寫十六進制 id,並調用 POST /memo/api/rebuild 重建索引,漏步會導致 SQLite 與事實源不一致。
寫 # 標題 時井號後須有空格,否則可能被 stripTags 當成標籤剝離。
| 動作 | 請求 | 說明 |
|---|---|---|
| 新建 | POST /memo/api/create {body, tags?} |
返回 {item, stats};正文內 #標籤 會抽成標籤並從正文去掉 |
| 修改 | POST /memo/api/update {id, patch:{body?,tags?}} |
patch.tags 顯式給出則完全替換;否則從正文增量合併 |
| 刪除 | POST /memo/api/remove {id, hard?} |
默認軟刪(保留在 notes/ 且 git 可追) |
| 查詢 | POST /memo/api/list {filter,q,tag,limit} |
filter ∈ all / todo / done / today / pinned |
| 筆記本 | 同上,tags 含保留標籤 筆記本 |
備忘區 UI 會自動排除這些條目 |
數據目錄在 ~/.dsh/memo(SQLite、notes/*.md、附件、git),與代碼路徑無關;回滾 fork 不會丟備忘內容。README 中給出了 Windows 下從備份恢復上游 0.2.11 的 PowerShell 示例,可按同樣思路還原 package.json 與 node_modules 後重啓 DSH Web。
適用場景與注意¶
適合誰
- 已在用
@adamcjm/dsh-memo,希望備忘正文按 Markdown 閱讀、長條目不撐爆列表。 - 經常在手機或窄屏 Web 上翻備忘,需要更多列表高度和可滾動的篩選/標籤區。
- 想把長文檔放在同一 memo 數據體系裏,用「筆記」tab 全屏讀,而不是和單行待辦混在一起。
使用前請自行確認
- 插件以後臺 DSH Web / profile 進程權限 運行,能讀寫
~/.dsh/memo與用戶配置;安裝前應閱讀倉庫源碼與 MIT 許可證,確認符合你的安全策略。 - 這是社區維護的 fork,SkillHub 目錄與 DeepSeek / 幻方無官方從屬關係;星標與曝光以目錄頁爲準(資料抓取時爲 0)。
- 同步、GitHub、附件等行爲繼承上游;本 fork 主要改 client 體驗與 marked 路由,升級上游時需留意是否仍適合直接覆蓋。
結尾¶
dsh-memo-plus 不換一個插件 id,而是用 drop-in 方式把上游備忘改成「能讀 Markdown、能收佈局、能長按排序、能分區長文檔」的日常面板。若你正在維護 DSH 個人 profile,可從目錄頁瞭解分類與鏈接,再到 GitHub 按 link 或覆蓋方式替換 @adamcjm/dsh-memo 後重啓驗證。
- 目錄頁:https://www.skillhub.cn/plugins/ymf2317-tech/dsh-memo-plus
- GitHub:https://github.com/ymf2317-tech/dsh-memo-plus