cross-session-memory:把編程教訓寫成磁盤上的錯題本

前言

在 DeepSeek Harness(DSH)裏用 AI 寫代碼,常見痛點是「每個新會話都像失憶」:上週踩過的坑、已經驗證過的修復,下一輪對話又要從頭講一遍。有人用向量庫、知識圖譜或自動抽取管線做長期記憶,對個人錯題本來說往往過重,攻擊面也更大。

下面介紹社區插件 cross-session-memory(倉庫名 GIN0076/cross-session-memory,又稱 Agent Lesson Book / 錯題本)。它把教訓存成純 Markdown,用證據鏈約束寫入,並在每次會話裏自動注入一小段索引,讓代理能召回、在閘門下保存,而不是把記憶當成可執行的指令。

這是什麼

cross-session-memory 是維護者 GIN0076 發佈的 DSH 插件,分類屬於「記憶」。定位是:面向 AI 編程代理的零依賴跨會話記憶——Lessons on disk, evidence enforced, auto-injected(教訓落盤、證據強制、自動注入)。

同一套引擎(tools/mem.mjs + tools/mem-core.mjs)有兩種用法:獨立 CLI(例如向 AGENTS.md 注入索引),以及 Harness 原生插件(每回合提示詞注入、mem_recall / mem_save 工具、/memory 命令與只讀設置卡)。package.json 中插件包名爲 @local/dsh-memory,當前社區目錄標註版本爲 v0.5.2;許可證爲 MIT。運行時要求 Node.js ≥ 18。

核心功能

四段式教訓與證據閘門

每條教訓按 現象 / 判定 / 解法 / 驗證(或英文 Symptom / Cause / Fix / Verification)組織。寫入時若缺少可定位的證據引用(路徑、文件名、章節、issue 號等),store 會拒收。設計原則之一是:記憶是數據,不是指令。

自動注入與檢索

  • 注入預算硬頂:≤ 2KB 索引;超預算會砍行,讀索引失敗則靜默降級爲指針約定,不阻塞會話。
  • 檢索:IDF 加權三路搜索(字面、中文 n-gram、aliases),可選兩階段重排(可信度、新鮮度、feedback 採用記錄)。
  • Harness 側:mem_recall 合併教訓本與既往會話全文搜索;mem_save 走完整寫入閘門,並受寫入模式約束。

寫入模式與人工維護

寫入模式:approval(默認,模型寫入需人工確認)、auto-draft、auto-low-risk、off。人類通過 CLI 或 /memory 執行的命令不受寫入模式限制。

插件還提供:/memory 下多條維護子命令(如 doctor、review、conflicts、resolve、explain、verify、draft / approve / reject、write-mode 等);Harness UI 中的只讀設置卡展示狀態、可信度分佈、召回命中率與條目搜索(無寫入口)。

其他已文檔化的能力

  • 條目生命週期標籤:verified / provisional / needs-review / stale / disputed;review 按約 90 天複覈。
  • 衝突:conflicts 列出矛盾對;resolve 記錄裁決,條目保留、敗方可派生爲 stale。
  • 隱私:DSH_MEMORY_TELEMETRY=off 關閉本地埋點寫入;含郵箱或大陸手機號的條目可被 PII 掃描拒絕。

安裝與啓用

DeepSeek Harness 側安裝以倉庫 plugin/README.md 爲準,不是簡單的 dsh plugin add github:… 一行命令。官方說明爲通過插件管理器安裝 bundle:

plugin_manager → install_bundle → target = <clone>/plugin/dsh-memory

一條命令會掛上提示詞注入、mem_recall / mem_save、/memory 與只讀設置卡。若 bundle 已存在,文檔要求先 remove_bundle 再裝,否則可能觸發 ambiguous-install。

依賴物化需要額外注意:bundle 清單刻意不聲明 npm 依賴;@deepseek-ai/dsh-tool-session-query 等需在 bundle 的 node_modules 與 profile 中通過 junction / dsh plugin … add "link:…" 等方式鏈到本機 DSH 源碼路徑。具體 PowerShell 示例與替代方案見 plugin/README.md。

配置項(cordis.patch.yml):

鍵 默認值 含義
memoryCorePath 空則相對解析 ../../tools/mem-core.mjs 安裝路徑變化時需改爲 mem-core.mjs 的絕對路徑
maxHits 8 mem_recall 默認返回條目數

驗收時可對照文檔中的六條清單,例如 dsh --profile <profile> --dump-config 無導入失敗、首回合提示詞含 ≤2KB 索引、mem_save 未批准時不落盤、/memory doctor 與 node tools/mem.mjs doctor 一致等。

若只把引擎當獨立 CLI 用(不裝 Harness 插件),可在項目根拷貝倉庫內容後執行:

node install/setup.mjs --with-sample

可選冒煙:

node install/smoke.mjs

典型用法

寫第一條教訓(CLI)

先起草四段骨架,補全驗證段證據後入庫並體檢:

node tools/mem.mjs draft ssh-timeout
# 編輯 .memory/drafts/<日期>-ssh-timeout.md
node tools/mem.mjs store .memory/drafts/<日期>-ssh-timeout.md
node tools/mem.mjs doctor

條目 front matter 與四段示例見倉庫 README.zh-CN.md 中的 git-autocrlf-breaks-byte-exact-restore 樣例。

在 Harness 裏召回與保存

  • 模型調用 mem_recall 檢索教訓與會話全文。
  • 模型調用 mem_save 時,在默認 approval 下需人工批准;也可在聊天裏用 /memory save <file.md> 等子命令維護。
  • 查看健康狀態:/memory doctor 或 CLI 的 node tools/mem.mjs doctor。

常用 CLI 入口(共 24 個子命令):

node tools/mem.mjs search "關鍵詞" --two-stage
node tools/mem.mjs show <name>
node tools/mem.mjs write-mode approval

適用場景與注意

適合誰: 希望用可 diff、可 git 管理的 Markdown 錯題本,在 DSH 多會話間複用已驗證教訓的開發者;不需要向量庫或額外服務的個人或小團隊場景。

使用前請知悉:

  • 插件在 當前 dsh 進程權限下運行,會讀寫工作區下的 .memory/ 等路徑;安裝前應閱讀源碼與 MIT 許可證,自行評估密鑰/PII 掃描是否滿足你的合規要求。
  • 社區目錄 SkillHub 插件頁 是獨立站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態強調「一切皆插件」,目錄頁便於發現,不等同於官方應用商店。
  • CJK 會話全文檢索受上游 FTS 分詞限制,短詞可能不穩定;教訓本檢索不受影響(路線圖中有後續改進說明)。
  • mem_save 在審批策略爲 never 時會被拒絕,需改用 /memory save 等人工路徑。

結尾

cross-session-memory 用磁盤上的結構化教訓、證據強制寫入和 ≤2KB 自動注入,在「重型記憶平臺」和「完全失憶」之間取了一條偏工程化的中間路線:數據可讀、可審計、失敗可降級。若你要在 DSH 裏落地跨會話錯題本,可從社區目錄瞭解概況,並以 GitHub 倉庫的 plugin/README.md 與中文 README.zh-CN.md 完成安裝與驗收。

  • 目錄頁:https://www.skillhub.cn/plugins/GIN0076/cross-session-memory
  • GitHub:https://github.com/GIN0076/cross-session-memory
羽毛球分组比赛记分
小程序二维码

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

小夜