前言¶
在 DeepSeek Harness(DSH)裏跑 100 到 1000+ 輪對話時,早期定下的決策、用戶糾正過的數字、以及未收尾的任務線,常常在 compaction、摘要或進程重啓之後從上下文裏消失。單靠模型窗口或宿主自帶的壓縮,很難保證「可覈對、帶條件與來源」的信息一直可用。下面介紹社區插件 dsh-long-memory:它在本地用 SQLite 記錄已提交會話事件,用確定性規則抽取記憶項,並在每一步模型調用前按 token 預算注入帶來源標註的上下文塊;全程不調用額外模型,也不改寫宿主會話日誌。
這是什麼¶
dsh-long-memory 由 dogbotowo-oss 維護,歸類爲 DSH 生態中的「記憶」類插件。倉庫:dogbotowo-oss/dsh-long-memory;社區目錄頁:skillhub.cn 插件頁。當前 package 版本爲 0.1.0,許可證 MIT。README 寫明已在 DSH 0.2.1-rc.3(@deepseek-ai/cordis 4.x)上驗證,數據與邏輯均在本地機器運行。
一句話定位:爲 DSH 會話提供可審計、跨 compaction 與重啓的 durable memory,並重新應用已啓用 skill 的規則索引。
核心功能¶
資料中的能力可按流水線理解:在 DSH 的 step 邊界,agent/pre-step 觸發檢索、組裝並注入一條 user 角色的證據消息;與此同時,已提交的 session/event 進入 capture → extract →(可選)validate,並寫入 assembly log。
-
Capture(捕獲)
將已提交的宿主事件(用戶/助手消息、工具調用與結果、compaction 事件、命令等)追加寫入本地 SQLite 證據表。按事件序號冪等寫入,重試、重啓與回放不會重複落庫。大體積工具結果與 compaction 摘要會在宿主可能無法回放時額外歸檔。 -
Extract(抽取)
對用戶消息用確定性規則增量抽取記憶項,不調用模型。事實、決策、約束、偏好與開放問題分存;數字與單位、限定條件一併保存;助手側內容僅作爲 proposals 記錄。支持顯式糾正檢測,以及Goal:、Progress:、TODO:等任務狀態行合併。 -
Skills 索引
將 skill 內容快照爲版本化行,規則文件解析爲四類:stable rule、data convention、current state、operational lesson;其中 current state 隨上下文變化,不作爲硬編碼校驗規則。 -
Retrieve(檢索)
在當前 session 範圍內,用 SQLite FTS5(trigram)與 LIKE 回退,對活躍記憶項、規則與證據排序;README 說明排序考慮 exact-match、scope 與 recency 等加權。 -
Assemble(組裝)
在 token 預算內確定性順序組裝注入消息:穩定頭、常駐規則核、任務狀態、相關規則/記憶項與證據片段。默認 soft budget 約 3000 estimated tokens;預算只限制注入量,不限制存儲。memory explain可查看各段 included / truncated / omitted 及原因。 -
Validate(校驗,可選)
對已提交助手輸出做確定性檢查,可選 dispatch 前 precondition;默認關閉,不做猜測式修復。 -
與 compaction 協作
宿主壓縮表面上下文後,下一步從本地證據重新組裝 memory;插件不重寫宿主 session log。
設計優先級在 README 中寫得很明確:準確性優先於省 token——可驗證記憶優於短摘要,保留原始證據優於不可審計的推導,衝突時保留雙方並記錄 supersession,而非靜默選邊。
環境要求¶
- DSH 0.2.1-rc.3(
@deepseek-ai/cordis4.x)。 - Node.js
^22.15.0 || >=24.0.0(使用node:sqlite;FTS5 trigram 分詞對 CJK 友好,需 Node >= 22.5)。 - Windows、macOS 或 Linux;插件本身無 native 編譯步驟,SQLite 來自 Node 運行時。
安裝與啓用¶
安裝前請自行閱讀倉庫源碼與 LICENSE;插件以當前 DSH 進程權限運行,數據庫默認落在 <DSH_HOME>/long-memory/(可通過配置 dataDir 修改)。
從 GitHub 安裝(README 原文):
dsh plugin --profile <profile> add github:dogbotowo-oss/dsh-long-memory
若已有本倉庫 checkout,也可把路徑作爲插件目錄:
dsh plugin --profile <profile> add <path-to-plugin>
包內帶 cordis.patch.yml 與 package.json 中的 bundle patch 條目,添加後無需單獨 build。
安裝後打開 session,執行:
memory status
用於確認插件已加載、數據庫已打開且 schema 版本匹配。
配置要點¶
各配置項均可選,缺省見 src/config.js;完整樣例見 examples/config.json。主開關與庫文件:
| 分組 | 作用 |
|---|---|
enabled, dataDir, dbFile |
總開關與庫路徑;dataDir 爲空時使用 <DSH_HOME>/long-memory/ |
assembly |
注入消息預算(如 softBudgetTokens 默認 3000)、各段上限、compaction 後是否再注入等 |
extraction |
確定性抽取開關 |
retrieval |
候選數量與排序加權、minScore 過濾 |
compatibility |
與宿主 compaction 策略協作 |
validation |
確定性 checks / preconditions(README 配置表中有說明,正文截斷處亦提及) |
assembly.evidenceTypes 默認 ["user/message"]:工具輸出可檢索,但默認不直接粘貼進請求,以降低不可信/注入內容進入上下文的風險。
示例片段(與 README 一致,可按需裁剪):
{
"enabled": true,
"dataDir": "",
"dbFile": "memory.sqlite",
"assembly": {
"enabled": true,
"softBudgetTokens": 3000,
"includeTaskState": true
},
"extraction": {
"enabled": true,
"immediateCorrections": true,
"scanUserMessages": true
},
"compatibility": {
"compactionPolicy": "auto",
"reinjectAfterCompaction": true
}
}
典型用法¶
- 安裝插件並在 session 中運行
memory status做健康檢查。 - 正常長會話對話;插件在後臺 capture / extract,並在每步 pre-step 注入預算內的證據塊。
- 需要理解「這一步注入了哪些段、爲何截斷」時,使用 README 提到的
memory explain。 - 診斷 schema、計數、checkpoint 滯後與兼容性時,README 指向
src/diagnostics.js及相關診斷能力(具體 slash 命令名以倉庫commands配置爲準,默認命令前綴爲memory)。
倉庫提供離線長會話評測腳本(npm run eval / eval:quick),README 中有 Evaluation results 章節供對照 baseline;本文不展開具體分數,以倉庫文檔爲準。
適用場景與注意¶
適合:需要在同一 DSH profile 下連續多輪開發或運維對話,且必須保留「已定決策、糾正過的精確數值(含條件與來源)、任務狀態與 skill 規則」的會話;希望 memory 完全本地、無額外模型 API 成本。
注意:
- 記憶質量依賴確定性規則與本地證據,不是 LLM 摘要;未檢索到的內容應表現爲 unknown / not retrieved,而非臆造回憶。
- 默認不把 tool 結果 inline 進注入塊,若業務需要須在
evidenceTypes等處顯式調整並理解安全風險。 - 社區目錄(如 skillhub.cn)與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,選型時以倉庫 README、許可證與自身安全策略爲準。
結尾¶
dsh-long-memory 把長會話裏容易丟的「證據 + 決策 + skill 規則 + 任務狀態」落在本地 SQLite,並在 compaction 與重啓後仍能按預算注入模型步驟。若你要試用或貢獻,可從目錄頁與 GitHub 進入:
- 目錄頁:https://www.skillhub.cn/plugins/dogbotowo-oss/dsh-long-memory
- GitHub:https://github.com/dogbotowo-oss/dsh-long-memory