用 dsh-auto-memory 给 DeepSeek Harness Web 加上三层自动记忆

前言

DeepSeek Harness(dsh)是 DeepSeek 开源的智能体运行时,核心理念是「一切皆插件」:模型、工具、会话、沙箱和界面都可以替换或叠加。官方仓库在 deepseek-ai/deepseek-harness。社区里也有独立的插件目录站点,用来发现和对比插件,它与 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。

日常用 dsh 写代码、改项目时,一个很具体的问题是:会话一关,约定、踩坑和待办就散了。下次再开,模型不知道你昨天定过什么架构、偏好怎么写、deadline 卡在哪一天。有人靠手动贴笔记,有人换工具后又要从头积累。dsh-auto-memory 就是冲着这件事做的:面向 DSH Web,把记忆写成本地 Markdown,按层注入,并在每轮对话后尝试自动沉淀。

这是什么

dsh-auto-memory 是一款记忆类插件,由 Aik358 维护,面向 DSH Web GUI。目录页的定位是:用户级、项目笔记、每日日志三层记忆自动注入与检索,附每日反思、可视化面板与设置页,并可继承其他 AI 工具的历史记忆。

当前可核对的发布信息如下:

  • 目录页分类:记忆;许可证:BSD-3-Clause
  • GitHub:Aik358/dsh-auto-memory,主要语言 JavaScript,仓库 star 为 13(目录页仍显示 6,以 GitHub 为准)
  • npm 包名:@a9i5k4/dsh-auto-memory,本文核对到的版本为 0.1.26
  • package.json 里声明 dsh.client.platformweb,也就是挂在网页界面上用,不是 headless 专用包

它要解决的问题很直接:让同一套用户规则、项目约定和近期日志,在后续会话里还能被模型读到;常规工作尽量不用你记得去记。

核心功能

仓库 README 把能力拆成记忆引擎和界面两部分。下面只写两边都能对上、并且 README / 目录页写明了的内容。

1、三层记忆,外加一层反思

默认位置 用途
用户级记忆 ~/.dsh/memory/MEMORY.md 跨项目规则和偏好
项目笔记 ~/.dsh/memory/workspaces/{工作区}/MEMORY.md 项目约定、决策、架构要点
每日日志 ~/.dsh/memory/workspaces/{工作区}/YYYY-MM-DD.md 只追加的工作日志
每日反思 ~/.dsh/memory/workspaces/{工作区}/reflections/YYYY-MM-DD.md 成果 / 教训 / 下一步,后台结构化保存

工作区记忆集中放在 ~/.dsh/memory/workspaces/ 下,每个工作区一个子目录。README 说明旧版散落在各工作区 .dsh-memory/ 里的文件,升级后首次运行会自动迁移,旧副本保留不删。日历数据在用户级 ~/.dsh/memory/CALENDAR.md,跨工作区共享。

2、精简注入,细节按需读

每次组装系统提示词时,插件在末尾追加 <memory_system> 块,内容包括用户规则、项目笔记、反思精华、最近 1 天日志尾部、外部记忆路径、未完成日历事项和写入纪律。默认注入预算是 injectBudgetChars: 2400,最近日志只取 1 天。完整文件用 memory_read / memory_recall 按需拉取,而不是整份历史塞进 prompt。

README 还写了两点工程约束:静态规则尽量保持字节稳定,方便 DeepSeek 前缀缓存命中;令牌、密钥、凭据这类敏感段落会从注入里过滤,文件本身仍保留。

3、每轮自动沉淀

