Hindsight for OpenCode:给每个项目装上专属记忆库

Hindsight for OpenCode:给每个项目装上专属记忆库
青萍叙事前言
用过 AI 编程工具的人大概都有这种体会:明明上一个会话还聊得好好的,换个项目再回来,它又把你当陌生人。
OpenCode 也不例外,每次新会话都是一片空白。
Hindsight 就是来解决这个问题的。
这是一个开源的长效记忆系统,它为 AI 工具装上”脑子”——之前聊过的项目上下文、代码决策、踩坑经验,之后都能自动回想起来。
更实用的是,Hindsight 的 OpenCode 插件支持为每个项目创建独立的记忆库,项目 A 的记忆不会污染项目 B。
插件安装
Hindsight for OpenCode 以 npm 包形式发布,直接在 opencode.json 中声明即可。
打开项目根目录的 opencode.json(或全局配置 ~/.config/opencode/opencode.json),在 plugin 数组里加上插件配置:
1 | { |
OpenCode 启动时会自动从 npm 安装插件,不需要手动执行 npm install。
插件安装后直接连接到你指定的 Hindsight 服务器地址。
如果你用的是 Hindsight Cloud 云服务,需要更换 hindsightApiUrl 并加上 API Token:
1 | ["@vectorize-io/opencode-hindsight", { |
API Key 在 ui.hindsight.vectorize.io/connect 注册获取。
每个项目独立记忆库
这是整个插件最实用的特性:动态记忆库 ID。
默认情况下,所有项目共享同一个记忆库(bankId 固定为 opencode)。
这就意味着 A 项目的记忆会在 B 项目的会话中被召回,两个项目的上下文互相干扰。
开启动态记忆库后就不一样了:
1 | export HINDSIGHT_DYNAMIC_BANK_ID=true |
Hindsight 会根据当前项目的特征自动推导一个唯一的 bankId,默认的组合规则是 agent::project。
A 项目启动的会话自动关联 A 项目的记忆库,B 项目启动的会话自动关联 B 项目的记忆库,互不干扰。
支持的特征字段包括 agent(角色名)、project(项目目录名)、channel(渠道名)和 user(用户标识)。
如果你需要更细的隔离粒度,可以自定义组合,但默认的 agent::project 已经覆盖了最常见的场景。
插件提供的三个工具
安装并连接成功后,Hindsight 会注册三个工具给 OpenCode 的 AI Agent:
hindsight_retain,主动存储信息到长期记忆,适合记录重要的架构决策、踩坑经验hindsight_recall,搜索长期记忆中的相关信息,跨会话检索之前讨论过的内容hindsight_reflect,综合多条记忆给出一个回答,适合需要总结归纳的场景
这些工具 AI Agent 可以在会话中直接调用。
但多数情况下你不需要手动触发它们,插件有自动机制。
自动记忆与召回
Hindsight 的两个自动行为让记忆真正”无感”。
auto-retain:当会话进入空闲状态时,插件自动把当前对话内容存入记忆。
你可以通过 retainEveryNTurns 控制存储频率。
默认每 3 轮交互保存一次。
auto-recall:每次新会话启动时,插件自动检索与该项目相关的历史记忆。
这些记忆会被注入到系统提示词中。
AI Agent 加载后就拥有了之前会话的上下文,不需要你主动”提醒”。
当 OpenCode 压缩上下文窗口时,插件也会先保存当前会话内容再压缩,确保记忆在上下文截断后不会丢失。
持久配置
如果不想在每个项目里重复配,可以创建 ~/.hindsight/opencode.json 文件,这里面的配置对所有项目生效:
1 | { |
配置的优先级从低到高依次是:
默认值 < ~/.hindsight/opencode.json < opencode.json 插件选项
后面的会覆盖前面的,灵活度很高。
完整配置参考
1 | { |
几个关键选项说明:
bankId:静态记忆库 ID,不开启动态模式时使用recallBudget:召回量,可选low/mid/high,默认midrecallTags/retainTags:按标签过滤存储或召回retainEveryNTurns:自动保存频率,每 N 轮交互存一次
写在最后
Hindsight 给 OpenCode 补上了最关键的一环:记忆。
安装只需要在配置里加一行插件声明,连接 Hindsight 服务器后,每个项目就有了自己独立的记忆空间。
之前讨论过的架构、发现过的 bug、做过的决策,新会话直接继承,不需要重复交代。









