dsh-project-automemory:DSH 下的项目级自动记忆

前言

在 DeepSeek Harness(DSH)里用智能体做多轮开发时,上下文里往往需要「这个项目上次做到哪、有哪些坑、个人偏好是什么」。全局的 ~/.dsh/AGENTS.md 会被所有项目共享,容易串味;仓库里的 AGENTS.md 又会进 Git、且同目录下别的 agent 也会读到。若把细节全塞进对话历史,换项目或新开对话就要从零解释一遍。

下面介绍的 dsh-project-automemory(维护者 ThereWasAYang)面向 DSH 做按项目隔离的自动记忆:记忆落在 DSH 主目录下的私有目录,每轮对话自动注入,并由模型通过 memory 工具维护。设计取向参考 Claude Code 的 auto memory,许可证为 MIT。

这是什么

dsh-project-automemory 是 DSH 生态中的「记忆」类插件(社区目录:SkillHub 插件页)。它在 ~/.dsh/projects/<项目 slug>/memory/ 为每个 Git 项目根建立独立记忆空间,不随仓库分发,也不与全局 AGENTS.md 混用。需要 DSH 版本 ^0.2.1-rc.5(package.json 中 engines.dsh 声明,版本不匹配会拒绝激活 bundle)。当前仓库版本为 0.1.0,通过 Git 分发,无 npm 发布、无构建步骤。

核心功能

  1. 项目归属:从会话工作目录向上找到第一个含 .git 的目录作为项目根;找不到则用工作目录。可用 projectRootMarkers 改标记。
  2. 记忆目录结构:默认在 $DSH_HOME/projects/<slug>/memory/,含 .project.json(绝对路径与创建时间)、MEMORY.md(索引,默认优先加载)、topics/ 等细节文件。
  3. 自动加载:每轮对话第一步读取该目录下所有顶层 *.md,受 maxBytes 预算约束;内容变化时重新注入完整快照,未变则不额外占 token。
  4. memory 工具:模型可 view / create / str_replace / insert / delete / rename 维护记忆;人类也可直接编辑 Markdown。
  5. 与 AGENTS.md 并存:不改变 DSH 原有全局与仓库级 AGENTS.md 加载行为,本插件是增量、本机私有层。

与其它做法对比(资料原文):记忆在 ~/.dsh 下、项目目录外,不提交 Git;按项目根(monorepo 内共享一份),换仓库则换记忆;无需手动 /memory 命令。

安装与启用

插件以当前 DSH 进程权限运行,安装前建议浏览 GitHub 仓库 源码与 MIT 许可证。

方式一:Git 安装(推荐)

DSH Web 的 Plugins 页面选择从 Git 安装,或 CLI:

dsh plugin --profile <profile> add https://github.com/ThereWasAYang/dsh-project-automemory.git

也可让 agent 调用 plugin_manager:

install_bundle  target = https://github.com/ThereWasAYang/dsh-project-automemory.git

固定版本(避免跟随 main 漂移):

install_bundle  target = https://github.com/ThereWasAYang/dsh-project-automemory.git#v0.1.0

方式二:本地目录(开发用)

install_bundle  target = /path/to/dsh-project-automemory

安装后对新会话立即生效;已存在会话在下一轮对话开始时加载记忆。Git 安装更新需先 remove_bundle 再重装,或 CLI 先 remove 再 add。

典型用法

记忆落盘位置

~/.dsh/projects/<项目 slug>/memory/
├── .project.json
├── MEMORY.md
└── topics/…

slug 由项目绝对路径编码(非 [A-Za-z0-9_-] 字符替换为 -);路径冲突时追加 SHA-1 前 8 位后缀。

模型维护记忆

路径均相对于当前项目的 memory 目录,常用命令如下(完整表见 README):

command 作用概要
view 列目录或读文件;path 省略或 / 表示列目录
create 新建文件
str_replace 精确替换一处文本
insert 在指定行插入
delete / rename 删除或重命名

工具描述中已约束:项目私有、自动加载、MEMORY.md 作索引、勿存密钥。也可直接编辑 ~/.dsh/projects/<slug>/memory/ 下文件,改动在下一轮或新会话生效。

配置覆盖

在 profile 的 cordis.patch.yml 中按行 id project-memory 覆盖:

- id: project-memory
  name: 'dsh-project-automemory'
  config:
    maxBytes: 16384
    maxSourceBytes: 262144
    projectRootMarkers: ['.git']
    indexFile: MEMORY.md

适用场景与注意

适合:长期在同一仓库用 DSH 开发、希望跨会话保留「个人项目笔记」而不污染 Git 或全局配置的团队或个人。

注意:

  • 自动加载仅限 memory 目录顶层 *.md;子目录与非 md 需经 memory 的 view 读取。
  • 记忆为本机 ~/.dsh 数据,不同步到远程仓库;勿存放密钥。
  • 同一轮内人工改盘外文件不会即时重注入,下一轮对话开始时生效。
  • 社区插件目录 SkillHub 独立于 DeepSeek / 幻方,生态理念是「一切皆插件」,本文事实以仓库 README 为准。

结尾

经过上面的步骤,你可以在 DSH 里为每个项目保留私有、可维护、每轮自动出现的记忆层,与全局和仓库级 AGENTS.md 分工清晰。进一步细节见 GitHub:ThereWasAYang/dsh-project-automemory 与 SkillHub 目录页。

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

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

小夜