dsh-memory-graph:Harness 下的純文本長期聯想記憶

前言

在 DeepSeek Harness(DSH)裏做智能體或長期項目時,上下文窗口和「壓縮上下文」只能保證當前對話塞得進窗口;被壓掉的內容不會以可讀形式留在會話外。若希望幾個月前的決定、偏好和實體關係還能被找回,且數據落在自己可控的目錄裏,而不是依賴向量庫或二進制存儲,就需要一層與壓縮策略並存的長期記憶。dsh-memory-graph(npm 包名 @ilaomianyang/dsh-memory-graph)由社區維護者 ilaomianyang 發佈,分類爲「記憶」;它不自動注入上下文、不做 embedding、不用二進制庫,而是在 Harness 之外維護一份可 grep、可備份、可版本化的純文本記憶庫。

這是什麼

一句話:給 DeepSeek Harness 的長期聯想記憶——原始對話事件、帶類型的記憶卡片、實體索引頁,都放在你指定的本地 vault 裏。

與「壓縮上下文」的關係在 README 裏寫得很清楚:壓縮是工作記憶策略,本插件是長期記憶;兩者並存,不是替代。原始層只追加不改寫;語義層用 markdown 卡片承載檢索;衝突通過 superseded 鏈保留「怎麼變成現在這樣」,而不是刪掉舊結論。

三層結構與卡片形態

記憶庫默認在 ~/dsh-memory(可在 profile 裏改 vaultDir),目錄大致如下:

~/dsh-memory/
├── vault.json
├── projects.json
├── README.md
├── graph.html
├── episodes/2026-11-02.jsonl
├── cards/2026-11/
├── entities/
└── audit/

三層分工:

  1. episodes/:原始層,每輪追加一行 JSON,不蒸餾、不刪除,作爲對賬依據。
  2. cards/:語義層,從原始層蒸餾出的帶類型記憶卡片(markdown),是模型檢索的主要對象。
  3. entities/:索引層,每個實體一頁,帶提及時間線,用於跨項目聯想。

模型檢索走 cards + entities;episodes 供蒸餾原料與事後覈對。卡片 front matter 含 kind、status(active / superseded / retracted)、supersedes 等字段;被推翻的記憶不會物理刪除,而是標記爲 superseded 並指向新卡片。

在 Harness 裏怎麼用

裝完並重啓後,看記憶有三個入口(README 原文):

  • 會話頁籤裏的 「記憶」:展示該會話記住了什麼。
  • 記憶庫根目錄的 graph.html:整庫關係圖,可雙擊在瀏覽器打開。
  • 左側欄 「記憶圖譜」:同一張整庫圖嵌在應用內。

配置在 設置 → 記憶圖譜,一頁四組(採集 / 隱私 / 抽取器 / 檢索),保存後即時生效,無需重載。總開關 enabled、庫路徑 vaultDir、默認項目 defaultProject、跨項目連接 crossProject 等鍵在啓動時讀取,需改 cordis.patch.yml 並重載插件;YAML 與設置頁以 profile 爲最終事實。

抽取器默認 extractor.enabled 爲 false:只採集原始事件、不調用模型蒸餾;開啓後可選 transport: harness(借用設置裏選中的模型)或 http(自填 OpenAI 兼容端點)。自動蒸餾由 auto.* 控制,含追平 catchUp 與每日批次數上限 maxBatchesPerDay。

隱私組可對郵箱、路徑做替換,並用 denyPatterns 追加正則;攔截記錄落在 audit/,只記規則不記內容。

安裝與啓用

從 npm 安裝(資料原文命令,勿自行拼接 dsh plugin add):

plugin_manager action=install_bundle target="@ilaomianyang/dsh-memory-graph"

pnpm 會一併安裝依賴 @deepseek-ai/schemastery(設置頁 schema 投影用;未裝時插件仍可運行,但側欄不會出現「記憶圖譜」設置頁)。國內 registry 可加:

plugin_manager action=install_bundle target="@ilaomianyang/dsh-memory-graph" registry="https://registry.npmmirror.com/"

裝完後必須重啓一次 Harness(關窗口重開):Web 側插件清單在啓動時掃描 loader 與 package.json 的 dsh.client,進程內緩存,不重啓側欄可能沒有「記憶圖譜」且無報錯提示。

重啓後打開 設置 → 記憶圖譜(位於「模型」與「內置插件」之間)。卸載:

plugin_manager action=remove_bundle target="@ilaomianyang/dsh-memory-graph"

記憶庫仍在 ~/dsh-memory,獨立於插件。從 npm 安裝的版本可在設置頁「版本與更新」檢查/立即更新;link: 本地目錄安裝會拒絕覆蓋式更新。

當前 package.json 標註版本爲 0.13.0;星標以目錄頁爲準爲 0,不構成功能說明。

典型配置示例

下列片段來自 README,展示 profile 中與頁面項可並存的寫法:

- id: memory-graph
  config:
    vaultDir: '~/dsh-memory'
    capture:
      enabled: true
      userChars: 1500
      assistantChars: 1500
    privacy:
      redactEmails: true
      redactPaths: true
      denyPatterns: ['我的內部域名\\.corp']
    extractor:
      enabled: true
      transport: 'harness'
      maxEpisodesPerRun: 40
    retrieval:
      limit: 8
      hops: 1
    auto:
      enabled: true
      catchUp: true
      maxBatchesPerDay: 6
    update:
      enabled: true
      autoInstall: false

採集側默認每條用戶/助手消息最多保留 1500 字;短於 capture.minChars(默認 12)的輪次不入庫。檢索默認 limit: 8、hops: 1。不想插件聯網查 npm 版本時,將 update.enabled 設爲 false。

適用場景與注意

適合:需要在 DSH 外持久保存決策、偏好與實體關係,且希望用純文本 + 圖譜瀏覽、而非 embedding 或自動塞回上下文的開發者。

注意:

  1. 插件以當前 DSH 進程權限讀寫 vaultDir;安裝前應在 GitHub 閱讀源碼與 LICENSE,確認隱私規則是否符合你的環境。
  2. 開啓抽取器會產生模型調用;自動蒸餾受 auto.maxBatchesPerDay 等約束,但仍需自己評估成本。
  3. DSH 生態是「一切皆插件」;社區目錄 SkillHub 插件頁 與 DeepSeek / 幻方無官方從屬關係,本文事實以倉庫 README 爲準。

結尾

dsh-memory-graph 把長期記憶做成你擁有的 plain-text vault:事件只追加、卡片可檢索、實體可聯想,與上下文壓縮互補。進一步瞭解可訪問 GitHub 倉庫 與 SkillHub 目錄頁。

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

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

小夜