dsh-hindsight-bridge:为 DeepSeek Harness 接入原生 Hindsight 记忆

前言

在 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.10 API;应使用 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-harness bank 用于与 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。

安装与启用

  1. 从 GitHub Release v1.0.0 下载可安装的 tarball。
  2. 在下载目录执行(以 web profile 为例;Desktop 请用 bundled DSH CLI 的 desktop profile):
dsh plugin --profile web add ./dsh-hindsight-bridge-1.0.0.tgz
  1. 按上一节修改 profile 中的 hindsight-memory 配置,并确保 HINDSIGHT_API_KEY(或你配置的 env 名)对 DSH 进程可见。
  2. 在方便时重启所选 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 。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye