news 2026/9/13 11:35:06

Hindsight × Continue 集成指南:用 `@hindsight` 为编码助手注入长期记忆

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hindsight × Continue 集成指南:用 `@hindsight` 为编码助手注入长期记忆

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提供器。

快速上手

先给出一份可照抄的最小操作路径:

  1. pip install hindsight-continue
  2. 设置HINDSIGHT_API_KEY(Hindsight Cloud)或HINDSIGHT_API_URL(自托管),并设置HINDSIGHT_CONTINUE_BANK_ID
  3. 运行hindsight-continue—— 默认监听127.0.0.1:8123
  4. 在 Continue 的config.yaml中把适配器注册为httpcontext provider。
  5. 在聊天中输入@hindsight,确认召回的记忆出现在模型上下文中。

前置条件

开始之前请确认具备以下环境:

  • 已安装 Continue(VS Code 或 JetBrains 扩展);
  • Python 3.10+(适配器要求,见 pyproject.toml 中的requires-python = ">=3.10");
  • 一个可访问的 Hindsight 后端:Hindsight Cloud 或自托管服务器(可通过 docker 快速自托管,参考仓库根目录 README 的快速启动说明)。

Step 1:安装适配器

pip install hindsight-continue

hindsight-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.serverThreadingHTTPServer没有任何第三方服务器依赖,是一个名副其实的轻量 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:8123

bank 由HINDSIGHT_CONTINUE_BANK_ID指定。建议每个项目一个 bank,避免一个代码库的上下文泄漏到另一个项目。

配置项一览

以下配置表来自 config.py 与 README.md:

环境变量含义默认值
HINDSIGHT_API_KEYHindsight API key无(Cloud 必需)
HINDSIGHT_API_URLHindsight 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_idquerybudgetmax_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 的源码可以看到完整的转换链路:

  1. 查询文本解析_resolve_query,L43-L53):优先取query@hindsight后输入的文本);若为空,回退到fullInput(整条消息),这样裸@hindsight也能基于当前输入召回。
  2. bank 解析_resolve_bank_id):请求options.bankId优先,否则用配置的默认 bank。若两者都没有,会抛出HindsightError,提示设置HINDSIGHT_CONTINUE_BANK_ID、调用configure(bank_id=...)或在请求中传options.bankId
  3. 调用 Hindsight 召回:使用hindsight_client包构造客户端并调用recall(...)(客户端解析见 _client.py,默认 30 秒超时、带hindsight-continue/<version>的 user-agent)。召回失败时会把 HTTP 状态码透传出来,让 401/403(token 错误)与"无结果"在日志中可区分。
  4. 组装上下文项:把召回结果逐条编号成1. <text>列表,前缀加上preambledescription记录 "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 目录下查看)。

验证记忆是否真正生效

推荐的验证流程:

  1. 运行hindsight-continue并在 Continue 中完成注册;
  2. 在项目的 bank 中存下一条决策或约定;
  3. 打开 Continue 聊天,输入@hindsight加一个相关问题;
  4. 确认召回的记忆出现在模型上下文中。

示例:

  • 先存储项目当前的 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_HOSTHINDSIGHT_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 对应的apiengine等模块;
  • 若需自托管后端,参考仓库根目录 README.md 的快速启动与 docker 目录下的部署方案。

【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 11:31:24

刚挠结合PCB询价资料技术解析与避坑指南

1. 刚挠结合 PCB 询价资料全解析&#xff1a;这不是一份报价单&#xff0c;而是一张技术通关地图刚挠结合 PCB——这个词在电子制造圈里&#xff0c;既让人眼前一亮&#xff0c;又下意识皱眉。它不是普通PCB的简单升级&#xff0c;而是把“刚性板的稳定”和“柔性板的弯折”硬生…

作者头像 李华
网站建设 2026/9/13 11:29:17

基于BERT与Django的服装评论智能分析系统设计与实现

1. 项目概述与核心价值这个毕业设计项目构建了一个面向服装领域的用户评论智能分析系统&#xff0c;融合了大数据处理与深度学习技术。系统能够自动解析电商平台海量服装评论中的情感倾向、产品特征和用户关注点&#xff0c;为商家提供产品改进、营销策略优化的数据支持。为什么…

作者头像 李华