dsh-wb-memory:用工作区 Markdown 给 DSH Agent 跨会话长期记忆

前言

在 DeepSeek Harness(DSH)里跑 Agent,常见问题是上下文只覆盖当前会话:换天、关页或新开对话后,项目约定、踩过的坑和上次结论都要重新讲一遍。有人把要点写进仓库文档,但每轮对话仍要靠模型自己「想起来」去读;也有人接向量库或外部记忆服务,部署和权限成本会上去。

下面介绍社区插件 dsh-wb-memory(维护者 miseryrua)。它把真值源放在各工作区里的纯 Markdown,无向量库、无第三方运行时依赖;每回合按字符预算把画像、置顶、相关长期记忆和日志分层注入 systemPrompt,后台再跑流水、小结、提炼、整理与治理。分类属于 DSH 生态目录中的「记忆」类插件;仓库当前版本 0.13.0(MIT,Node.js 22+,README 写明 Windows + Node 24 已实测)。

这是什么

dsh-wb-memory 把 WorkBuddy 风格的文件化记忆机制带入 DSH:长期条目、每日日志、用户置顶和全局画像都以 Markdown(及少量 JSON 状态文件)落在磁盘上,Agent 通过注入层和原生工具 memory_search 使用这些材料。提炼、小结、整理与画像合并会调用你在面板里指定的 LLM 路由;路由不可用不会静默切到主 Agent 模型。

