前言¶
在 DeepSeek Harness(DSH)中编写智能体时,如果使用 Hindsight 作为记忆层,需要在配置文件里管理 coding-agent.json 中的字段。这些字段分散在多个层级,修改时容易出错,且需要重启宿主才能生效。官方的 @vectorize-io/hindsight-coding-agents bundle 只提供引擎,没有提供可视化的配置入口。
dsh-hindsight-config 解决这个问题:它是一个「伞包」,既包含记忆引擎的 patch,也提供本地客户端设置和远程服务端 bank 数据的可视化面板。
插件定位¶
- 名称:dsh-hindsight-config
- 维护者:scccy
- 分类:记忆
- 许可证:MIT
- 版本:0.5.3
- 核心价值:用可视化面板管理 Hindsight 记忆的配置与服务端数据
这是一个包,同时完成两件事:
- 引擎:在 patch 里插入
id: hindsight行(@vectorize-io/hindsight-coding-agents/dsh),提供记忆注入、hindsight_*工具、git 摄取、代码库勘察等功能。 - 面板:本包的 Host 路由 + 客户端 UI,用于改本地配置、看服务端 bank 状态、改 bank 配置。
安装本包 = 上面两半一起到位。卸载本包 = 两半一起消失。
安装与启用¶
从 npm 安装(推荐):
dsh plugin --profile <profile> add dsh-hindsight-config
本地目录安装(开发时):
dsh plugin --profile <profile> add D:/github/suijiwenti/dsh-hindsight-config
也可以在 DSH 的 Plugins → Discover 里找到并安装。安装后,本包的 patch 会同时插入引擎行与面板行。
重要:不要再单独选装官方 bundle。两个 bundle 都选时,各自的 patch 都会插入一行引擎;Loader 按 id 索引(newMap = Object.fromEntries(config.map(o => [o.id, o]))),同一个 store[id] 槽,后插入的一行覆盖前一行,只会挂一个引擎。设计去重靠的是复用官方 bundle 的 row id hindsight。
面板功能¶
面板提供五个页签:
状态¶
报告记忆引擎是否挂载,显示引擎版本与表单字段基准(fields.js 的 ENGINE_BASELINE,当前为 0.8.2)。检查服务端连通性(/health、/version、特性位),显示配置路径与生效值。当引擎版本与基准不一致时,会给出黄条提示。
客户端配置¶
提供 48 个字段 / 8 组的表单,用于编辑本地客户端配置,包括连接、注入与召回、写入与成本、仓库摄取、知识页、作用范围、诊断、高级对象等。
服务端¶
显示 bank 列表与统计(文档/节点/观测/待处理/失败/上次整合),管理心智模型(列表/刷新/预览/编辑/删除),管理 bank 别名(增删、设为显示名),以及 15 个 bank 配置项(PATCH /v1/default/banks/{id}/config)。
原始 JSON¶
整份 ~/.hindsight/coding-agent.json,带校验,未知字段原样保留。
诊断¶
显示生效值与来源(默认/env/文件/harness 覆盖)、生效中的环境变量,以及 plugin.log / diag.jsonl / usage.jsonl 的尾部内容。
心智模型配置¶
心智模型是服务端的原语,知识页就是心智模型。面板使用的是 mm-…(/mental-models 里的模型),与知识树里的节点 kp-… 指向同一份记录,从任一侧 PATCH,另一侧立刻能看到。
写入方向是客户端配置 → 引擎 → 服务端。引擎每次会话检查漂移,把服务端改回配置的样子。
每个心智模型自己的配置¶
心智模型有两层配置:bank 默认配置(mental_model_min_refresh_interval_seconds、knowledge_page_default_trigger)和每一页自己的配置。
顶层字段包括:
name:名称source_query:提问max_tokens:内容上限tags:标签trigger.mode:full(每次整篇重写)或delta(只做增量编辑)trigger.budget:low/mid/high,按reflect_max_iterations的倍数trigger.refresh_cron:UTC 5 段 cron,不接受Htrigger.refresh_after_consolidation:每次观测整合后刷新,与refresh_cron互斥trigger.min_refresh_interval_seconds:两次自动刷新的最小间隔trigger.fact_types:只检索哪些事实类型(world/experience/observation)
其余 10 个字段在「高级 JSON」里编辑,包括 trigger.tags_match / tag_groups / exclude_mental_models / exclude_mental_model_ids / include_chunks / recall_max_tokens / recall_chunks_max_tokens / reflect_search_observations_* / response_schema / keep_trace。
内置页与自建页¶
面板对内置页(taxonomy)和自建页有不同的处理:
- 内置页:编辑
source_query时,会同时 PATCH 服务端和写入客户端配置(pages.<页名>.source_query),否则下次会话会被覆盖。编辑刷新 cron 时,面板会提示「内置页的刷新节奏由配置里的全局策略托管,下次会话会被重推」,并拒绝填H。 - 自建页:只重推
trigger;name/source_query只写一次。
刷新 / 预览 / 清空 / 删除¶
- 刷新、预览(dry-run)、清空:纯服务端操作,与配置无关。
- 删除:纯服务端;内置页删掉后下次会被重新播种,想永久去掉请在
pages里设false。
bank 别名¶
bank id 由目录名推导(coding-agent::{gitProject}),工作区标题不参与。
- 改 DSH 工作区标题:bank 不变。
- 改磁盘目录名:会变成新名字,变成一个全新的空 bank,旧记忆仍在旧 id 下。
要改名又不丢记忆,用别名(服务端功能,面板「服务端 → Bank 别名」可直接操作):
- 先给旧 bank 加别名 = 新目录名(例如
coding-agent::dsh-插件开发),可选「设为显示名」。 - 再改文件夹名。
- 之后新会话按路径解析到新名字 → 命中别名 → 写进同一个 bank。
顺序不能反:别名要求「不能已经是某个 bank 或另一个别名」,若先改目录并开过会话,会先建出一个空 bank,别名就加不上了。
备选方案是不动服务端,只改客户端:mapPathToBank 或 banks.<新id>.bank = 旧id,两者都是「新名字 → 旧 bank」的重定向。
效果与约束¶
生效时机¶
apiToken:立即生效(引擎每次请求前重读)。- 其余字段:需要重启宿主。引擎按 workspace 首次解析配置并缓存在模块级 Map 里,运行中的会话不会重读。
卸载互锁¶
本包的 patch 与官方 bundle 共用 row id hindsight(去重的代价)。当官方 bundle 也在同一 profile 里启用时,remove_bundle 会被 bundle-in-use 拒绝,因为那个 entry 仍被另一个已启用的 bundle 使用。解决办法是先禁用官方 bundle 再移除,或者直接停用本包(set_bundle enabled:false),此时 patch 不应用、路由不注册、客户端不加载,效果等同于卸载。
配置文件错误¶
若配置文件不是合法 JSON,引擎会打一行 console.error 然后当作 {}(全部配置静默失效)。面板会把这个状态显式报出来,并要求显式确认才允许覆盖。
服务端部署¶
真实部署中 Hindsight 服务端是跨机器的。本插件的约束:
- 服务端只走 HTTP(
fetch到apiUrl),地址与 token 来自~/.hindsight/coding-agent.json;不读、不写、不假设服务端上的任何文件或进程。 - 唯一强制 localhost 的分支是
serverMode: "daemon"(按定义就是本机进程)。 - token 永不进浏览器:
/state只回hasToken,代理请求在 Host 侧带 token;连无法解析的配置文件也只回打过码的文本。 - 路由守门:同源 / loopback,并复用宿主的
connection.requestRejection(浏览器带 cookie 能过,裸请求 401)。
适用场景¶
适合需要在 DSH 中使用 Hindsight 记忆,并希望用可视化面板管理配置与服务端数据的开发者。
插件以当前 DSH 进程权限运行。安装前应检查源码与许可证(MIT)。
总结¶
dsh-hindsight-config 用一个包同时提供 Hindsight 记忆引擎的 patch 和可视化配置面板。面板支持本地客户端配置、服务端 bank 数据管理、心智模型配置、bank 别名等功能,让配置修改更直观,减少手动编辑 JSON 的风险。如果你在 DSH 中使用 Hindsight,这个插件可以大幅提升配置管理的体验。
- 目录页:https://www.skillhub.cn/plugins/scccy/dsh-hindsight-config
- GitHub:https://github.com/scccy/dsh-hindsight-config