用 dsh-auto-memory 給 DeepSeek Harness Web 加上三層自動記憶

前言

DeepSeek Harness(dsh)是 DeepSeek 開源的智能體運行時,核心理念是「一切皆插件」:模型、工具、會話、沙箱和界面都可以替換或疊加。官方倉庫在 deepseek-ai/deepseek-harness。社區裏也有獨立的插件目錄站點,用來發現和對比插件,它與 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。

日常用 dsh 寫代碼、改項目時,一個很具體的問題是:會話一關,約定、踩坑和待辦就散了。下次再開,模型不知道你昨天定過什麼架構、偏好怎麼寫、deadline 卡在哪一天。有人靠手動貼筆記,有人換工具後又要從頭積累。dsh-auto-memory 就是衝着這件事做的:面向 DSH Web,把記憶寫成本地 Markdown,按層注入,並在每輪對話後嘗試自動沉澱。

這是什麼

dsh-auto-memory 是一款記憶類插件,由 Aik358 維護,面向 DSH Web GUI。目錄頁的定位是:用戶級、項目筆記、每日日誌三層記憶自動注入與檢索,附每日反思、可視化面板與設置頁,並可繼承其他 AI 工具的歷史記憶。

當前可覈對的發佈信息如下:

  • 目錄頁分類:記憶;許可證:BSD-3-Clause
  • GitHub:Aik358/dsh-auto-memory,主要語言 JavaScript,倉庫 star 爲 13(目錄頁仍顯示 6,以 GitHub 爲準)
  • npm 包名:@a9i5k4/dsh-auto-memory,本文覈對到的版本爲 0.1.26
  • package.json 裏聲明 dsh.client.platformweb,也就是掛在網頁界面上用,不是 headless 專用包

它要解決的問題很直接:讓同一套用戶規則、項目約定和近期日誌,在後續會話裏還能被模型讀到;常規工作儘量不用你記得去記。

核心功能

倉庫 README 把能力拆成記憶引擎和界面兩部分。下面只寫兩邊都能對上、並且 README / 目錄頁寫明瞭的內容。

1、三層記憶,外加一層反思

默認位置 用途
用戶級記憶 ~/.dsh/memory/MEMORY.md 跨項目規則和偏好
項目筆記 ~/.dsh/memory/workspaces/{工作區}/MEMORY.md 項目約定、決策、架構要點
每日日誌 ~/.dsh/memory/workspaces/{工作區}/YYYY-MM-DD.md 只追加的工作日誌
每日反思 ~/.dsh/memory/workspaces/{工作區}/reflections/YYYY-MM-DD.md 成果 / 教訓 / 下一步,後臺結構化保存

工作區記憶集中放在 ~/.dsh/memory/workspaces/ 下,每個工作區一個子目錄。README 說明舊版散落在各工作區 .dsh-memory/ 裏的文件,升級後首次運行會自動遷移,舊副本保留不刪。日曆數據在用戶級 ~/.dsh/memory/CALENDAR.md,跨工作區共享。

2、精簡注入,細節按需讀

每次組裝系統提示詞時,插件在末尾追加 <memory_system> 塊,內容包括用戶規則、項目筆記、反思精華、最近 1 天日誌尾部、外部記憶路徑、未完成日曆事項和寫入紀律。默認注入預算是 injectBudgetChars: 2400,最近日誌只取 1 天。完整文件用 memory_read / memory_recall 按需拉取,而不是整份歷史塞進 prompt。

README 還寫了兩點工程約束:靜態規則儘量保持字節穩定,方便 DeepSeek 前綴緩存命中;令牌、密鑰、憑據這類敏感段落會從注入裏過濾,文件本身仍保留。

3、每輪自動沉澱

