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
羽毛球分组比赛记分
小程序二维码

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

小夜