插件通过 Cordis patch 加入 profile 层栈,并提供 Web 设置面板(总览、召回诊断、记忆文件、自动化与治理)。HTTP 管理接口在 /api/wb-memory/* 下,0.12.1 起对每个实际处理器显式走宿主 Connection 鉴权。

核心功能

分层上下文注入(同步、只读)

注入路径不调用 LLM、不写状态,按层拼装后受总预算 injectionMaxChars 约束(默认 12000,下限 4000):

层 内容 默认字符预算
全局画像 插件目录 USER.md 2000
用户置顶 工作区 PINNED.md(须用户明确要求) 1000
长期摘要 条目标题与首行(无相关召回时) 1500
长期相关条目 当前任务 top-K,与摘要互斥 每条基础 800,动态最多 2000
今日日志 保留尾部最新记录 1500
近日日志回顾 零 LLM,默认近 6 日 1200

长期召回使用连续中文 bigram、中英停用词和 IDF 字段评分;首轮用户任务也可参与检索。相关条目与摘要二选一。这是字符上限,不是精确 token 限制;完整正文可用文件工具或 memory_search 按需读取。

记忆存储布局

工作区侧(会话 cwd 落在配置的工作区根下时自动匹配,否则可用面板 activeProject 兜底):

<工作区>/.workbuddy/memory/
├── MEMORY.md              # 长期条目
├── YYYY-MM-DD.md          # 每日日志
├── PINNED.md              # 置顶,不参与整理和治理
├── summary-pending.json   # 会话小结恢复快照(含私密片段,需妥善保护)
├── heat.json              # 曝光统计(不参与检索评分)
├── archive/
└── .trash/<时间戳>/

插件目录侧:USER.md(全局画像)、USER-CANDIDATES.md、config.json、distilled.json 等。0.12.0 起支持长期记忆的预览、确认补 ID、显式更正与撤回链,写入带 revision 与备份,冲突返回 409。

自动化流水线

  1. auto-digest(零 LLM):正常结束一轮后,把「用户要求 → 结论」追加到逻辑日日志,带去重与每日上限。
  2. 会话小结(LLM):完成轮次后默认闲置 10 分钟、累计用户文本至少 300 字符才生成,每逻辑日默认最多 8 次;关机期间不会生成,快照用于普通重启恢复。
  3. 日志提炼(auto-distill):默认每小时巡检,跨工作区与日期公平轮转;失败不推进消费游标,持久退避 2/4/8/16/24 小时封顶。
  4. 整理与画像(LLM):长期记忆超阈值后整理(写前备份);全局画像由候选文件经巡检合并,Agent 不直接改 USER.md。
  5. 治理:按 TTL 归档过期日志、清理回收站与归档副本;gcEnabled=false 可跳过。置顶不参与。

工具与诊断

  • memory_search:参数 q,可选 workspace、date_from、date_to,同时检索长期记忆与近日日志。
  • GET /api/wb-memory/status?workspace=<工作区>:只读状态;顶层 runtimeRevision 用于确认宿主加载版本。
  • POST /api/wb-memory/recall-preview:只读模拟召回(已知 workspace、1–4000 字符的 q),不覆盖实际组装记录。
  • 0.13.0 召回诊断区提供固定合成语料评测:GET /api/wb-memory/recall-eval?candidateK=1(需 Connection 鉴权)。

面板可查看实际组装的候选数、筛选原因、排序分与字符预算;排序入选不等于模型一定采用该段正文。

安装与启用

DSH 生态采用「一切皆插件」;社区目录页 skillhub.cn/plugins/miseryrua/dsh-wb-memory 与 GitHub 仓库相互独立,并非 DeepSeek / 幻方官方应用商店。

在 DSH profile 的 dependencies 中安装并加入 bundle。README 给出的本地开发链接示例:

{
  "dependencies": {
    "dsh-wb-memory": "link:C:/Users/<你>/.dsh/plugins-dev/dsh-wb-memory"
  },
  "dsh": {
    "profile": {
      "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-wb-memory"]
    }
  }
}

安装或更新插件源码后,须完全退出并重启 DSH 宿主;仅刷新浏览器不够。源码变更必须重启;修改 memorySearchTool 等需重载插件的配置项亦同。

启用步骤建议:

  1. 指定工作区根:环境变量 DSH_WORKSPACE_ROOT 优先于配置里的 workspaceRoot。未指定时 README 仅兼容已存在的旧 Windows 根 D:/datas/Deepseek Harness,其他平台应显式配置绝对路径。
  2. 在设置面板打开 wb-memory 总开关(enabled),选择 activeProject(若需要)。
  3. 在面板选择提炼模型;整理模型可独立选择。仓库提供 config.example.json:可在尚无本机配置时复制到插件目录再填写;示例默认关闭 autoDistill 和 sessionSummary,避免未选模型时触发后台费用。不要覆盖已在用的配置。
  4. 用 GET /api/wb-memory/status 核对运行版本与蒸馏待处理日期等字段(注意 distill.pendingDates 只属于当前解析工作区,不是全库积压数)。

本机配置、画像与游标不提交 Git;从仍跟踪配置的旧提交升级前,应先备份插件目录配置再升级恢复。

典型用法

确认插件已加载

GET /api/wb-memory/status?workspace=<你的工作区名>

查看 runtimeRevision 与当前工作区的蒸馏、诊断摘要。

Agent 侧检索记忆

通过插件注册的原生工具(需在配置中启用 memorySearchTool 并重载):

  • q:查询字符串
  • 可选 workspace、date_from、date_to

手动模拟本轮会召回什么(不写盘、不调模型)

POST /api/wb-memory/recall-preview

请求体需包含已知 workspace 与长度 1–4000 的 q,并满足同源校验。

触发一次全库巡检(含整理与画像候选,非只读)

POST /api/wb-memory/distill

治理清理有真实删除副作用,应使用 POST /api/wb-memory/gc 并在面板确认策略,不要把它当状态轮询。

适用场景与注意

适合谁

  • 希望记忆可 git 备份、可人工 diff、不绑定向量库或外部 SaaS 的 DSH 用户。
  • 多工作区并行、需要按当前任务召回长期条目,同时保留近日日志与零 LLM 的日志回顾。
  • 愿意单独配置提炼/整理模型路由,并接受闲置门禁、批次上限与字符预算带来的裁剪。

务必知晓

  • 插件以当前 DSH 进程权限读写工作区与插件目录;summary-pending.json 等可能含聊天片段,安装前应阅读源码与 MIT 许可证,并评估本机数据隐私。
  • 写入采用 guardedWrite 与单宿主写者约束,不是跨进程原子 CAS,也无 fsync 断电保证。
  • 长期检索与日志关键词搜索机制不同,共享词可能误召回,纯版本号等也可能漏日志。
  • 管理 API 需登录与 Connection 鉴权;缺方法或异常时返回 503,不降级放行。

结尾

dsh-wb-memory 把跨会话记忆的真值源放在 .workbuddy/memory/ 的 Markdown 上,用分层注入和 memory_search 服务当前回合,用后台流水线把对话沉淀为可治理的长期文件。若要查看简介与分类,可打开目录页 https://www.skillhub.cn/plugins/miseryrua/dsh-wb-memory;安装、配置与版本说明以 GitHub 仓库为准:https://github.com/miseryrua/dsh-wb-memory。

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

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

小夜