Hindsight × Continue 集成指南:用@hindsight为编码助手注入长期记忆
【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight
本指南基于仓库文档 hindsight-docs/guides/2026-07-17-guide-continue-memory-with-hindsight.md 及其对应集成包 hindsight-integrations/continue 的源码编写。核心内容为:安装
hindsight-continue适配器、指向 Hindsight 后端、在 Continue 的config.yaml中注册,以及通过@hindsight在聊天中按需召回项目记忆;此外还会说明如何借助 MCP + rules 在 Agent 模式下实现自动 recall 与 retain。读完本文,你将掌握一套可在 VS Code / JetBrains Continue 中直接落地的"编码助手 + 长期记忆"组合方案。
Continue.dev 本身没有"消息发送前"的钩子(pre-prompt hook),但它原生支持两个扩展点,而 Hindsight 的 Continue 集成正是围绕这两个扩展点设计的:
- HTTP context provider:在聊天中输入
@hindsight <query>(或仅@hindsight),Continue 会在查询时(query time)把请求转发给本地适配器,由适配器调用 Hindsight 完成召回,并把匹配的记忆以 Continue 期望的上下文项(context item)形式注入模型上下文。 - MCP server + rules(可选):把 Hindsight 的 MCP server 接入 Continue 的 Agent 模式,提供
retain/recall/reflect工具,再用一个 rules 文件让 Agent 在每次任务开始时自动召回、在学到持久性事实时自动留存。注意:自动召回依赖 Agent 遵循规则,确定性低于@hindsight提供器。
快速上手
先给出一份可照抄的最小操作路径:
pip install hindsight-continue。- 设置
HINDSIGHT_API_KEY(Hindsight Cloud)或HINDSIGHT_API_URL(自托管),并设置HINDSIGHT_CONTINUE_BANK_ID。 - 运行
hindsight-continue—— 默认监听127.0.0.1:8123。 - 在 Continue 的
config.yaml中把适配器注册为httpcontext provider。 - 在聊天中输入
@hindsight,确认召回的记忆出现在模型上下文中。
前置条件
开始之前请确认具备以下环境:
- 已安装 Continue(VS Code 或 JetBrains 扩展);
- Python 3.10+(适配器要求,见 pyproject.toml 中的
requires-python = ">=3.10"); - 一个可访问的 Hindsight 后端:Hindsight Cloud 或自托管服务器(可通过 docker 快速自托管,参考仓库根目录 README 的快速启动说明)。
Step 1:安装适配器
pip install hindsight-continuehindsight-continue是一个极轻量的本地服务:它接收 Continue 的 context-provider 请求,向 Hindsight 发起召回,然后返回 Continue 期望形状的上下文项。从源码结构看,它由四个核心模块组成:
- config.py:配置解析,从环境变量 / 编程式
configure(...)解析出全部参数; - cli.py:命令行入口(
hindsight-continue命令即由pyproject.toml的[project.scripts]映射到hindsight_continue.cli:main); - provider.py:核心转换逻辑,把 Continue 的 HTTP 请求变成 Hindsight 召回;
- server.py:基于 Python 标准库
http.server的ThreadingHTTPServer,没有任何第三方服务器依赖,是一个名副其实的轻量 sidecar。
Step 2:把适配器指向 Hindsight
设置环境变量后运行适配器。
Hindsight Cloud:
export HINDSIGHT_API_KEY=hsk_... export HINDSIGHT_CONTINUE_BANK_ID=my-project hindsight-continue # 监听 127.0.0.1:8123自托管 Hindsight 服务器:用HINDSIGHT_API_URL指向它,并省略 key:
export HINDSIGHT_API_URL=http://localhost:8888 export HINDSIGHT_CONTINUE_BANK_ID=my-project hindsight-continue # 监听 127.0.0.1:8123bank 由HINDSIGHT_CONTINUE_BANK_ID指定。建议每个项目一个 bank,避免一个代码库的上下文泄漏到另一个项目。
配置项一览
以下配置表来自 config.py 与 README.md:
| 环境变量 | 含义 | 默认值 |
|---|---|---|
HINDSIGHT_API_KEY | Hindsight API key | 无(Cloud 必需) |
HINDSIGHT_API_URL | Hindsight API 地址 | https://api.hindsight.vectorize.io(见 config.py) |
HINDSIGHT_CONTINUE_BANK_ID | 默认召回的 memory bank | 无 |
HINDSIGHT_CONTINUE_HOST | 适配器绑定主机 | 127.0.0.1 |
HINDSIGHT_CONTINUE_PORT | 适配器监听端口 | 8123 |
这些配置也可通过configure(...)编程式设置,或在 CLI 上以参数覆盖。hindsight-continue --help可查看全部 CLI 参数;从 cli.py 可以看到它支持:
--host:绑定主机(默认取环境变量或127.0.0.1);--port:监听端口(默认取环境变量或8123);--bank-id:默认 bank(默认取环境变量);--api-url:Hindsight API 地址(默认取环境变量或 Cloud);--budget:召回预算,取值low/mid/high,默认mid;-v / --verbose:开启调试日志。
更精细的召回参数
除了上表的环境变量,configure(...)还支持更多召回级参数(见 config.py),包括:
budget:召回预算级别(low/mid/high,默认mid,会透传给 Hindsight 的recall调用);max_tokens:召回结果的最大 token 数,默认2048;recall_types:按事实类型过滤(如world/experience/observation);recall_tags/recall_tags_match:按标签过滤,匹配模式支持any/all/any_strict/all_strict,默认any;item_name:注入 Continue 的上下文项标题,默认Hindsight Memory;preamble:追加在召回记忆块前的引导语,默认是 "Relevant long-term memory recalled from Hindsight for this project (use what's relevant, ignore the rest):"。
在 provider.py 的build_context_items中可以看到这些参数最终如何组装进recall调用:bank_id、query、budget、max_tokens始终传入,types/tags/tags_match仅在配置了对应值时附加。
Step 3:在 Continue 中注册
把适配器注册为 Continue 的httpcontext provider,写入 Continue 的config.yaml(~/.continue/config.yaml或工作区的.continue块):
context: - provider: http params: url: "http://127.0.0.1:8123/" title: hindsight displayTitle: Hindsight description: Recall long-term memory from Hindsight之后在 Continue 聊天中键入@hindsight—— 后面可以跟你想召回的内容 —— 匹配的记忆就会被加入模型上下文。
按请求覆盖 bank
HINDSIGHT_CONTINUE_BANK_ID是默认 bank。单个请求可以通过 provider 配置中的options.bankId指定不同 bank,从而在每个 provider 块内覆盖默认值:
context: - provider: http params: url: "http://127.0.0.1:8123/" options: bankId: another-bank对应的解析逻辑在 provider.py 的_resolve_bank_id:它优先读取请求options中的bankId(也兼容bank_id),否则回退到全局配置的默认 bank。
适配器如何"使用记忆":协议与实现细节
Continue 没有 pre-prompt 钩子,所以适配器工作在 Continue 暴露的两个扩展点上:
- 召回(HTTP context provider):输入
@hindsight <query>(或裸@hindsight),适配器接收 Continue 的请求体{query, fullInput, options, workspacePath},向 Hindsight 召回,并返回形状为{name, description, content}的上下文项。召回发生在查询时、按需进行。 - 召回 + 留存(可选,MCP + rules):把 Hindsight MCP server 接入 Continue 的 Agent 模式,提供
retain/recall/reflect工具,配合 rules 文件让 Agent 在任务开始自动召回、对持久性事实执行 retain。
从 provider.py 的源码可以看到完整的转换链路:
- 查询文本解析(
_resolve_query,L43-L53):优先取query(@hindsight后输入的文本);若为空,回退到fullInput(整条消息),这样裸@hindsight也能基于当前输入召回。 - bank 解析(
_resolve_bank_id):请求options.bankId优先,否则用配置的默认 bank。若两者都没有,会抛出HindsightError,提示设置HINDSIGHT_CONTINUE_BANK_ID、调用configure(bank_id=...)或在请求中传options.bankId。 - 调用 Hindsight 召回:使用
hindsight_client包构造客户端并调用recall(...)(客户端解析见 _client.py,默认 30 秒超时、带hindsight-continue/<version>的 user-agent)。召回失败时会把 HTTP 状态码透传出来,让 401/403(token 错误)与"无结果"在日志中可区分。 - 组装上下文项:把召回结果逐条编号成
1. <text>列表,前缀加上preamble,description记录 "Memory recalled for: <前 80 字符的查询>",最终返回一个ContextItem(name 默认为Hindsight Memory)。
服务端 server.py 是纯标准库实现:
GET /与GET /health返回健康检查 JSON({"status": "ok", "service": "hindsight-continue"}),便于确认适配器存活;POST /接收 Continue 的上下文请求,请求体超过 1MB 返回 413,非法 JSON 返回 400;- 每次请求都会新建一个 Hindsight 客户端并在请求结束后关闭——这是刻意的设计:
ThreadingHTTPServer每个请求一个工作线程,而 Hindsight 客户端的 aiohttp session 绑定在首次使用它的线程/事件循环上,共享单例客户端会导致后续请求报错(详见 server.py 的注释说明); - 召回失败返回 502 并携带错误信息,让问题显式暴露在 Continue 的警告中,而不是静默返回空记忆。
对应测试见 tests/test_provider.py:覆盖了默认budget == "mid"、按query召回并返回单个 context item、空输入跳过召回、options.bankId覆盖默认 bank、召回异常包装,以及recall_types/recall_tags/recall_tags_match的透传。
Agent 模式下的自动召回与留存
@hindsight提供的是精确的按需召回。若要"免手"的召回与留存,把 Hindsight MCP server 接入 Continue 的 Agent 模式,并添加一条"先召回"规则。示例资产位于仓库的hindsight-integrations/continue/examples/.continue/目录:
- mcpServers/hindsight.yaml:注册 Hindsight 工具的 MCP server 块。Cloud 版本用
streamable-http指向https://api.hindsight.vectorize.io/mcp/my-project/(把my-project换成你的 bank,把 token 换成你的 API key);自托管版本则指向本地http://localhost:8888/mcp/my-project/。 - rules/hindsight.md:"始终先召回"规则文件(
alwaysApply: true),内容要点包括:- 每次任务开始前调用
recall工具检索相关历史决策、偏好与项目上下文,取相关部分、忽略其余; - 学到持久性事实(架构决策、用户偏好、约定、跨会话值得记住的内容)时调用
retain工具留存; - 除非用户询问,否则不主动提及这些记忆操作。
- 每次任务开始前调用
自动召回依赖 Agent 遵循规则,因此确定性不如@hindsight提供器。同样,MCP server 暴露的retain/recall/reflect工具也可在 Continue 中直接手动调用。
按项目隔离的 memory bank
Hindsight 的记忆按bank隔离。你设置的HINDSIGHT_CONTINUE_BANK_ID就是适配器默认召回的 bank。
单次请求可以通过 provider 配置的options.bankId指向不同 bank,从而在每个 provider 块内覆盖默认值。每个项目一个 bank 的好处:
- 各代码库的记忆相互隔离,不会串上下文;
- 同一项目上运行的其他 Hindsight 编辑器集成可以共享同一份记忆(Hindsight 生态中还存在针对其他编码 Agent 的同类适配器,可在 hindsight-integrations 目录下查看)。
验证记忆是否真正生效
推荐的验证流程:
- 运行
hindsight-continue并在 Continue 中完成注册; - 在项目的 bank 中存下一条决策或约定;
- 打开 Continue 聊天,输入
@hindsight加一个相关问题; - 确认召回的记忆出现在模型上下文中。
示例:
- 先存储项目当前的 auth 约定;
- 再输入
@hindsight auth conventions提问; - 如果召回出的上下文浮现出此前的决策,说明整套链路已打通。
另外,适配器的健康检查接口GET http://127.0.0.1:8123/health返回{"status": "ok", "service": "hindsight-continue"},可以用curl快速确认适配器是否在运行。
常见错误
忘记设置 bank
召回针对HINDSIGHT_CONTINUE_BANK_ID执行。若未设置,适配器没有默认 bank 可召回——每个项目都要设置一个。从源码看,此时请求会直接抛出HindsightError("No Hindsight bank id configured...")并以 502 返回给 Continue,而非静默返回空结果。
期望每条消息都被动召回
Continue 没有 pre-prompt 钩子,@hindsight提供器只在你主动调用时召回。需要记忆进上下文时输入@hindsight,或在 Agent 模式使用 MCP + rules 方案。
适配器 URL 与配置不匹配
适配器默认监听127.0.0.1:8123。如果修改了主机或端口,务必同步更新 Continueconfig.yaml中的url。
以为记忆是全局的
记忆按 bank 隔离。这通常是期望的行为,但不要指望一个项目的 bank 能召回另一个项目的上下文。
FAQ
必须使用 Hindsight Cloud 吗?
不是。自托管的 Hindsight 服务器同样可用——设置HINDSIGHT_API_URL并省略 key 即可。仓库提供了 docker 目录下的多种部署编排(含 local-llm、external-pg、vchord、pgroonga 等组合)与 helm 图表,可据此自行部署。
@hindsight会自动召回吗?
不会。@hindsight提供器在调用时才按需召回。需要自动召回时,在 Agent 模式使用可选的 MCP server + rules 文件。
记忆如何隔离?
按 bank 隔离,由HINDSIGHT_CONTINUE_BANK_ID设定。建议每个项目一个 bank,需要时可用options.bankId按请求覆盖。
可以修改适配器的主机或端口吗?
可以。设置HINDSIGHT_CONTINUE_HOST和HINDSIGHT_CONTINUE_PORT(或使用 CLI 的--host/--port参数),然后同步更新 Continue 配置中的url。
后续步骤
- 阅读 Continue 集成的完整 README:hindsight-integrations/continue/README.md;
- 查看 MCP + rules 的示例资产:examples/.continue/mcpServers/hindsight.yaml 与 examples/.continue/rules/hindsight.md;
- 在 hindsight-integrations 目录下了解 Hindsight 对其他编码 Agent 与框架的同类适配器(cline、cursor、codex、github-copilot、agent 框架等);
- 深入 Hindsight 的召回(recall)与留存(retain)底层机制:召回/留存是 Hindsight 核心 API 能力,相关实现位于 hindsight-api-slim/hindsight_api 对应的
api、engine等模块; - 若需自托管后端,参考仓库根目录 README.md 的快速启动与 docker 目录下的部署方案。
【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考