前言¶
在 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 发布、无构建步骤。
核心功能¶
- 项目归属:从会话工作目录向上找到第一个含
.git的目录作为项目根;找不到则用工作目录。可用projectRootMarkers改标记。 - 记忆目录结构:默认在
$DSH_HOME/projects/<slug>/memory/,含.project.json(绝对路径与创建时间)、MEMORY.md(索引,默认优先加载)、topics/等细节文件。 - 自动加载:每轮对话第一步读取该目录下所有顶层
*.md,受maxBytes预算约束;内容变化时重新注入完整快照,未变则不额外占 token。 - memory 工具:模型可
view/create/str_replace/insert/delete/rename维护记忆;人类也可直接编辑 Markdown。 - 与 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 目录页。