ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Hindsight Cursor CLI 集成:从 v0.1.0 到 v0.3.0 的演进历程与完整接入实战

Hindsight Cursor CLI 集成:从 v0.1.0 到 v0.3.0 的演进历程与完整接入实战 Hindsight Cursor CLI 集成从 v0.1.0 到 v0.3.0 的演进历程与完整接入实战【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight本篇技术指南以 Hindsight 仓库中hindsight-cursor-cli集成的官方 Changelogskills/hindsight-docs/references/changelog/integrations/cursor-cli.md为主线系统讲解 Cursor CLI 如何通过 Hook 机制获得 Hindsight 长期记忆包括 v0.1.0 的初始架构、v0.2.0 的 pip 安装器重构、v0.3.0 对 Cursor 3.x 对话解析的修复并结合集成源码、默认配置与测试用例给出可直接落地复制的安装、配置、排障全流程方案。集成概览四个 Hook 撑起的长期记忆hindsight-cursor-cli是 Hindsight 为 Cursor CLI 提供的长期记忆集成。它不侵入 Cursor 的交互流程而是借助 Cursor CLI v0.45 的 Hook 机制用四个纯 Python仅标准库脚本自动完成记忆的召回Recall与保留Retain让 Agent 在跨会话、跨项目时仍然记得你的技术栈、偏好与历史决策。官方集成文档对四个 Hook 的职责定义如下见 skills/hindsight-docs/references/sdks/integrations/cursor-cli.md 与 hindsight-integrations/cursor-cli/README.mdHook触发时机脚本职责sessionStart会话开始session_start.py确认 Hindsight 服务可达必要时在后台预热本地 daemonbeforeSubmitPrompt提交 Prompt 前recall.py检索相关记忆并作为additional_context注入stopAgent 循环结束retain.py每配置的 N 轮将对话保留到长期记忆sessionEnd会话结束session_end.py强制执行最终 retain确保短会话也不丢失四个事件的命令注册在 hooks.json 中分别配置了超时sessionStart5 秒、beforeSubmitPrompt45 秒、stop30 秒、sessionEnd30 秒。需要特别说明的是Cursor CLI 集成目前已被 Coding Agents 插件取代官方文档 cursor-cli.md 顶部有明确标注后者用一个包覆盖 Claude Code、Codex、Cursor、Copilot 等多种 CLI Agent并共享按仓库隔离的记忆银行。不过原集成包仍然可用、可安装本文即围绕它展开。版本演进三个里程碑解读这是本文的核心脉络。hindsight-cursor-cli的 Changelog 记录了三个版本的演进每个版本都对应一个明确的功能里程碑。v0.1.0集成从 0 到 1v0.1.0 是集成的首次发布贡献者 Korayem核心内容Added a Cursor CLI integration for Hindsight, including install/uninstall scripts, session hooks, and commands to retain and recall memories during Cursor sessions.这一版确立了整个集成的基本架构一直沿用至今install/uninstall 脚本负责把 Hook 脚本部署到 Cursor CLI 的 Hook 目录并在卸载时清理session hooks即上文的四个 Cursor CLI Hook 事件实现会话开始预热、提交前召回、回合结束保留、会话结束兜底的完整记忆闭环retain/recall 命令为 Hook 脚本提供调用 Hindsight API 的能力。v0.2.0从脚本到 pip 包v0.2.0贡献者 benfrank241完成了集成的工程化改造Cursor CLI integration is now available as a pip-installable package (hindsight-cursor-cli) with a Python-based installer/CLI for setup and hook installation.这一版的意义在于用户不再需要手动复制脚本只需pip install hindsight-cursor-cli即可获得一个带 CLI 入口的安装器。从 pyproject.toml 可以看到控制台脚本的注册方式[project.scripts] hindsight-cursor-cli hindsight_cursor_cli.cli:mainHook 载荷scripts/、settings.json、hooks.json以包数据形式随 wheel 发布安装器通过importlib.resources读取无论是从 wheel 安装还是从源码运行都能正确解析见 install.py 的模块 docstring。v0.3.0针对 Cursor 3.x 的解析修复v0.3.0贡献者 bjornmp是目前的最新版本pyproject.toml 中version 0.3.0它是一次关键的 Bug 修复Fixed Cursor 3.x transcripts so role-nested agent conversations are parsed correctly for recall/retention.其含义是Cursor 3.x 生成的会话 transcript 中Agent 对话以角色嵌套role-nested结构组织。旧版解析器无法正确处理这种嵌套结构会导致召回recall与保留retain拿到的消息不完整。v0.3.0 修复了 transcript 解析逻辑保证嵌套的 agent 对话能被正确提取——这正是 retain.py 中read_transcript与prepare_retention_transcript所负责的环节。快速接入安装、验证与卸载前置条件集成官方要求见 README.mdCursor CLIv0.45且支持 Hook 机制Python 3.9Hook 脚本仅用标准库无需 pip 依赖打包本身要求requires-python 3.11Hindsight 服务可以是 Hindsight Cloud也可以是本地hindsight-embeddaemon。安装pip install hindsight-cursor-cli然后运行一次安装器。两种连接模式对应两种命令# 模式一Hindsight Cloud hindsight-cursor-cli install --api-url https://api.hindsight.vectorize.io --api-token your-api-key # 模式二本地 daemonhindsight-embed省略参数即可 hindsight-cursor-cli install安装器会依次完成三件事逻辑见 install.py 的run_install将 Hook 脚本复制到~/.cursor/hooks/cursor-cli/把绝对路径写入~/.cursor/hooks.json与既有条目合并不覆盖其他 Hook若~/.hindsight/cursor-cli.json不存在则播种一个用户配置后续可在此填入 API Token。合并逻辑值得展开merge_hooks是幂等的它会先剔除已有注册中路径包含hooks/cursor-cli标记的旧条目再追加新条目避免重复注册见 install.py。安装完成后必须重启 Cursor CLI才能加载 Hook。若记忆没有生效检查~/.cursor/hooks.json是否存在、shell 的$PATH中是否有python3。卸载hindsight-cursor-cli uninstall卸载会删除 Hook 脚本目录并从~/.cursor/hooks.json中剥离 Hindsight 的条目但保留~/.hindsight/cursor-cli.json个人配置见 install.py。验证安装安装完成后可以查看安装器生成的注册文件确认四个事件都已注册cat ~/.cursor/hooks.json预期的四个事件及其超时配置与 hooks.json 中的模板一致。工作原理记忆如何被召回与保留召回Recall提交 Prompt 前的记忆注入recall.py挂在beforeSubmitPrompt事件上在用户按下发送、但请求尚未到达后端时执行。核心流程见 recall.py从 stdin 读取 Hook 输入prompt、conversation_id、transcript_path等解析配置并解析 API URL推导银行 ID 并确保银行使命bank mission已设置若recallContextTurns 1从 transcript 中组合多轮查询否则直接用当前 prompt截断到recallMaxQueryChars调用 Hindsight recall API将记忆格式化为additional_context输出。输出遵循 Cursor 的beforeSubmitPrompt响应协议{ continue: true, additional_context: hindsight_memories.../hindsight_memories }一个关键设计是优雅降级所有错误路径都返回退出码 0仅 debug 模式返回 2因为记忆 Hook 阻塞用户提问是危险默认值。记忆以如下结构注入官方文档示例hindsight_memories Relevant memories from past conversations... Current time - 2026-03-27 09:14 - Project uses FastAPI with asyncpg — not SQLAlchemy [world] (2026-03-26) - Preferred testing framework: pytest with pytest-asyncio [experience] (2026-03-26) /hindsight_memories保留Retain回合结束与会话结束的双重保险retain.py挂在stop事件上。Cursor 文档将其描述为 fire-and-forgetAgent 循环不会等待响应因此保留请求以asynctrue方式提交服务端后台处理失败也只记录到 stderr 并退出 0。流程要点见 retain.py文档 ID 即会话 ID以conversation_id作为 document ID同一会话重跑是更新而非重复存储chunked 模式下追加时间戳生成独立文档回合节流retainEveryNTurns控制保留频率除非forceTruesessionEnd 强制保留反馈循环防护保留前会剥离先前注入的记忆标签hindsight_memories块防止记忆自我污染标签模板变量retainTags支持{session_id}、{conversation_id}、{bank_id}、{timestamp}四个模板变量替换元数据每次保留附带retained_at、message_count、session_id并可通过retainMetadata追加自定义字段。session_end.py在会话终止时调用run_retain(hook_input, forceTrue)即使短会话尚未达到retainEveryNTurns也会被完整保留。配置详解参数、默认值与加载顺序默认配置随包发布在~/.cursor/hooks/cursor-cli/settings.json完整清单见 settings.json。个人覆盖配置建议放在~/.hindsight/cursor-cli.json它在更新时不会被覆盖。配置加载顺序后者覆盖前者见 cursor-cli.md内置默认值插件的settings.json用户配置~/.hindsight/cursor-cli.json环境变量。核心配置项个人配置示例{ hindsightApiUrl: https://api.hindsight.vectorize.io, hindsightApiToken: your-api-key, bankId: my-cursor-memory }配置键默认值说明hindsightApiUrl外部 API 地址空值表示连接本地 daemonhindsightApiTokennullHindsight Cloud 的 API TokenbankIdcursor-cli记忆银行标识bankMission内置 coding assistant prompt指导 Hindsight 保留哪些事实autoRecalltrue是否在每次 Prompt 前注入记忆autoRetaintrue是否每回合存储对话retainModefull-sessionfull-session或chunked滑动窗口retainEveryNTurns10每 N 回合保留一次1 每回合includeToolsfalse是否在纯文本 transcript 中以[tool_use:name]/[tool_result]标记呈现工具调用recallBudgetmid召回深度low快、mid均衡、high彻底recallMaxTokens1024注入记忆的最大 token 数recallTimeout10召回 API 调用超时秒dynamicBankIdfalse是否为每个项目建立独立银行dynamicBankGranularity[agent, project]动态银行 ID 的组成字段debugfalse是否向 stderr 输出调试日志前缀[Hindsight]settings.json中还有一组默认值值得注意recallTypes为[world, experience]recallContextTurns为1recallMaxQueryChars为800retainContext为cursor-cli用于标识写入来源apiPort为9077本地 daemon 端口retainTags默认[{conversation_id}]。环境变量覆盖所有设置都可通过环境变量覆盖优先级最高export HINDSIGHT_API_URLhttps://api.hindsight.vectorize.io export HINDSIGHT_API_TOKENyour-api-key export HINDSIGHT_BANK_IDmy-project export HINDSIGHT_RECALL_TIMEOUT30 export HINDSIGHT_DEBUGtrue其他常见变量还包括HINDSIGHT_AUTO_RECALL、HINDSIGHT_AUTO_RETAIN、HINDSIGHT_RECALL_BUDGET、HINDSIGHT_RECALL_MAX_TOKENS、HINDSIGHT_DYNAMIC_BANK_ID、HINDSIGHT_AGENT_NAME等对应关系见 cursor-cli.md 的配置表格。连接模式Cloud 与本地 Daemon外部 API 模式推荐在~/.hindsight/cursor-cli.json中配置 API 地址与 Token{ hindsightApiUrl: https://api.hindsight.vectorize.io, hindsightApiToken: hsk_your_token }本地 Daemon 模式本地运行hindsight-embeduvx hindsight-embedsession_start.py会检测本地 daemon 的apiPort默认9077。注意插件不会自动启动daemon需要单独启动配置中留空hindsightApiUrl即可自动连接http://localhost:9077。session_start.py还有一个贴心设计如果 Hindsight 不可达它会调用prestart_daemon_background在后台预热 daemon确保第一次召回或保留时服务已就绪见 session_start.py。按项目隔离记忆动态银行 ID默认所有会话共享bankId指定的银行。如需按项目隔离启用动态银行 ID{ dynamicBankId: true, dynamicBankGranularity: [agent, project] }这会自动创建形如cursor-cli::my-project的银行项目路径取自CURSOR_PROJECT_DIRCursor 的环境变量或 Hook 输入中的workspace_roots首项。这样在~/projects/api与~/projects/frontend分别运行 Cursor 时记忆互不干扰。如需在同一仓库的所有 worktree 间共享记忆把project换成gitProject{ dynamicBankId: true, dynamicBankGranularity: [agent, gitProject] }动态银行 ID 的推导逻辑位于 bank.pyderive_bank_id保留与召回两条路径都会调用。故障排查集成官方文档README.md提供了三个高频问题的排查思路会话启动时没有 Hindsight is active 提示在~/.hindsight/cursor-cli.json中加入debug: true或HINDSIGHT_DEBUGtrue并检查 stderr 输出记忆没有出现开启 debug 模式确认HINDSIGHT_API_URL指向可达的服务同时注意必须先完成至少一次保留才能召回——新会话首次提问时记忆库里还没有任何内容Hook 不触发检查~/.cursor/hooks.json是否为合法 JSON 且包含四个 Hook 条目Cursor CLI 需要重启会话才能加载新 Hook。若测试阶段希望尽快看到保留效果可将retainEveryNTurns临时设为1默认 10 意味着stopHook 每 10 回合才保留一次但sessionEnd仍会兜底保留。从源码继续深入如果你想深入理解实现细节或二次开发以下文件值得优先阅读安装与卸载逻辑install.pyCLI 入口hindsight-cursor-cli命令cli.py四个 Hook 脚本session_start.py、recall.py、retain.py、session_end.py共享库银行推导、HTTP 客户端、配置、内容处理、daemon、状态hooks/scripts/lib/测试套件tests/测试是理解行为的捷径。集成测试覆盖了银行推导、CLI、HTTP 客户端、内容格式化、Hook 与安装逻辑如test_install.py、test_hooks.py、test_content.py。测试通过 mock HTTP 客户端、stdin/stdout 管道与基于文件的状态来完成无需真实 Hindsight 服务cd hindsight-integrations/cursor-cli uv sync uv run pytest tests/ -v其中test_content.py对 transcript 解析含角色嵌套、工具调用标记的用例正是 v0.3.0 修复 Cursor 3.x 对话结构问题的回归保障所在。【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表