前言¶
DeepSeek Harness(DSH)已经提供了规则层(AGENTS.md)和会话级的历史回溯(session-recall),但在实际开发中,跨会话沉淀下来的项目认知往往散落在不同会话里:定过的决策、没做完的任务、踩过的坑、项目背景与阶段。换一个会话或换一台机器,这些信息就没了,模型只能从头猜。
dsh-project-memory 就是为了填补这个中间层:把项目级的长期记忆固化在工作区的 .ai/ 目录下,可以提交进 git、跟着仓库走,并且有明确的容量上限和自动整理策略。
它是什么¶
dsh-project-memory 是一个为 DeepSeek Harness 提供项目级有限容量长期记忆的插件。维护者 xingzoudefengye。它把项目认知(决策、约束、任务、坑、事实)存进工作区的 .ai/,每个文件都有软配额,整体有硬上限,支持按时间粗化旧条目,并提供一个稳定的 prompt section 每次会话注入摘要。
插件本身不调用模型,也不跑后台任务,所有写入来自 project_memory 工具或 /memory 命令。
核心功能¶
五个 Whitelisted 文件¶
所有记忆都放在项目根目录下的 .ai/ 文件夹中:
project.md:项目概况、当前阶段(软配额 4000 字符)decisions.md:已定的决策(软配额 6000 字符)tasks.md:未完成的任务(软配额 5000 字符)bugs.md:已知的坑与缺陷(软配额 5000 字符)memory.md:其他长期事实(软配额 4000 字符)
硬上限为五件合计 24000 字符 / 65536 字节,整理目标为 19000 字符。软配额可互借,决定容量紧张时先粗化哪个文件,但不决定写入是否合法。
条目格式与可读性¶
条目是可手改的 Markdown 列表,支持 git diff:
- YYYY-MM-DD [id]
内容
插件会在 .ai/.local/ 内部写状态,初始化时自动生成 .gitignore。
容量管理与粗化策略¶
- 写入前会检查容量是否超限,超限则拒绝写入。
- 支持按时间粗化:≤7 天全留;7–30 天只保留最后 2 条;>30 天只保留结论。
forget命令可按 id 删除条目,默认只预览,加--apply才真正生效。/memory compact --apply可以应用整理计划,把旧详情粗化。
Prompt Section 注入¶
每次会话启动时,插件会根据项目层和全局层的记忆,生成一个优先级摘要注入到 prompt section(顺序 9500)。项目层注入预算约 12000 字符 / 4000 token,全局层约 4000 字符 / 1000 token。
全局层¶
插件支持一个跨项目的全局层,放在 $DSH_HOME/project-memory/(默认 ~/.dsh/project-memory 或 %USERPROFILE%\.dsh\project-memory)。全局层存储的是所有项目共享的结论,由每个项目在需要时读取。
安装与启用¶
前置条件:
- Node.js ≥22(本机用 24.19.0 验证)
- 已安装 DeepSeek Harness(dsh 0.2.x;本文按 0.2.1-rc.2 验证)
安装插件(以 web profile 为例):
dsh plugin --profile web add github:xingzoudefengye/dsh-project-memory
安装完成后必须完全退出 dsh 进程再启动,插件在 host 启动时 import,不会热加载。
在项目目录中初始化记忆:
/memory init
.ai/ 会被建在工作区根(从 cwd 往上最近的 .git,没有 .git 就用启动目录)。可选地建立全局层:
/memory init --global
验证安装¶
运行检查脚本:
node scripts/check.mjs
预期输出类似:
ok: project-memory is in the composed tree
ok: project-memory-section is in the composed tree
ok: tool-project-memory is in the composed tree
ok: command-project-memory is in the composed tree
ok: the prompt section row is mounted
note: no global layer yet — create it with /memory init --global (optional, cross-project memory)
其他 profile 检查:node scripts/check.mjs headless。
典型用法¶
查看当前容量与整理计划¶
/memory check
手动添加决策¶
/memory write --file decisions.md --content "决策:前端改用 React,避免 Vue 的响应式开销"
粗化旧条目¶
/memory compact --apply
删除某个条目¶
/memory forget --id 2026-10-01-abc123 --apply
查看记忆注入摘要¶
在会话开始时,prompt section 会自动注入项目层和全局层的摘要,可以通过 /memory status 查看各文件当前条目数和容量使用情况。
适用场景与注意¶
- 适合需要跨会话保持项目上下文、决策和任务追踪的 DSH 用户。
- 插件以当前 dsh 进程的权限运行,写入
.ai/之前会检查权限。 - 所有写入都会保留一份
*.bak恢复副本,不会静默覆盖外部改动。 - 卸载插件不会删除
.ai/目录及其内容,需要手动清理。
小结¶
dsh-project-memory 为 DeepSeek Harness 提供了一个有容量上限、可提交进 git 的项目级长期记忆层,通过五个结构化文件和自动整理策略,帮助模型在不同会话之间保持对项目的连续认知。它不需要模型调用,也不会干扰正常工作流,适合需要长期沉淀项目认知的开发场景。
- 插件目录:https://www.skillhub.cn/plugins/xingzoudefengye/dsh-project-memory
- GitHub:https://github.com/xingzoudefengye/dsh-project-memory