前言¶
在 DeepSeek Harness(DSH)里做智能体,会话上下文通常只存在于当前进程与模型窗口内;关掉服务或换 profile 后,上一轮对话里已经确认过的偏好、结论往往无法自动带到下一轮。社区里也有通过 MCP 或改 Harness 源码接外部记忆的做法,但要么依赖模型侧调用、要么维护成本高。
下面介绍 dsh-hindsight-bridge:一个独立的 Cordis bundle,用 Harness 原生生命周期事件对接 Hindsight,实现按轮 recall 与 retain,且不 patch Harness 源码。维护者为 GitHub 用户 online111111,在 SkillHub 目录中归类为「记忆」。
这是什么¶
dsh-hindsight-bridge 面向已部署 DeepSeek Harness 与可访问 Hindsight API 的开发者。它在 DSH 管道内自动完成「每轮开始前召回相关记忆」和「每轮结束后写入可保留内容」,配置项支持 API 地址、bank、开关与超时等边界,并默认对常见密钥模式做脱敏。
实现上依赖 Cordis 插件机制与 DSH 会话事件,而不是在模型回合里发起 MCP 记忆调用;Web 端还提供 Hindsight 设置区块,与 ConfigForms 的原子变更机制对齐。
环境与依赖¶
安装与运行前需满足 README 中列出的条件:
- DeepSeek Harness
0.2.0-rc.2 - Node
^22.19.0 || >=24 - 可连通的 Hindsight
0.10API;应使用 dataplane API key,而不是管理 UI 的 access key - 插件装在实际使用的 profile 上(如
web、desktop或自定义 profile);同一 profile 建议只启用一个自动记忆类插件
插件包版本为 1.0.0,许可证 MIT。当前尚无 npm 正式发布,不要仅用包名安装。
核心行为¶
Recall(召回)¶
每轮在第一次向模型发请求之前执行一次 recall,查询文本来自真实用户输入。召回结果以有界、显式标注的记忆块写入 durable 的 user-role 历史;同轮内的 tool 续步复用该块,不会重复 recall。
Retain(保留)¶
从已提交的 live 事件中收集内容,仅保留真实用户文本与最终成功的 assistant 文本。以下内容不会写入:插件上下文、推理链、tool 载荷、恢复的历史、仅模型表面的替换,以及中断或失败的轮次。
每一轮使用稳定且互不相同的 document ID,Hindsight 的替换语义不会抹掉更早的轮次。
异步、刷写与安全¶
Retain 为非阻塞:异步操作被接受后会轮询直至完成;「已接受」不等于「已完成」。session/flush 与插件 dispose 会在截止时间内排空待写队列。
队列溢出或写入失败会以非敏感错误码记录日志;POST 不会自动重试。进程被强杀、服务宕机或 flush 超时仍可能丢失未发送数据——这不是持久离线日志。
HTTP 拒绝重定向;除 loopback 外要求 HTTPS。请求/响应有 deadline、字节上限与取消,以限制故障影响。
默认开启 redactSecrets,按常见 key/token/password/private-key 模式做尽力脱敏,不保证识别任意自然语言中的敏感信息。
默认不包含子 session 的记忆;若 synthetic 内容也应进 bank,需显式打开对应选项。
配置要点¶
在 profile 中为 hindsight-memory 插件条目填写配置。API key 建议通过环境变量注入,且宿主进程需继承该变量。示例 patch:
- id: hindsight-memory
config:
apiUrl: https://memory.example.com
apiKeyEnv: HINDSIGHT_API_KEY
bankId: deepseek-harness
autoRecall: true
autoRetain: true
说明:
apiUrl填 HTTPS API 根路径,不要带/mcp/...或/v1后缀,也不要指向 UI。- 若使用共享 Hermes bank,需显式选择
hermes-default;默认deepseek-harnessbank 用于与 DSH 实例隔离。 - 重要字段包括
enabled、apiUrl、apiKey/apiKeyEnv、bankId、autoRecall、autoRetain、recallBudget、recallTypes等。Recall 默认面向 observation 类记忆;若 bank 尚未积累 observation,可在recallTypes中加入world与experience。 - 另有
recallTimeoutMs、retainTimeoutMs、operationTimeoutMs、flushTimeoutMs、maxQueryChars、maxBlockChars、maxRetainChars、maxPendingWrites等限制项;完整字段以导出的 Config schema 为准。
记忆内容按字符上限追加到历史,不改写 system prompt 或更早消息;每轮最多增加约 maxBlockChars 字符的模型输入,同轮多次 tool 步骤看到的是同一段注入内容。
Web 客户端可在 Hindsight 设置区改配置;冲突写入会保留草稿,需显式 discard 才会重新加载当前配置。密钥在 host schema 中会被 redact,密码输入不会回显已有 key。
安装与启用¶
- 从 GitHub Release v1.0.0 下载可安装的 tarball。
- 在下载目录执行(以
webprofile 为例;Desktop 请用 bundled DSH CLI 的desktopprofile):
dsh plugin --profile web add ./dsh-hindsight-bridge-1.0.0.tgz
- 按上一节修改 profile 中的
hindsight-memory配置,并确保HINDSIGHT_API_KEY(或你配置的 env 名)对 DSH 进程可见。 - 在方便时重启所选 DSH 服务;安装步骤不会改 memory server,也不会自动重启已在跑的应用。
验证与卸载¶
查看当前 profile 配置(输出可能含凭据,勿公开粘贴):
dsh --profile web --dump-config
移除插件:
dsh plugin --profile web remove dsh-hindsight-bridge
线上验收思路:对 Hindsight 做带鉴权的 health/recall 读检查,再发起一轮真实用户对话并等待 retain 完成。
适用场景与注意¶
适合:已在用 DSH 0.2.0-rc.2 且已有 Hindsight 0.10 服务,希望会话级自动 recall/retain、又不想改 Harness 源码或依赖模型侧 MCP 记忆的开发者。
注意:
- 插件以当前 DSH 进程的权限与网络环境访问 Hindsight;安装前应阅读仓库源码与 MIT 许可证,并自行评估 API key 与 bank 隔离策略。
- SkillHub 插件目录(https://www.skillhub.cn/plugins/online111111/dsh-hindsight-bridge)是社区站点,与 DeepSeek / 幻方无官方从属关系;星标等元数据以目录页为准(当前为 0)。
- 仅保留一个自动记忆插件,避免多插件同时写同一 bank 或重复注入。
结尾¶
dsh-hindsight-bridge 把 Hindsight 接到 DSH 原生会话生命周期:按轮召回、按轮保留、可配置边界与 Web 端设置,适合作为「记忆」类 Cordis 插件落地长期上下文。详情与发布包见 GitHub 仓库 https://github.com/online111111/dsh-hindsight-bridge ,目录介绍见 https://www.skillhub.cn/plugins/online111111/dsh-hindsight-bridge 。