对话一轮结束后,小型子代理评估本轮内容,值得留下的会写入今日日志,格式类似 - 21:03 [自动沉淀] …。项目决策、架构要点会升格到项目笔记(带 ## YYYY-MM-DD 标题),跨项目规则升格到用户级记忆。寒暄轮按字数门槛跳过,默认 autoConsolidateMinChars 为 240;按 turn 去重;子代理自己的轮次不参与。默认每天最多自动沉淀 8 次,冷却 30 分钟,22:00–08:00 冷却时间翻倍。这些都可以在 ~/.dsh/dsh-auto-memory.json 或设置页「自动化」分组改。

需要主动整理时,模型还可以调用 memory_consolidate,从近期日志里提炼长期决策和偏好,写入 MEMORY.md

4、面板、检索、日历和跨工具继承

启用后,Web 侧边栏会出现「记忆」入口,浮层面板包含概览、日志、笔记、反思、接续、日历、检索。概览页会按早 / 上午 / 中午 / 下午 / 晚上生成问候,并把当日工作收成三级抽屉;离开超过 1 小时再打开,会走「欢迎回来」并补上期间完成的事项。问候按时段缓存,不是每次打开都重新打模型。

检索页除关键词外还有「智能检索」:把自然语言扩成 3–6 个关键词,扫描三层记忆和反思,再给出带出处的回答。README 给的例子是「上次发布 npm 踩的坑」会扩成「发布 / 踩坑 / GitHub / npm / 推送」这类词。说明里写明:不编造记忆里没有的事实。

日历是四象限月视图,并支持当天 07:00–22:00 时间轴。对话里出现 deadline、约定时,模型可用 calendar_add / calendar_list / calendar_done / calendar_remove 维护;未完成事项会注入后续会话,直到勾掉。

「接续」用来发现并导入其他工具里已经攒下的记忆。README 点名的来源包括 WorkBuddy、CodeBuddy、Claude Code、Codex,以及项目约定文件。导入后按来源查看或移除,内容按需读取,不再整段注入。

安装与启用

目录页给出的安装命令如下,在 DeepSeek Harness 终端里运行:

dsh plugin add github:Aik358/dsh-auto-memory

需要可复现安装时,按目录页的写法固定 commit 哈希:

dsh plugin add github:Aik358/dsh-auto-memory#commit

commit 换成仓库里实际的提交哈希。插件以当前 dsh 进程的权限运行,安装时可能执行代码,装之前应先看源码仓库和许可证。

仓库 README 另外给了一条面向 Web profile 的 npm 安装路径,前提是已经装好 dsh,并且至少启动过一次 dsh web。在 profile 目录执行:

cd ~/.dsh/profiles/web
pnpm add @a9i5k4/dsh-auto-memory

没有 pnpm 时可以用:

npm install @a9i5k4/dsh-auto-memory

然后编辑该目录的 package.json,在 dsh.profile.bundles 数组里追加:

"@a9i5k4/dsh-auto-memory"

保存后重启 dsh web。侧边栏出现「记忆」入口,说明插件已经挂上。README 还提到:pnpm v11 默认不装发布未满 1 天的包;当天要立刻用新版本,需要在该目录的 pnpm-workspace.yaml 里设 minimumReleaseAge: 0,或写成显式版本,例如 pnpm add @a9i5k4/dsh-auto-memory@0.1.26

更新可以在同一目录执行 pnpm up @a9i5k4/dsh-auto-memory,或到设置 → 自动记忆里用「检查更新」。改完插件集后都需要重启 dsh 才会生效。

典型用法

装好之后,多数日常工作不用先记一套命令。按 README 的设计,常规对话结束就会尝试写今日日志;你在面板里能看到「今日已自动沉淀 N 条要点」。需要人工干预时,模型侧注册了这些工具:

memory_log / memory_note / memory_user / memory_recall / memory_external / memory_maintain / memory_status / memory_reflect / memory_consolidate / calendar_add / calendar_list / calendar_done / calendar_remove

几个和文档一致的用法:

1、让模型按自然语言查记忆。在检索页点「智能检索」,或在对话里直接问「上次发布 npm 踩的坑」。命中后应能看到来源(某日日志 / 项目笔记 / 用户级记忆),而不是一段没有出处的总结。

2、让日历跟着对话走。会话里说到截止日期或会议,模型应调用 calendar_add,并在回复正文里说明已经写入;完成后用 calendar_done。未完成项会进下一轮系统提示词。

3、从其他工具接记忆。打开面板的「接续」,按来源查看、接入或删除。已接入的来源会标 ✓,笔记和用户级可以分别处理。

4、改注入和行为。设置 → 自动记忆可以改存储路径、注入预算、反思风格、界面语言(中文 / English)和字号。也可以直接改 ~/.dsh/dsh-auto-memory.json。仓库给出的默认值如下:

{
  "userMemoryDir": "~/.dsh/memory",
  "projectMemoryDir": ".dsh-memory",
  "injectEnabled": true,
  "injectBudgetChars": 2400,
  "recentDaysInjected": 1,
  "reflectEnabled": true,
  "reflectStyle": "auto",
  "locale": "zh",
  "autoConsolidate": true,
  "autoConsolidateMinChars": 240,
  "autoConsolidateCooldownMinutes": 30,
  "autoConsolidateDailyMax": 8,
  "externalInjectionChars": 1400,
  "memoryRoot": "~/.dsh/memory/workspaces",
  "dayBoundaryMinutes": 450
}

dayBoundaryMinutes 默认 450,也就是早上 7:30 才算新的一天:日界前的工作记入前一天日志,前一天的反思也要过了日界才开始。用户级记忆每天写入预算约 4000 字,项目笔记约 3000 字;超限时先压缩「今天之前」的旧内容再写,压缩失败则归档到 archived-user.md / archive/notes-archived.md,README 写明信息不丢。超过 30 天的日志可用 memory_maintain 蒸馏进项目笔记,原文归档到 archive/

适用场景与注意事项

更适合已经在用 dsh web、需要跨会话记住项目约定和近期进展的人。如果你同时用过 Claude Code、Codex、CodeBuddy 或 WorkBuddy,并且希望把那边攒下的记忆接过来,这个插件的「接续」就是冲着这件事。它不是知识图谱型记忆(目录里同类还有 graph-memory、mnemon 等),而是明文 Markdown 加自动注入。

使用前有几条边界需要看清楚:

  • 插件以当前 dsh 进程权限运行,安装可能执行代码。装之前检查 GitHub 仓库 和 BSD-3-Clause 许可证;需要可复现时固定 commit。
  • 面向 Web。package.json 声明 platform 为 web,不要默认它在 headless 流程里也有同样的面板和注入行为。
  • 记忆文件是明文 Markdown。README 写明:除非用户明确要求,否则不把密钥写进记忆;即便写进去,注入阶段也会过滤凭据类段落,但文件仍在磁盘上,要注意目录权限和备份范围。
  • memory_recall 的历史会话检索依赖部署的 session-query 索引;没启用时只做本地检索。
  • 自动沉淀有次数和冷却限制,寒暄轮会被跳过,不能当成「每一句都会入库」。
  • 插件集变更必须重启 dsh。当前版本迭代很快(npm 上 2026-08-14 发布 0.1.0,到 0.1.26 只过了几天),升级后先看 README 的迁移说明。

小结

dsh-auto-memory 把用户规则、项目笔记和每日日志做成三层本地记忆,用精简注入控制 token,再用每轮自动沉淀减少「忘了记」这件事。日历、智能检索和跨工具继承是同一套文件之上的界面与工具,不是另一套云端账号体系。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-auto-memory/

GitHub:https://github.com/Aik358/dsh-auto-memory

npm:https://www.npmjs.com/package/@a9i5k4/dsh-auto-memory

羽毛球分组比赛记分
小程序二维码

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

小夜