拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Hindsight Codex 记忆银行策略:按仓库隔离分库,把跨仓库召回噪声降为零

Hindsight Codex 记忆银行策略按仓库隔离分库把跨仓库召回噪声降为零【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight用 Hindsight 给 Codex 配记忆时默认所有仓库的会话都写进同一个名为codex的银行。代价是修 API 仓库的 bug 时recall 会把前端仓库的 lint 约定一起端上来——记忆都是真的但来自错误的地方。本文的方案用 Hindsight 的dynamicBankId机制按工作目录自动派生记忆银行 ID一仓库一库再配一个固定命名的团队共享库。效果是同一仓库内的召回不受影响其他仓库的记忆完全不进入召回预算。安装与环境准备一句话带过按 Codex 安装指南 装好钩子并连接后端Hindsight Cloud、自托管服务器或本地 embed daemon 均可下文只讲银行布局。方案速览在~/.hindsight/codex.json里开启dynamicBankId: true与dynamicBankGranularity: [agent, project]每个仓库工作目录自动对应一个银行银行 ID 由字段用::拼接例如codex::api无需手工命名跨仓库的团队规范放固定命名的共享银行dynamicBankId: false 固定bankId不要混进按仓库的库默认retainMode为full-session会话结束时整份 transcript 被保留正常干活即可沉淀记忆用双仓库测试序列验证同仓库要能召回跨仓库必须保持干净。银行 ID 是怎么拼出来的派生规则派生逻辑在 bank.py#L24-L65静态模式dynamicBankId: false直接返回bankId配置值缺省为codex配置了bankIdPrefix则拼为前缀-bankId动态模式按dynamicBankGranularity取值、用::连接。Codex 支持的字段有四个agentagentName配置默认codex、project工作目录基名空则unknown、session会话 ID、user环境变量HINDSIGHT_USER_ID缺省anonymous。channel维度被刻意不提供——CLI 没有 Telegram/Discord 那样的多通道路由。test_bank.py 固化了两个关键行为agentNamemybot且 cwd 为/home/user/hindsight时派生出mybot::hindsight含空格或 UTF-8 的目录名原样保留、不做 URL 编码——这是关键因为 retain 与 recall 两次钩子调用只要编码规则一致就必然命中同一个银行隔离才不会在传输层悄悄失效。配置加载顺序config.py#L110-L140 定义了四层加载顺序后者覆盖前者内置默认值DEFAULTS→ 插件安装时写入的settings.json→ 用户配置~/.hindsight/codex.json推荐改这里升级不丢→ 环境变量覆盖。因此一次运行即可用HINDSIGHT_DYNAMIC_BANK_IDtrue、HINDSIGHT_BANK_IDteam-standards这类变量切换分库策略不必改任何文件HINDSIGHT_DEBUGtrue则用于排查派生结果。三个钩子挂起读写hooks.json 显示记忆读写挂在 Codex 的三个生命周期事件上钩子脚本动作SessionStartsession_start.py预热 Hindsight 服务器后台预启动 daemonUserPromptSubmitrecall.py从当前银行召回记忆注入 prompt 上下文Stopretain.py把会话 transcript 写入当前银行recall.py读取钩子输入后派生银行 ID按recallContextTurns组装多轮查询、按recallMaxQueryChars默认 800 字符截断调用 recall API 后用hindsight_memories包裹结果经hookSpecificOutput.additionalContext注入。退出码恒为 0任何错误都不打断对话——召回失败时 Codex 只是少了上下文而不是挂掉这是优雅降级设计。retain.py按retainMode处理 transcriptfull-session保留整份会话document_id取session_id保证同一会话反复 upsertchunked模式按retainEveryNTurns加retainOverlapTurns取重叠窗口并在文档 ID 后追加时间戳。注意即使full-session模式retainEveryNTurns默认 10仍然生效turn 数到倍数才触发写入测试召回前这点容易踩坑。分库与共享库的配置写法按仓库分库最小配置写两个字段存到~/.hindsight/codex.json{ dynamicBankId: true, dynamicBankGranularity: [agent, project] }改什么开启动态派生。效果在~/projects/api与~/projects/frontend分别运行 Codex银行 ID 为codex::api与codex::frontendretain 与 recall 各走各库。若两个仓库目录基名撞名比如有同名子模块目录在粒度数组里加session或user进一步区分用bankIdPrefix可区分测试/生产两套库。什么内容值得沉淀银行价值取决于你放进去的信息密度。四类回报最高的内容内容类型示例为什么值得留约定本项目用 FastAPI asyncpg不用 SQLAlchemy每次新会话都要重新解释一遍已知脆弱区部署前必须先跑迁移否则 500阻止 Codex 用踩坑方式重新学会历史排障401 是时钟偏移导致用 X 修好复发 bug 一次召回即定位工程决策为什么重试逻辑改成这样决策从 diff 反推很贵召回很便宜默认full-session模式下无需刻意操作让会话自然结束即可。要做的是在会话里把约定或决策明确说出来——被说出来的规则才值得被抽取成事实含糊带过的不会留下。跨仓库共享库团队级 commit 约定、共享 CI 流水线、安全评审要求这类知识跨仓库边界放进任何按仓库的库都会丢失。用静态配置开一个固定银行{ dynamicBankId: false, bankId: team-standards }指向同一bankId的银行在各集成与队友之间共享一人 retain 的规范人人可 recall。实用布局日常开发走按仓库银行跨切规范走这一个共享银行。反模式反模式一所有仓库留在默认codex银行。默认值见 settings.json不开dynamicBankId就共享codex。后果是写入的仓库越多每次召回与无关上下文的竞争越激烈召回预算被错误仓库的记忆挤占——召回结果冒出别的项目内容就是该拆分的信号。反模式二期望跨库召回。银行隔离是严格的数据不跨库流动API 仓库永远召回不到前端仓库的决策。这是特性而非缺陷确实要共享的知识走共享库。召回效果验证步骤retainEveryNTurns默认 10测试前临时设为1让每次 turn 都触发 retain。按序执行仓库 A 里让 Codex 明确说出一个决策比如为什么加重试结束会话等 transcript 被 retain仓库 A 开新会话问该决策——通过判据答案被召回且与首次会话一致仓库 B 开会话问同样问题——通过判据不出现仓库 A 的决策第 2 步失败时确认两次运行派生出相同银行 ID开debug: true后 stderr 可见 bank ID 日志第 3 步失败时检查dynamicBankId是否真为true以及有没有被HINDSIGHT_BANK_ID环境变量覆盖。进一步阅读完整配置表与默认值见 Codex 集成 README想核对派生行为读 bank.py 及其对应 test_bank.py还没有后端的话按快速开始 自建一个 Hindsight 服务器配合本文布局使用。【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门