對話一輪結束後,小型子代理評估本輪內容,值得留下的會寫入今日日誌,格式類似 - 21:03 [自動沉澱] …。項目決策、架構要點會升格到項目筆記(帶 ## YYYY-MM-DD 標題),跨項目規則升格到用戶級記憶。寒暄輪按字數門檻跳過,默認 autoConsolidateMinChars 爲 240;按 turn 去重;子代理自己的輪次不參與。默認每天最多自動沉澱 8 次,冷卻 30 分鐘,22:00–08:00 冷卻時間翻倍。這些都可以在 ~/.dsh/dsh-auto-memory.json 或設置頁「自動化」分組改。

需要主動整理時,模型還可以調用 memory_consolidate,從近期日誌裏提煉長期決策和偏好,寫入 MEMORY.md

4、面板、檢索、日曆和跨工具繼承

啓用後,Web 側邊欄會出現「記憶」入口,浮層面板包含概覽、日誌、筆記、反思、接續、日曆、檢索。概覽頁會按早 / 上午 / 中午 / 下午 / 晚上生成問候,並把當日工作收成三級抽屜;離開超過 1 小時再打開,會走「歡迎回來」並補上期間完成的事項。問候按時段緩存,不是每次打開都重新打模型。

檢索頁除關鍵詞外還有「智能檢索」:把自然語言擴成 3–6 個關鍵詞,掃描三層記憶和反思,再給出帶出處的回答。README 給的例子是「上次發佈 npm 踩的坑」會擴成「發佈 / 踩坑 / GitHub / npm / 推送」這類詞。說明裏寫明:不編造記憶裏沒有的事實。

日曆是四象限月視圖,並支持當天 07:00–22:00 時間軸。對話裏出現 deadline、約定時,模型可用 calendar_add / calendar_list / calendar_done / calendar_remove 維護;未完成事項會注入後續會話,直到勾掉。

「接續」用來發現並導入其他工具裏已經攢下的記憶。README 點名的來源包括 WorkBuddy、CodeBuddy、Claude Code、Codex,以及項目約定文件。導入後按來源查看或移除,內容按需讀取,不再整段注入。

安裝與啓用

目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端裏運行:

dsh plugin add github:Aik358/dsh-auto-memory

需要可復現安裝時,按目錄頁的寫法固定 commit 哈希:

dsh plugin add github:Aik358/dsh-auto-memory#commit

commit 換成倉庫裏實際的提交哈希。插件以當前 dsh 進程的權限運行,安裝時可能執行代碼,裝之前應先看源碼倉庫和許可證。

倉庫 README 另外給了一條面向 Web profile 的 npm 安裝路徑,前提是已經裝好 dsh,並且至少啓動過一次 dsh web。在 profile 目錄執行:

cd ~/.dsh/profiles/web
pnpm add @a9i5k4/dsh-auto-memory

沒有 pnpm 時可以用:

npm install @a9i5k4/dsh-auto-memory

然後編輯該目錄的 package.json,在 dsh.profile.bundles 數組裏追加:

"@a9i5k4/dsh-auto-memory"

保存後重啓 dsh web。側邊欄出現「記憶」入口,說明插件已經掛上。README 還提到:pnpm v11 默認不裝發佈未滿 1 天的包;當天要立刻用新版本,需要在該目錄的 pnpm-workspace.yaml 裏設 minimumReleaseAge: 0,或寫成顯式版本,例如 pnpm add @a9i5k4/dsh-auto-memory@0.1.26

更新可以在同一目錄執行 pnpm up @a9i5k4/dsh-auto-memory,或到設置 → 自動記憶裏用「檢查更新」。改完插件集後都需要重啓 dsh 纔會生效。

典型用法

裝好之後,多數日常工作不用先記一套命令。按 README 的設計,常規對話結束就會嘗試寫今日日誌;你在面板裏能看到「今日已自動沉澱 N 條要點」。需要人工干預時,模型側註冊了這些工具:

memory_log / memory_note / memory_user / memory_recall / memory_external / memory_maintain / memory_status / memory_reflect / memory_consolidate / calendar_add / calendar_list / calendar_done / calendar_remove

幾個和文檔一致的用法:

1、讓模型按自然語言查記憶。在檢索頁點「智能檢索」,或在對話裏直接問「上次發佈 npm 踩的坑」。命中後應能看到來源(某日日誌 / 項目筆記 / 用戶級記憶),而不是一段沒有出處的總結。

2、讓日曆跟着對話走。會話裏說到截止日期或會議,模型應調用 calendar_add,並在回覆正文裏說明已經寫入;完成後用 calendar_done。未完成項會進下一輪系統提示詞。

3、從其他工具接記憶。打開面板的「接續」,按來源查看、接入或刪除。已接入的來源會標 ✓,筆記和用戶級可以分別處理。

4、改注入和行爲。設置 → 自動記憶可以改存儲路徑、注入預算、反思風格、界面語言(中文 / English)和字號。也可以直接改 ~/.dsh/dsh-auto-memory.json。倉庫給出的默認值如下:

{
  "userMemoryDir": "~/.dsh/memory",
  "projectMemoryDir": ".dsh-memory",
  "injectEnabled": true,
  "injectBudgetChars": 2400,
  "recentDaysInjected": 1,
  "reflectEnabled": true,
  "reflectStyle": "auto",
  "locale": "zh",
  "autoConsolidate": true,
  "autoConsolidateMinChars": 240,
  "autoConsolidateCooldownMinutes": 30,
  "autoConsolidateDailyMax": 8,
  "externalInjectionChars": 1400,
  "memoryRoot": "~/.dsh/memory/workspaces",
  "dayBoundaryMinutes": 450
}

dayBoundaryMinutes 默認 450,也就是早上 7:30 纔算新的一天:日界前的工作記入前一天日誌,前一天的反思也要過了日界纔開始。用戶級記憶每天寫入預算約 4000 字,項目筆記約 3000 字;超限時先壓縮「今天之前」的舊內容再寫,壓縮失敗則歸檔到 archived-user.md / archive/notes-archived.md,README 寫明信息不丟。超過 30 天的日誌可用 memory_maintain 蒸餾進項目筆記,原文歸檔到 archive/

適用場景與注意事項

更適合已經在用 dsh web、需要跨會話記住項目約定和近期進展的人。如果你同時用過 Claude Code、Codex、CodeBuddy 或 WorkBuddy,並且希望把那邊攢下的記憶接過來,這個插件的「接續」就是衝着這件事。它不是知識圖譜型記憶(目錄裏同類還有 graph-memory、mnemon 等),而是明文 Markdown 加自動注入。

使用前有幾條邊界需要看清楚:

  • 插件以當前 dsh 進程權限運行,安裝可能執行代碼。裝之前檢查 GitHub 倉庫 和 BSD-3-Clause 許可證;需要可復現時固定 commit。
  • 面向 Web。package.json 聲明 platform 爲 web,不要默認它在 headless 流程裏也有同樣的面板和注入行爲。
  • 記憶文件是明文 Markdown。README 寫明:除非用戶明確要求,否則不把密鑰寫進記憶;即便寫進去,注入階段也會過濾憑據類段落,但文件仍在磁盤上,要注意目錄權限和備份範圍。
  • memory_recall 的歷史會話檢索依賴部署的 session-query 索引;沒啓用時只做本地檢索。
  • 自動沉澱有次數和冷卻限制,寒暄輪會被跳過,不能當成「每一句都會入庫」。
  • 插件集變更必須重啓 dsh。當前版本迭代很快(npm 上 2026-08-14 發佈 0.1.0,到 0.1.26 只過了幾天),升級後先看 README 的遷移說明。

小結

dsh-auto-memory 把用戶規則、項目筆記和每日日誌做成三層本地記憶,用精簡注入控制 token,再用每輪自動沉澱減少「忘了記」這件事。日曆、智能檢索和跨工具繼承是同一套文件之上的界面與工具,不是另一套雲端賬號體系。

目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-auto-memory/

GitHub:https://github.com/Aik358/dsh-auto-memory

npm:https://www.npmjs.com/package/@a9i5k4/dsh-auto-memory

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

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

小夜