dsh-project-memory:给 DeepSeek Harness 加一层可提交的长期记忆

前言

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

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

Xiaoye