前言¶
在 DeepSeek Harness (DSH) 的插件化生态中,如何为智能体提供持久且隔离的会话记忆是一个常见的技术挑战。传统的记忆方案可能面临上下文根目录不确定、工具注册冲突或缺乏会话隔离等问题。dsh-engram-session 旨在通过会话级的 Engram MCP 子进程,解决这些痛点,为智能体提供稳定且可复用的记忆存储能力。
这是什么¶
dsh-engram-session 是一个独立的 Engram 记忆包,由开发者 xiuyuan18 维护。它作为 DSH 的一个独立插件,为智能体会话提供 Engram 记忆功能,并且是一个可复用的独立项目,支持跨配置文件和预设使用。
核心功能¶
该插件具备以下核心能力:
- 会话级记忆管理:为每个智能体会话生成一个独立的 Engram MCP 子进程,确保记忆存储与会话上下文绑定。
- 确定性根目录:子进程的当前工作目录 (
cwd) 设为会话工作区根目录,解决了 Engram 项目自动检测(如 Git 根目录或.engram/config.json)的不确定性,特别是在 DSH web GUI、VS Code 或 CI 等环境下的兼容性问题。 - 作用域隔离:在智能体自身的作用域内注册
mem_*系列工具,避免与其他智能体或全局工具产生命名冲突。 - 协议注入:在加载时将 Memory Protocol 作为系统提示词的一部分注入,定义智能体与记忆工具的交互方式。
- 零副作用移除:插件是独立的 Bundle 项目,包含
dsh.bundle.patch层。移除或禁用插件时,不会遗留任何工具注册或记忆指令,不会产生副作用。
安装与启用¶
使用前需安装依赖并将插件添加到配置文件中。
- 进入插件目录并安装依赖:
cd /home/xiuyuaned/dsh-plugins/dsh-engram-session && pnpm install
- 将插件添加到指定的配置文件(例如
web):
dsh plugin --profile <name> add /home/xiuyuaned/dsh-plugins/dsh-engram-session
- 重启配置文件对应的应用程序以激活插件。
典型用法¶
安装完成后,智能体即可使用 mem_* 工具进行记忆操作。若需移除插件,执行以下命令:
dsh plugin --profile <name> remove dsh-engram-session
由于源码位于外部目录,移除操作不会删除插件本体,可随时重新安装。
适用场景与注意¶
该插件适合需要为智能体提供独立会话记忆上下文,且希望避免记忆污染的场景。
注意事项:
1. 非官方项目:这是一个社区独立项目,不属于 DeepSeek Harness 官方产品,使用需自行承担风险。
2. 无重连监督:插件没有对 Engram 子进程的重连机制。如果子进程在会话中途意外终止,其注册的工具将失效,直到当前会话结束。
3. 结果投影限制:当前仅支持文本结果投影。如果 Engram 返回图片、音频或嵌入式 MCP 块,它们将被转换为诊断信息,智能体无法直接处理。
4. 二进制依赖:插件依赖 Engram 可执行文件。如果未找到二进制文件,插件会记录警告并挂载,但会跳过记忆工具和协议注入部分。
短结尾¶
dsh-engram-session 通过会话隔离和确定性路径解析,为 DSH 智能体提供了可靠的记忆解决方案。其零副作用的设计也便于在配置文件之间复用。更多技术细节和源码可参考其 GitHub 仓库。