前言¶
DeepSeek Harness(DSH)采用插件化架构,允许在宿主组合层注册行为。dsh-plugin-persona-memory 插件解决了传统记忆管理方案(如 memory-boot、ptc-memory)仅在选中特定预设时才注入记忆的问题。该插件将角色设定与长期记忆管理注册在宿主组合层,使得记忆对所有 agent 预设的每个会话生效。它替代了旧版的三 agent 预设加载方式,提供了一套统一的角色库、全局/项目两级记忆以及长期日志管理方案。
核心功能¶
该插件提供以下核心能力:
* 角色设定与长期记忆管理:支持角色库的增删改查及切换。
* 宿主组合层注册:安装后追加进 dsh.profile.bundles,通过 cordis.patch.yml 插入宿主组合。
* 右侧栏管理面板:提供可视化的角色、记忆和日志管理界面。
* 工具与技能:提供 memory 和 persona 两个全局工具,以及 persona-creator 技能。
* 长期日志 (JOURNAL.l):支持追加与检索,但不注入提示词。
安装与启用¶
使用 DSH 内置插件管理器进行安装。安装命令如下:
dsh plugin --profile <profile> add github:hu568/dsh-plugin-persona-memory
安装后,本包被追加进 profile 的 dsh.profile.bundles。验证安装是否成功,可以在 agent 中请求接口:
GET /persona-memory/api/state
返回 200 且 ok: true 即表示面板路由已注册。
文件结构与注入逻辑¶
插件会在宿主环境生成以下文件和注入段落:
* 角色库:$DSH_HOME/personas/<id>/{persona.yml,SOUL.md,USER.md}
* 全局记忆:$DSH_HOME/memory/FACT.md
* 项目记忆:<项目根>/MEMORY.md
* 长期日志:$DSH_HOME/memory/JOURNAL.l
注入的提示词段落使用 memory: 前缀(如 memory:soul, memory:user, memory:facts),并设置 interpolate: false。这确保了即使在精简模式(router-standard)下,这些段落也能保留,同时避免了宿主 renderPrompt() 对未注册变量的错误处理。
写入限制¶
为了防止上下文无限膨胀,插件在写入侧设置了硬性闸口(超限直接报错,不静默截断):
| 文件 | 限制规则 | 说明 |
|---|---|---|
全局 FACT.md |
行数 AND 字节 | 默认 100 行 / 8000 字节(UTF-8)。任一超限即拒绝写入。 |
项目 MEMORY.md |
字符数 | 默认 8000 字符。与注入侧 maxChars 同口径。 |
长期日志 JOURNAL.l |
无限制 | 仅追加,不注入提示词,用于流水账存储。 |
子代理行为¶
子代理会话的注入逻辑与主会话不同:
* 不注入:角色 (memory:soul/memory:user)、全局记忆 (memory:facts → FACT.md) 及长期日志 (JOURNAL.l) 均不注入。
* 仅注入:项目记忆 (memory:facts → MEMORY.md) 会被注入,因为这是子代理执行具体委派任务所需的上下文。
* 配置:可通过 subagentProjectOnly: false 恢复旧版(子代理与主会话一致)的行为。
工具与面板¶
插件注册了两个全局工具 memory 和 persona,以及右侧栏面板。
工具命令¶
- memory:
action=read: 读取 FACT.md、MEMORY.md 并报告当前体量。action=update, scope=global: 覆盖写入 FACT.md(受行数/字节限制)。action=update, scope=project: 覆盖写入 MEMORY.md(受字符数限制)。action=append: 向 JOURNAL.l 追加日志。action=search: 按子串检索日志。
- persona:
action=list/current/show/use/create/update/delete: 管理角色库。
面板 API¶
右侧栏面板通过 HTTP 路由提供服务,前缀默认为 /persona-memory:
GET /persona-memory/api/state
POST /persona-memory/api/persona/{show,use,save,delete,order}
POST /persona-memory/api/memory/save
POST /persona-memory/api/journal/{append,search}
注意事项¶
- 卸载不会清理数据:执行
remove操作不会删除$DSH_HOME/personas和$DSH_HOME/memory目录下的文件,需手动清理。 - 更新操作:若插件内容更新但安装规格字符串未变,DSH 会报
ambiguous-install错误。更新时需先remove再add。 - 依赖项:运行依赖
schemastery(别名安装npm:@deepseek-ai/schemastery@3.18.2)。 - 版本兼容:实测 DSH 版本为
0.1.5-rc.1~0.2.0-rc.2。