前言¶
在 DeepSeek Harness(DSH)里,每个会话默认彼此隔离。昨天你纠正过的工作方式、某个仓库里「真正能跑」的命令、已经排查过的故障与修复——下一轮对话不会自动带上,除非你再次口述。社区里常见做法是手写项目说明、把要点贴进 system prompt,或依赖单次会话里的上下文窗口;这些方式要么难维护,要么无法跨会话沉淀。
下面介绍维护者 Lushdawn 发布的 DSH 插件 dsh-codex-memories(包名 @lushdawn/dsh-codex-memories,分类:记忆)。它在本地用纯 Markdown 落盘,复现 Codex 记忆体系的两阶段结构:先按会话抽取,再合并成可检索的手册,并在每轮对话前注入精简摘要。
这是什么¶
dsh-codex-memories 是面向 DSH 的 Codex 风格长期记忆插件:跨会话摄入已结束的对话,合并为可搜索手册,并在每轮之前向 prompt 注入紧凑摘要。持久产物均为可读、可编辑、可版本管理的 Markdown 文件;索引与任务状态保存在 index.json。
插件当前版本为 0.1.1(见仓库 package.json),许可证 MIT,要求 Node >= 20。在 SkillHub 目录中归类为「记忆」;GitHub 星标为 0(以目录页信息为准)。
工作原理¶
整体流程可以概括为:
session goes idle for N seconds
└─ Stage 1 one model call per session -> session_summaries/<slug>.md + raw_memories.md
└─ Stage 2 once enough memory accumulates -> MEMORY.md + memory_summary.md
└─ before each turn, memory_summary.md is injected into the prompt
先做 Stage 1:会话空闲达到配置时长后,对每个会话发起一次模型调用,写出 session_summaries/<slug>.md,并追加到 raw_memories.md。当待合并记忆达到阈值后执行 Stage 2,生成或更新 MEMORY.md 与 memory_summary.md。之后每一轮对话开始前,会把 memory_summary.md 注入 prompt(长度受 maxInjectChars 限制)。
设计意图是让智能体记住:你希望它如何工作、某个仓库里事实来源与可执行命令、以及「某种失败对应哪种修复」——而不必每次重讲。
核心功能¶
斜杠命令¶
在 DSH 中可使用以下命令(摘自 README):
| 命令 | 作用 |
|---|---|
/memory status |
查看记忆根目录、已抽取会话、待合并项、最近时间戳 |
/memory show |
打印当前 memory_summary.md |
/memory extract |
立即抽取当前会话 |
/memory backfill |
扫描已存储会话,抽取尚未处理的条目 |
/memory consolidate |
立即将待合并记忆写入 MEMORY.md |
/memory forget <sessionId\|all> |
删除抽取记录(手册正文保留) |
/memory on / off |
开关本进程内的自动抽取 |
模型工具¶
当配置项 dedicatedTools 为 true(默认)时,会向模型暴露:
| 工具 | 作用 |
|---|---|
memory_search |
在记忆文件上做行级关键词检索(any / all / on_same_line) |
memory_read |
按行范围读取单个记忆文件 |
memory_list |
列出记忆目录与待处理工作 |
memory_note |
追加一条临时笔记(模型侧唯一的写入路径) |
模型被要求以 MEMORY.md:12-14|note=[...] 形式引用记忆。手册正文不能由模型直接改写;合并由独立的 Stage 2 完成,避免单轮对话损坏长期记忆。
磁盘布局¶
默认根目录为 $DSH_HOME/memories/(可通过 storageDir 覆盖):
$DSH_HOME/memories/
├── MEMORY.md # 持久手册,按 Task Group 组织
├── memory_summary.md # 注入 prompt 的层;首行须为 v1
├── raw_memories.md # Stage 1 机械合并,按会话 id 升序
├── session_summaries/<slug>.md # 每个会话一份结构化回顾
├── extensions/ad_hoc/notes/ # 你或模型写的笔记
└── index.json # 抽取缓存、任务记录、合并水位
与 Codex 的对应关系¶
插件行为规格来自对 Codex 本身的逆向(磁盘形态与 codex.exe 内嵌 prompt 模板)。例如 Codex 的 ~/.codex/memories/ 对应 $DSH_HOME/memories/;rollout_summaries/*.md 对应 session_summaries/*.md;SQLite 索引在此实现中为 index.json。检索为关键词/行级,非语义向量,与 Codex 侧 tradeoff 一致;可在 MEMORY.md 里用 keywords 做路由。
安装与启用¶
在 DSH 中从 web profile 安装(命令须与 README 一致):
dsh plugin --profile web add @lushdawn/dsh-codex-memories
本地开发可链接目录:
dsh plugin --profile web add link:<absolute path to this directory>
安装后重启 DSH,或等待 live profile 热加载。
配置通过 profile patch 覆盖;各字段均有安全默认值,节选如下:
- insert:
- id: dsh-codex-memories
name: dsh-codex-memories
config:
storageDir: '' # default $DSH_HOME/memories
generate: true
use: true
dedicatedTools: true
model: '' # e.g. deepseek-official/deepseek-flash
extractModel: '' # falls back to model
consolidationModel: '' # falls back to model
idleSeconds: 120
maxSessionsPerRun: 3
maxSessionAgeDays: 30
consolidationThreshold: 2
maxInjectChars: 9000
minSessionMessages: 4
extractMaxTokens: 8000
consolidateMaxTokens: 16000
model 为空时,插件读取当前默认模型,再回退到 deepseek-official/deepseek-flash。
典型用法¶
- 安装插件并确认
use: true、generate: true(默认即为开启)。 - 正常完成若干轮对话;会话空闲默认 120 秒(
idleSeconds)后触发 Stage 1。消息数少于 4 条的会话会被跳过。 - 用
/memory status查看已抽取会话与待合并数量;需要时用/memory extract手动抽取当前会话。 - 待合并条数达到
consolidationThreshold(默认 2)后会自动 Stage 2;也可执行/memory consolidate立即合并。 - 用
/memory show查看即将注入的摘要;长会话历史可通过memory_search/memory_read按需拉取。 - 若进程在空闲窗口内未存活,下次启动时的
backfill会补扫未处理会话(README 说明的启动 sweep)。
历史会话补抽:
# 在 DSH 对话中执行斜杠命令,而非 shell
/memory backfill
适用场景与注意¶
适合谁:长期在 DSH 里维护固定仓库、反复纠正 agent 行为、或需要记住「命令/路径/排障结论」的开发者;希望记忆可审计、可 git 管理、不依赖外部记忆服务时,文件化手册较合适。
成本:每个会话 Stage 1 一次模型调用,每次合并 Stage 2 一次调用;每轮 sweep 最多处理 3 个会话(maxSessionsPerRun)。memory_summary.md 每轮进入 prompt,受 maxInjectChars(默认 9000)限制。
隐私与权限:数据仅存本地文件;除调用的模型 API 外无额外网络访问。插件以当前 dsh 进程权限 读写 $DSH_HOME/memories/;安装前应在 GitHub 阅读源码与 MIT 许可证,自行判断是否纳入工作流。
已知限制(README):Stage 2 单次回复需生成两份完整文档,手册很大时可能触达输出上限,此时保留旧文件并报错而非写入损坏内容;自动抽取需在空闲窗口内进程仍存活;检索非语义搜索。
DSH 生态强调「一切皆插件」;SkillHub(https://www.skillhub.cn/plugins/Lushdawn/dsh-codex-memories)为社区目录站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-codex-memories 把 Codex 的两阶段记忆流程落到 DSH:会话级抽取、手册级合并、摘要级注入,外加搜索/读取/列表/笔记工具。若你受困于跨会话重复交代上下文,可先按上文命令安装,用 /memory status 与目录下的 Markdown 核对行为是否符合预期。
- 目录页:https://www.skillhub.cn/plugins/Lushdawn/dsh-codex-memories
- 源码与文档:https://github.com/Lushdawn/dsh-codex-memories