maestro-memory:DSH 跨会话持久记忆与待办

前言

在 DSH 里做多轮对话,上下文关掉就没了;想让人记住偏好、项目约束或未完成事项,要么每轮塞长 prompt,要么自己维护外部笔记。maestro-memory 把记忆和待办落成本地 Markdown,挂在 DSH 工具与快照里,并可选用确认门控写入;同一套存储也能通过 MCP 给其它客户端用。

这是什么

maestro-memory(npm 包 @ddtcorex/maestro-memory,Cordis 插件 id 为 maestro-memory)由维护者 ddtcorex 发布,分类属于「记忆」类 DSH 插件。当前 package 版本为 5.0.0,许可证 MIT。

插件提供跨会话的持久记忆与待办:数据默认存放在 ~/.dsh/maestro-memory(可通过配置或环境变量改路径);存储格式与 harness 解耦,DSH 绑定是其中一种适配方式。社区目录页:https://www.skillhub.cn/plugins/ddtcorex/maestro-memory;源码与文档:https://github.com/ddtcorex/maestro-memory。

核心功能

记忆轨道与工具

memory 工具覆盖五条轨道:memory(全局)、user、project、key、daily,并支持归档与展开。key 轨道需通过 memory_suggest 门控,不能直接随意写入。

工具 作用
memory 五轨道读写与 archive/expand
maestro_todo 跨会话待办(life / work / project / daily,带 id;智能视图最多 8 条)。与 harness 会话内任务列表工具 todo_write 区分命名
memory_search 全库 BM25 词检索(忽略变音符号);默认紧凑命中,传 id 可展开单条
memory_suggest 向 SUGGESTIONS.jsonl 提交待批准建议,需人工确认

写入时会对敏感片段做脱敏(如 API key、密码、token 等标记为 [Filtered:…],纯凭证内容会过滤为 content filtered)。

系统提示快照

memory:snapshot(默认顺序 500)向提示词注入有上限的确定性上下文,大致包括:USER、MEMORY、KEY(按分支过滤)、项目上下文(自动召回 top-4)、近两日 daily、页眉与纪律说明。各段有字节上限与条目数上限;超限时会压缩或截断,避免单条巨大条目挤占整段配额。

可选配置:

  • autoMemory:默认关闭,可按需开启自动记忆等行为。
  • writeGuard:默认关闭;开启后统计连续「有实质工作但未写 daily/project」的人类轮次,达到 threshold 时在快照中插入 # ⚠️ Memory Write Backlog 提醒。该配置在 apply() 时读取一次,修改后需改 profile 并重启 host。

Web 界面与 RPC

插件注册一个 conversation.view 插槽(maestro-memory,order 40),含 Memory / Queue / Todo / Skills / Health 等标签。Memory 只读列表各轨道,并支持手工添加条目(走 memory.mutate,无需模型回合)。Health 展示覆盖率、近 7 日 daily、最长项及多维评分等;快照渲染成本可通过 /maestro-memory-health 查看统计(仅字节与条目计数,不保留正文)。

其它客户端(MCP)

同一套文件可被 MCP 客户端读写,工具包括 memory_search、memory_context、memory_list、memory_add、memory_suggest;key 仍走门控。会话开始宜先调用 memory_context。MCP 侧默认解析目录顺序为:配置 memoryDir → MAESTRO_MEMORY_DIR → 隔离的 DSH_HOME → 中性根目录 ~/.maestro-memory。升级后若存储迁移,需重启所有曾打开该存储的客户端,避免旧进程在遗留路径上写入。

环境与依赖

  • Node.js:^22.19.0 || >=24.0.0
  • 包管理:pnpm 11+(packageManager 为 pnpm@11.7.0)
  • DSH:需处于 package.json 声明的 @deepseek-ai/dsh-client-* peer 范围内

从源码构建(维护者仓库内):

pnpm install
pnpm run build   # -> lib/
pnpm test        # vitest run

安装与启用

在 DSH profile 中安装(运营侧示例,路径按你本机 checkout 替换):

dsh plugin --profile web add link:<path-to>/maestro-memory

生产环境可固定到 GitHub 某 tag 或 commit:

dsh plugin --profile web add github:ddtcorex/maestro-memory#<tag-or-sha>

包内已附带 cordis.patch.yml(含 webServer 等 connection 声明,DSH 0.2.x 需在 rpc.handle 注册通道前具备)。不要在 profile 里重复粘贴该 patch。 若从 npm 安装,可 pin @ddtcorex/maestro-memory@<version>;对 link: 本地目录每次 git pull 后需再执行 pnpm install && pnpm build。

profile 片段示例(插入项):

- insert:
    - id: maestro-memory
      name: '@ddtcorex/maestro-memory'
      config:
        memoryDir: null      # -> ~/.dsh/maestro-memory
        snapshotOrder: 500
        autoMemory: { enabled: false, userMessage: true, desensitize: true } # opt-in
        writeGuard: { enabled: false, threshold: 2 }  # per-turn write watchdog, opt-in

writeGuard.threshold 统计连续多少轮「工作但未写 daily/project」;小于 1 的值按 1 处理。

典型用法

  1. 安装并重启 DSH web profile 后,在对话中让模型使用 memory_search 检索既有记忆,或用 memory 在允许轨道上追加/更新条目。
  2. 涉及 key 或需人工把关的变更时,走 memory_suggest,在 UI Queue 中批准后再落盘。
  3. 用 maestro_todo 维护跨会话待办,与单次会话的 todo_write 分开管理。
  4. 在 Memory 标签手动选轨道添加条目,适合不经模型直接记账。
  5. 若同时在 Cursor / Claude Code / Codex 使用,可按 README 在对应 MCP 配置里指向 node <checkout>/lib/mcp/main.js(或安装后的 maestro-memory-mcp),会话首呼 memory_context。

MCP 配置形态(路径替换为实际 checkout):

{
  "mcpServers": {
    "maestro-memory": {
      "command": "node",
      "args": ["<checkout>/lib/mcp/main.js"]
    }
  }
}

适用场景与注意

适合需要在 DSH 中长期积累用户偏好、项目上下文、日程类 daily 记录,并希望待办与记忆同一存储、可检索可门控的团队或个人。

使用前请注意:

  • 插件以当前 dsh 进程的权限 读写本地目录;安装前请阅读源码与 MIT 许可证,确认 memoryDir 与 Git 同步(若启用)符合你的安全策略。
  • 敏感信息虽有过滤规则,仍不应把明文密钥当作「可随意写入记忆」的默认做法。
  • SkillHub 目录是社区站点,与 DeepSeek / 幻方无官方从属关系;星标与热度以各平台实时数据为准(GitHub 仓库当前公开 star 数为 1)。

结尾

maestro-memory 把跨会话记忆、待办、快照注入和可选写入监护收进一个 DSH 插件,并保留 MCP Neutral 存储。要进一步了解参数与变更记录,见仓库 README.md 与 CHANGELOG.md。

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

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

小夜