前言¶
DeepSeek Harness (DSH) 的插件化架构旨在解决上下文管理的长期性问题。模型不具备持久的记忆能力,仅靠提示词(Prompt)无法保证每个工作区都有统一的上下文。dsh-trilogy 是一个 Host 插件,它接管了记忆文件的创建、加载和持久化工作,不依赖模型自觉,而是通过插件在宿主端强制执行记忆行为。
插件定位¶
- 名称:
dsh-trilogy - 一句话介绍:为每个工作区维护三份 Markdown 记忆文件:自动创建、自动加载、自动记录。
- 维护者:TodayJin
- 许可证:MIT
安装与启用¶
前置条件:pnpm 在 PATH 上,DSH 版本 0.1.7-rc.2。
通过本地链接安装,修改代码后重启 dsh web 即可生效:
dsh plugin --profile web add link:D:/path/to/dsh-trilogy
卸载插件不会删除项目的 memory/ 目录:
dsh plugin --profile web remove dsh-trilogy
核心功能¶
该插件为每个工作区在 <项目根>/memory/ 下维护三份文件:
PROJECT.md:记录项目现状,就地编辑。DECISIONS.md:记录决策和被否决的方案,顶部追加。SESSIONS.md:记录发生了什么,顶部追加。
主要能力:
1. 自动创建与加载:会话启动时自动创建文件;自动注入三个文件的内容(内容未变则不重复注入)。
2. 工具支持:提供 memory_checkpoint(分类记录)、memory_read(读取文件)、memory_search(BM25 检索)工具。
3. 区域分类:支持按区域标签分类记录,每个区域保底 1 条,其余按活跃度加权。
4. 图形界面:提供浏览器半边界面,支持查看、编辑、导出/导入、归档与恢复记忆。
5. 注入预算控制:严格限制注入量,SESSIONS.md 全文不注入,只注入最近 N 条日志。
使用方法¶
安装后无需配置,在任意项目里开一个会话,memory/ 目录和 AGENTS.md 的 boot block 会自动创建。
1. Bootstrap(初次填充)¶
如果 PROJECT.md 还是空的,插件会注入一条指令,要求模型读取 README、跑测试命令并填充 PROJECT.md 的五个固定节。填完后指令自动消失。
2. 会话注入机制¶
每个会话开始时,三个文件会自动注入上下文。
* 去重:内容没变则不重复注入。
* 日志策略:SESSIONS.md 全文不注入,只注入最近 N 条日志(默认 15 条)。
* 预算降级:如果总注入预算超限,会优先保留 PROJECT.md,然后减少日志条目数量,最后才丢弃历史日志。
3. 记录进展¶
使用 memory_checkpoint 工具:
* 参数支持 sessions[](可带 area)、decisions[]、project[]、notes。
* 工具会根据路由表将内容写入对应文件。
* 使用 memory_search 工具可以检索记忆内容(含归档)。
4. 图形界面操作¶
在 DSH Web 设置中找到“项目记忆”:
* 查看与编辑:按文件用途分页签查看(现状/决策/日志/归档)。
* 清除与忘记:清除会删除记忆文件;忘记只移除注册表索引,不删除磁盘文件。
* 导入导出:支持将 memory/ 导出为 JSON 包并在另一台机器或工作区导入。
配置与注入策略¶
在 profile 的 cordis.patch.yml 中按 id 覆盖配置:
- id: trilogy
config:
injectBudgetBytes: 24000
nudgeMaxPerSession: 5
关键配置项:
| 键 | 默认值 | 说明 |
|---|---|---|
sessionEntriesInjected |
15 |
决定有多少条 SESSIONS 日志被注入上下文 |
projectRootStrategy |
"workspace" |
"workspace" 表示工作区即项目根;"marker" 表示向上找 .git |
projectStaleDays |
14 |
PROJECT.md 落后多少天提示陈旧 |
writeBootBlock |
true |
是否往 AGENTS.md 追加 Memory 段 |
注入优先级:
当注入预算不足时,按以下顺序降级:
1. 完整注入三个文件;
2. 日志条目逐档减半(15 -> 7 -> 3 -> 1);
3. 只保留 SESSIONS.md 的部分条目;
4. 只保留 DECISIONS.md 头部;
5. 最后才截断 PROJECT.md。
安全与注意事项¶
- 本机访问限制:所有
/trilogy路由限制为本机访问(非 loopback 返回 403),防止未授权访问。 - 数据持久性:插件不依赖模型进行记忆维护,完全由 host 插件保证。卸载插件不会删除项目的
memory/目录。 - UI 图标:如果缺少特定图标,会自动回退成一个变色圆点。
- 模板可改:三个文件和 boot block 的模板位于
templates/,可自定义。
总结¶
dsh-trilogy 通过 Host 插件机制解决了 DSH 中上下文不连贯的问题。它强制执行了项目记忆的“三文件”结构,并通过智能的注入预算和区域分类策略,确保模型能高效获取上下文。适合需要长期维护项目上下文、多会话协作的开发场景。