前言¶
DeepSeek Harness (DSH) 生态强调插件化。在开发智能体时,对话上下文通常仅限于当前会话,新会话开启后 Agent 需要重新“学习”背景信息。dsh-hindsight-memory 插件将 Hindsight 集成到 DSH 的管线中,提供管线级长期记忆。它通过 DSH 的钩子机制,在模型调用前后自动完成记忆的注入与留存,且不暴露任何 agent 工具。
核心功能¶
- 管线级长期记忆:将记忆能力嵌入 DSH 的 agent pre-step 和 post-step 流程。
- 自动注入与留存:模型调用前自动召回,对话结束后自动留存。
- 故障隔离:recall 失败不影响本步注入;retain 失败仅记录日志,不中断聊天。
- 配置分层:支持设置界面编辑与配置分层(默认值、组合层、用户层)。
安装¶
使用官方命令安装插件,或指定本地路径。
dsh plugin --profile web add dsh-hindsight-memory
安装完成后,重启 DSH Web。在宿主日志中应能看到插件激活信息:
hindsight-memory: active (api=… bank=… enabled=true)
配置¶
重启后,DSH 设置侧边栏会出现独立的 设置 → Hindsight 记忆插件 分节。主要控件包括:
- 启用开关:控制注入与留存功能的开启/关闭。
- API URL:Hindsight API 地址。
- API KEY:Bearer Token,留空则不认证。
- BANK ID:记忆库名,多端指向同一 bank 可共享记忆。
- Recall Budget:召回策略,可选 low / mid / high 三档。
配置分层遵循 DSH 语义:schema 默认值 ← 组合层配置 ← 用户层覆盖。所有字段保存后下一轮即可生效,无需重启。
配置示例(可省略):
- insert:
- id: hindsight-memory
name: dsh-hindsight-memory
config:
apiUrl: http://127.0.0.1:28888
apiKey: ""
bankId: dsh
autoRecall: true
autoRetain: true
recallBudget: low
recallTypes: [observation]
maxQueryChars: 800
recallTimeoutMs: 8000
maxMemories: 8
maxBlockChars: 4000
retainContext: conversation between the DSH agent and the user
retainTags: [source:dsh]
includeSubagents: true
retainEveryNTurns: 1
verbose: false
工作原理¶
插件通过两个核心钩子实现功能:
-
Auto-Recall (agent/pre-step):
在每轮对话的第一个 LLM 调用(step 1)前触发。系统取最新用户消息(≤800 字符)作为 query 调用 Hindsight 的 recall 接口,并将相关记忆追加到步骤批次中。后续 step 不再重复召回。对齐 Hermes 的语义,寒暄确认(如“好的/嗯/ok/谢谢/继续”)和斜杠命令会被跳过。 -
Auto-Retain (session/event):
每次 append 都会投递一次事件。系统按turn/start → user/message / assistant/message → turn/end的顺序累积 User 和 Assistant 的文本。在turn/end时异步将内容存入 Hindsight。被播种的历史事件不会重新发布,因此不会重复留存旧轮次。
使用验证¶
- 新开一个会话,告诉 agent 一个事实(例如:“我的服务器叫 atlas”),然后正常聊完一轮。
- 打开 Hindsight UI(部署机的 29999 端口),进入 bank
dsh。此时应能看到刚刚留存的User: … / Assistant: …记忆。 - 再开一个全新的会话,直接问“我的服务器叫什么”。Agent 的回答应直接带上答案,且全程没有调用任何工具。
注意事项¶
- 运行时要求:DeepSeek Harness 版本需为
0.2.0-rc.1。 - 依赖检查:插件在
package.json中将相关包声明为 peer,profile 兼容性闸门会在不匹配的 DSH 上直接拒载,而非运行期静默失灵。 - 消息过滤:只有
source.kind === "user"的消息被当作“人类输入”;Harness 注入的上下文(时间上下文、技能目录等)既不作为召回 query,也不进入留存正文。 - 子 Agent:子 agent / fork 会话默认参与记忆流转,可通过
includeSubagents关闭。 - 卸载:如需移除,使用
dsh plugin --profile web remove dsh-hindsight-memory。