DeepSeek Harness(DSH)的插件化架构允许开发者通过插件扩展功能。在开发智能体时,对话结束后知识即被丢弃。dsh-plugin-memory 插件通过 Session Distillation 机制,将已完成的对话轮次转化为持久化的知识条目,并将其注册为 Skill 供后续会话调用。
该插件由 16480000 维护,采用 MIT 许可证。它通过将问答与工具调用蒸馏为结构化数据,存入本地目录,并通过 memory-<slug> 技能暴露给模型。
安装¶
通过 npm 安装(推荐,无需构建权限):
dsh plugin --profile <name> add dsh-plugin-memory
通过 GitHub 安装(源码方式):
dsh plugin --profile <name> add github:16480000/dsh-plugin-memory
使用 pnpm ≥10 从 GitHub 安装时,需要在 profile 的 pnpm-workspace.yaml 中添加 allowBuilds 配置:
allowBuilds:
dsh-plugin-memory: true
通过本地 tarball 安装:
pnpm pack
dsh plugin --profile <name> add ./dsh-plugin-memory-0.1.0.tgz
配置¶
插件支持通过 profile 的 cordis.patch.yml 覆盖默认配置。主要配置项如下:
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
autoDistill |
boolean | true |
是否自动蒸馏已完成的轮次。 |
memoryDir |
string | <DSH_HOME>/memory |
记忆存储目录。 |
distillProvider |
string | session route | 蒸馏使用的 provider。 |
distillModel |
string | session route | 蒸馏使用的模型。 |
maxTokens |
number | 3000 |
每次蒸馏或融合调用的输出 Token 上限。 |
示例覆盖配置:
- id: memory
name: dsh-plugin-memory
config:
autoDistill: false
核心功能¶
-
自动收集
在每次turn/end且原因为completed时,插件收集对话中的问答内容以及工具调用结果。 -
蒸馏与合并
插件调用辅助模型将收集到的内容蒸馏为严格的 JSON 格式,包含title、answer、sources,以及可选的merge_with字段。如果模型判断当前条目与现有条目主题相同,返回merge_with会触发融合调用;融合失败则保留新条目并覆盖旧条目。 -
持久化存储
条目被持久化到<DSH_HOME>/memory目录。每个条目生成一个 Markdown 文件<slug>.md以及一个索引文件_index.json。索引写入为原子操作(临时文件 + 重命名)。 -
技能注册
插件注册memory技能提供者,提供memory-<slug>技能候选(Rank 550,位于手写技能之下)。加载该技能时会返回对应的条目 Markdown 内容。 -
服务 API
插件注册ctx.memory服务,提供以下方法:list(): 返回当前记忆索引。readEntry(slug): 读取特定条目的 Markdown 内容。settled(session): 等待会话中所有待处理的蒸馏任务完成。
注意事项¶
- 安全策略缺失:插件没有内容安全策略,蒸馏得到的答案会原样存储。
- 过滤器限制:不完整回答过滤器基于标记,可能存在误报或漏报。
- 作用域隔离:所有会话共用一个记忆目录,暂不支持按工作区或代理作用域隔离。
- 管理机制:目录列出所有条目,没有会话级限制或基于大小的驱逐机制。
- 依赖要求:需要包含
purpose: 'memory'词汇表和memory/*事件机制的 DeepSeek Harness 构建版本。旧版本仍可加载插件并蒸馏,但会丢失部分功能。
结语¶
dsh-plugin-memory 为 DeepSeek Harness 提供了基础的 Session Distillation 能力,适合需要构建长期对话上下文或知识库的场景。安装前请检查源码与许可证。