ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Hindsight 0.8.0 升级指南:跨实例 Bank 迁移、全量 LLM 请求追踪与去重合并

Hindsight 0.8.0 升级指南:跨实例 Bank 迁移、全量 LLM 请求追踪与去重合并 Hindsight 0.8.0 升级指南跨实例 Bank 迁移、全量 LLM 请求追踪与去重合并【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight本文以 Hindsight 0.8.0 官方发布说明hindsight-docs/blog/2026-06-08-version-0-8-0.md为主线结合hindsight-api-slim中的真实实现与测试系统讲解本次大版本在**规模运行running memory at scale与内部可见性seeing inside it**两条主线上的能力升级跨实例 Bank 迁移、默认开启的 LLM 全量请求追踪、更可靠且更快的去重合并consolidation、以及开箱即用的 Provider Prompt Caching。读完本文你将掌握hindsight-admin export-bank / import-bank的完整用法、document-transfer API 的操作流程、LLM 追踪与后台操作的可观测能力以及相关环境变量HINDSIGHT_API_*的取值与影响。版本定位一次面向规模与可观测性的发布0.8.0 的核心目标非常聚焦让记忆在更大规模下运行并让系统内部状态清晰可见。具体而言Bank 可以在实例间迁移—— 内置的导出/导入能力让 staging → production、自托管 → Cloud、跨区域搬迁都不再需要重新摄取源内容并重复付费做一次提取retain、recall、reflect 背后的每一次 LLM 调用都被默认追踪—— 无需额外配置即可看到每次调用的 provider、model、token 用量与完整 promptconsolidation 借助内置去重变得远为可靠—— 用确定性的相似度检测兜住 LLM 漂移drift曾导致的重复 observationProvider Prompt Caching 默认开启—— 降低 Hindsight 代你发起的 LLM 调用的成本与延迟。这四点共同回答了“记忆系统变大了之后怎么搬、怎么查、怎么不脏、怎么省钱”四个运维问题。跨实例 Bank 迁移搬走整个记忆不重跑 LLM在过去把一个 memory bank 从一个 Hindsight 部署迁移到另一个比如 staging 升 production、自托管迁 Cloud、或跨区域搬迁意味着重新摄取源内容并为每一次提取再次付费。0.8.0 提供了头等公民first-class的迁移能力。整库导出/导入hindsight-admin export-bank / import-bankhindsight-adminCLI 位于 hindsight-api-slim/hindsight_api/admin/cli.py新增了两个子命令# 在源实例上导出整个 bank hindsight-admin export-bank --bank bank_id --output ./my-bank.zip [--schema schema] [--include-history] # 在目标实例上导入 hindsight-admin import-bank --archive ./my-bank.zip [--schema schema] [--target-bank new_bank_id] [--include-history]各参数含义来自 cli.py 中的定义参数说明--bank/-b要导出的 bank id必填--output/-o写入.zip归档的路径必填--schema/-sbank 所在的数据库 schema默认取配置的基础 schemaHINDSIGHT_API_DATABASE_SCHEMA或public--include-history同时导出运维历史audit_log、llm_requests默认关闭--archive/-aimport-bank读取的.zip归档路径必填--target-bank覆盖目标 bank id默认沿用归档里的源 bank id导出归档携带memory units、mental models、entities、links、配置、以及 mental-model 历史导入时目标实例用自身的 embedding 模型在本地重新嵌入re-embed因此不会重跑任何 LLM 提取迁移既快又便宜即使源、目标实例使用不同的 embedding 后端例如不同的向量库、文本搜索后端或不同的嵌入模型也能完成迁移——这正是设计上跨编码器可移植的体现见 export.py 的注释every vector is regenerated on the target, so nothing here is encoder-specific。import-bank完成时会打印详细的导入统计例如Imported bank my-bank: 120 doc(s), 3400 fact(s), 812 observation(s), 45 mental model(s), 25 mm-history row(s), 3 knowledge page(s), 2 directive(s), 1 webhook(s), 0 history row(s)归档内容与“不携带什么”的设计源码级细节从 export.py 可以看到归档设计的核心取舍不写 embedding也不写数据库 id_DERIVED_COLUMNS (embedding, search_vector)这些派生的向量列在导出时被剥掉见_dump_bank_rows由目标实例用自身模型重新生成实体、链接、共现关系是派生数据不导出导入时通过回放 document/fact/observation 载荷在目标 bank 上重新做实体消解entity resolution、重建链接与共现统计observation 的来源重写observation 的每个 source 都被改写为(document_id, fact_index)引用TransferObservationSource这样即使源/目标的 memory unit id 完全不同也能在目标 bank 上重新解析出完整的证明链只有源事实全部在导出集合内的 observation 才会被携带避免导入后出现悬空引用有选择地跳过部分表在途操作async_operations、临时工作队列、file_storage原始上传与 attachments、被废弃事实的 curation 归档invalidated_memory_units等被显式排除见_SKIP_TABLES。file_storage的跳过意味着 attachments 的原始字节不会随归档迁移——文档正文里的占位符与已提取的事实仍然保留只是附件无法再展示zip 归档结构documents/NNNNNN.json每个文档含 chunks 与 facts、observations.json、banks.json/mental_models.json/directives.json/webhooks.json、knowledge_pages.json以及带schema_version、source_bank_id、各类 count 的manifest.json--include-history时额外写入history/{table}.json。另外注意两点运维提示_SKIP_TABLES里明确写着async_operations在途操作不导出迁移前请在源实例排空/等待在途任务而import-bank的文档串明确目标 bank 必须不存在——导入是恢复一个完整 bank而不是合并。Document Transfer API只搬源文档除了整库命令0.8.0 还提供专门的document-transfer API用于把某个 bank 的源文档在 bank 之间搬移不重跑 LLM以便从原始文档重建或 fork 一个 bank。相关端点在 hindsight-api-slim/hindsight_api/api/http.pyPOST /v1/default/banks/{bank_id}/document-transfer/export异步提交文档导出背景操作可选document_id不传则导出全库、include_observationstrue、include_knowledge_basetrue后两者仅整库导出可用。返回 202 operation_id轮询GET /v1/default/banks/{bank_id}/operations/{operation_id}完成后从result_metadata.download_url取回 ZIPPOST /v1/default/banks/{bank_id}/document-transfer上传归档进行异步导入支持on_conflictskip|replace|new-id三种冲突策略默认skip同样返回operation_id结果统计在result_metadata中。两个端点默认受开关保护HINDSIGHT_API_ENABLE_DOCUMENT_EXPORT_API/HINDSIGHT_API_ENABLE_DOCUMENT_IMPORT_API未开启时返回 404。注意同步版导出已被移除旧的GET .../document-transfer恒返回 410因为同步整库导出会把整个 bank 加载进内存并长时间占用数据库连接在大 bank 上可能拖垮共享 API。从源码可以推断导入本质上是回放确定性 retain 流水线importer.py 的模块注释指出对每个文档它会重建已提取的事实、用目标 bank 的 embedding 模型重新嵌入然后执行实体消解Phase 1与事实/链接插入Phase 2——与 retain 在 LLM 提取之后执行的步骤完全一致但全程不调用 LLM。因此时间/语义/因果链接与实体合并都是相对目标 bank 现有记忆重新计算的。运维与可观测性看得见每一次 LLM 调用0.8.0 在让 Hindsight 背后在做的事可见、易运维上投入了大量工作——从每个请求背后的单次 LLM 调用到维护 bank 的长期任务。LLM 请求追踪默认开启、逐 bank 记录Hindsight 会代表你发起大量 LLM 调用retain 期间的事实提取、recall 期间的查询分析与重排rerank、reflect 期间的合成以及后台的 consolidation。0.8.0默认开启对每一次调用的记录包括失败按 bank 归集。每条 trace 捕获provider 与 model例如截图中gemini/gemini-2.5-flashtoken 用量input、output、cached、total延迟duration与开始时间该请求背后的完整 prompt 与工具调用。追踪通过OpenTelemetry GenAI recorder写入并设有一天1 天的保留窗口避免 trace 无限累积。控制相关行为的环境变量见 config.py 与DEFAULT_LLM_TRACE_*环境变量默认值说明HINDSIGHT_API_LLM_TRACE_ENABLEDtrue全局开关0.8.0 起默认开启HINDSIGHT_API_LLM_TRACE_SCOPES空 追踪所有调用作用域逗号分隔的调用作用域白名单如只追踪 retain 提取可填retain_extract_factsHINDSIGHT_API_LLM_TRACE_RETENTION_DAYS1trace 行保留天数HINDSIGHT_API_LLM_TRACE_MAX_CHARS50000存储的输入/输出超长时的截断字符数新的llm-requests端点对外暴露这些 trace 与聚合统计Control Plane 提供上图的可视化查看器。Python 与 TypeScript 客户端现在也能从 reflect 返回结果中读出tool_calls与llm_calls追踪让你看清一个答案到底是怎么生成的。recall 的 trace 还保留了reciprocal-rank-fusion 的源排序信息source ranks从而能分辨每个结果是由哪种检索策略semantic / bm25 / graph / temporal浮出来的。运维价值如果某次 retain 看起来不对或某个 reflect 答案出乎意料直接打开 trace 就能读到它背后真实的 prompt、model 与工具调用而不再需要猜。可续跑、可检视的后台操作长期运行的工作——consolidation 与批量 retain——现在在运行时会写入持久化的进度快照durable progress snapshot你可以轮询某个 operation 观察其推进如果 worker 中途重启它会从断点续跑而不是从头再来——一次部署或一次瞬时崩溃不再白白丢掉已完成的工作。Control Plane 新增Background Operations视图支持按类型或状态过滤、观察进行中的进度、取消待处理任务。更清晰的 Control Planeoperation 与 graph 图例现已完全本地化audit-log 与 LLM-request 视图在功能未启用时显示清晰的 not enabled 提示页而不是直接报错。更聪明的 Consolidation内置去重默认开启consolidation 是把原始事实整理成干净 observation 与 mental model 的后台过程由 LLM 驱动模型读取新事实决定是更新已有 observation 还是新写一条。实践中模型偶尔会漂移drift——写出一条几乎相同的 observation而不是合并进已有那条日积月累就堆出大量重复。0.8.0 不再把这件事完全交给模型而是加固基础设施、内置去重并默认开启在 create 与 update 两条路径上新 observation 若与已有的一条相似度超过阈值默认 0.97会被自动检测并合并而不是放任累积过去靠希望模型别漂移才能防住的重复现在被确定性地捕获——这对任何处于稳定写入负载下的 bank 都是一次实打实的可靠性升级。阈值可通过环境变量调整config.pyENV_CONSOLIDATION_DEDUP_THRESHOLD默认DEFAULT_CONSOLIDATION_DEDUP_THRESHOLD 0.97export HINDSIGHT_API_CONSOLIDATION_DEDUP_THRESHOLD0.95 # 调低阈值 更宽松的合并判定效果显著在官方持续基准上重复 observation 占比从约30%降到约1%数据源自项目官方发布说明可在其连续性能仪表盘上实时跟进该指标。去重路径本身也更快、更轻查找该合并进哪条 observation时不再运行 cross-encoder reranker——consolidation 直接对检索结果做 interleave 融合这一改动既省掉整个 rerank 环节又更可靠地浮出近乎相同的孪生 observationreranker 往往把它埋得很深。结果是 consolidation 同时做到了做得更少、重复更少。Provider Prompt Caching默认开启、零配置省钱Hindsight 现在为 retain、consolidation、reflect 背后的 LLM 调用启用provider prompt-prefix caching这些 prompt 中共享的、与 bank 无关的前缀会在 provider 侧被缓存重复调用时同时降低 token 成本与延迟。默认开启无需任何配置。相关开关config.py环境变量默认值说明HINDSIGHT_API_LLM_PROMPT_CACHE_ENABLEDtrue全局 prompt 前缀缓存总开关HINDSIGHT_API_REFLECT_PROMPT_CACHE_ENABLEDtruereflect 场景的 prompt 缓存开关要求全局开关也开启新增集成Claude Agent SDK—— 为基于 Anthropic Claude Agent SDK 构建的 agent 提供持久化 Hindsight 记忆Superagent—— 一个安全中间件集成用于将 Superagent 的交互路由经过 Hindsight。其他值得关注的变化检索与嵌入更快的时序召回temporal 入口扫描现在被限制为每个事实类型只取 top matches修复了 bank 中存在大量同日记忆时出现的病态慢查询可调检索semantic、bm25、graph、temporal各策略的检索 boost 可单独配置并新增HINDSIGHT_API_SEMANTIC_MIN_SIMILARITY默认0.3作为语义召回的最低相似度地板可按语料调校 recallONNX 本地嵌入新增基于 ONNX 的本地嵌入 provider与现有 local 与 TEI 选项并列。存储与后端有界记忆历史mental-model 与 observation 历史从单个 JSONB 列迁入专用表移除了可能拖垮大 bank 的无界增长上限外部 Postgres 修复为 vchord 在外部托管的 PostgreSQL 上正常工作search_path加入了 VectorChord catalogpgvector 写入前会先校验 embedding 维度尽早发现维度不匹配Oracle 23ai 后端recall 与 mental-model 历史现在可在 Oracle 后端工作document lock/upsert 改为方言感知dialect-aware更健壮的 BM25PGroonga BM25 查询文本现在会被转义特殊字符不再破坏关键词检索。LLM 与模型更灵活的 LLM 配置HINDSIGHT_API_LLM_STRICT_SCHEMA在所有支持 JSON schema 的 provider 上生效HINDSIGHT_API_LLM_EXTRA_BODY应用到所有 API provider即把自定义 JSON 合并进 OpenAI 风格的extra_body默认 MiniMax 模型升级为 M3更可靠的模型初始化当 provider 阻塞时模型初始化快速失败fail fast而不是无限挂起对静默丢弃tool_choicerequired的服务器自动降级处理。retain / reflect / consolidation 的细节修正更精简的 reflect当 mental model 足够新时可短路short-circuit强制检索省掉一次额外 LLM 调用retain 完整性retain 在执行提取前做预提取新鲜度复查并序列化同一文档的并发写者阻止 bank routing key 污染事实归因提供更丰富的逐项结果元数据配置正确性bank 配置的PATCH现在对从未 retain 过的 bank 也能持久化生效。迁移与升级小结对运行中的部署0.8.0 的默认行为变化集中在两处默认开启LLM 请求追踪建议确认磁盘与HINDSIGHT_API_LLM_TRACE_RETENTION_DAYS是否符合你的保留策略与consolidation 内置去重阈值HINDSIGHT_API_CONSOLIDATION_DEDUP_THRESHOLD0.97可按业务调整。迁移 Bank 的推荐路径是源实例排空在途 operation →hindsight-admin export-bank打包 → 目标实例配置好目标 embedding 后端→hindsight-admin import-bank恢复若只想搬源文档重建/fork bank则走POST /v1/default/banks/{bank_id}/document-transfer/export与POST /v1/default/banks/{bank_id}/document-transfer两个异步端点。更多细节可继续阅读 发布说明原文、迁移实现 export.py、importer.py、配置定义 config.py 以及文档传输测试 test_document_transfer.py。【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表