ai-memory 的 Hindsight 借鉴落地设计:typed 脱敏标签、证据强度、因果边检索与 standing-answer 简报

ai-memory 的 Hindsight 借鉴落地设计:typed 脱敏标签、证据强度、因果边检索与 standing-answer 简报 ai-memory 的 Hindsight 借鉴落地设计typed 脱敏标签、证据强度、因果边检索与 standing-answer 简报【免费下载链接】ai-memorySolution for long term memory for agent coding CLIs and to facilitate handoff between different agent vendors项目地址: https://gitcode.com/GitHub_Trending/ai/ai-memory本文以 docs/design-hindsight-borrowings.md 为骨架结合仓库源码、迁移脚本与测试用例展开。该设计文档源自对开源竞品 HindsightVectorize的调研报告 docs/research-hindsight.md将对方研究中值得借鉴的四项能力转化为五个彼此独立、可分批交付的阶段P1–P5目标版本线为release/2.22.2.x全部为增量改动、不改变默认行为。导读ai-memory 通过研究论文背书的竞品 Hindsight确认了自身以持续维护的 Markdown 页面作为长期记忆单元这一核心押注并据此落地了五项可独立发布的改进——带类型的脱敏标签、页面证据强度基座、类型化因果边检索、standing-answer 简报以及复用已有订阅免 API Key的定位文档。读完本文你将掌握每一项改动的设计动机、数据库/源码级实现位置、为什么被设计为先落数据与解释、排名翻转留待 R2 评测门禁的渐进策略以及每一阶段可验证的验收标准。1. 起点先盘点已经有什么避免重复造轮子Hindsight 调研报告research-hindsight §11列出了六项值得借鉴的能力但在动手前设计文档先做了一件诚实的事对照release/2.2上的现有代码逐项核对哪些其实已经部分或全部实现了。结论是六项中三项已存在只有三项是真正的空白Hindsight 可借鉴项research-hindsight §11当前状态release/2.2本计划填补的缺口双时态 / recall June已交付。entity_page_links窗口V56/V58 页面窗口V62valid_from/valid_toas_ofFTS 检索见 reader.rs 约 1968 行无 — R4 已完成超出本文范围持续重写的心智模型跨会话反思回路基本已交付。experience.rs 中的run_experience_review回顾项目最近的 N 个会话页面并重写 procedure/rule/preference挂接在调度器 tickauto_improve_schedule.rs由experience_pass_due、min_new_sessions控制节奏状态存于 V57P4— standing-answer 语义 会话启动时浮出 信念强度信念强度 / 证据计数合并缺失。页面只有salience反馈V37和 observation 上的importance1..10页面上没有任何 evidence/proof/confidenceconfidence/evidence_json仅存在于 auto-improve 的 proposal 表中P2— 真正的新机制类型化因果边检索数据存在检索却忽略它。Relation{Causes,Fixes,Contradicts}page.rs 约 208 行持久化为links.link_type行ops.rs 约 1052 行lint 读取contradiction_edgesreader.rs 约 6247 行。但graph_neighbors_for_project_explained连接links时没有任何link_type过滤——只有一跳邻居扩展没有fixes/causes遍历contradicts不进排名P3— 即 design-page-ingestion-windows.md §8 的 follow-up类型化脱敏标签[REDACTED:kind]缺失。sanitize.rs 的scrub()把所有命中统一替换为常量[REDACTED]约 229 行模式来自扁平的BUILTIN_PATTERN_STRS约 51 行P1— 小的可读性改进复用已有订阅免 API Key 上船已支持 Copilot 与 Anthropic-OAuth tokenP5— 纯文档/定位改动bank 隔离作为 #708 的先例严格隔离与本项目项目内共享的模型不变量 #16冲突不照搬仅在 #708 授权设计中借鉴边界形态因此整个计划被归纳为一个小的清晰性修复P1、一个真正的新机制P2、一个本已规划好的检索 follow-upP3、一个对既有子系统的扩展P4、以及一份定位文档P5。双时态R4无需任何动作。2. 每个阶段都必须守住的不变量设计文档特别强调以下不变量来自仓库根目录的 AGENTS.md它们约束着每一项设计是后续所有源码改动不可逾越的边界零-LLM 默认路径#13任何阶段都不得让采集、检索或持久计数变得依赖某个 provider。P2 的证据计数必须是纯规则驱动P4 的反思回路保持与experience.rs现状一致的 LLM-opt-in。单写者 actor#2每次新写入都要走单一写者索引在数据事务内提交#3Wiki 写入遵循原子规则经由Wiki::write_page/apply_batch#10。迁移必须备份门禁#9 / #633 顺序任何新列/新表都必须作为V63__*.sqlrefinery 步骤放在迁移前归档之后并同步提升 api_credentials.rs 约 414 行的 pin当前为62。MCP 工具数冻结在 19 个server.rs 约 5198 行测试约 5326 行AGENTS.md 约 504 行。P1–P5 都不需要新增工具——它们只是扩展现有表面memory_query的 explain、memory_status、memory_lint、调度器。若 P2 未来需要专属工具那是另一个独立决策需同步提升计数并更新两处 prompt 表面。Semver全部为增量 →2.2.x minor落在release/2.2上。没有一个是 patchP1 改变的是持久化的脱敏输出其余均新增表面。3. P1 — 类型化脱敏标签[REDACTED:kind]借鉴点Hindsight 的 Memory Defense 把敏感信息脱敏为带类型的标记如[REDACTED:github_token]让后来的读者知道这里曾经是什么类型的密钥而不泄露内容——比匿名掩码对后续阅读更有用。设计要点将BUILTIN_PATTERN_STRS: [str]sanitize.rs 约 51–148 行改为[(str, str)]pattern, label对——例如gh[pousr]_…→github_token、AKIA|ASIA…→aws_key、eyJ[…]→jwt。SanitizerInner.patterns: VecRegex约 156 行改为Vec(Regex, static str)scrub()约 245–261 行用format!([REDACTED:{label}])取代原本的常量。操作者自定义的extra_patternsSanitizeConfig约 200 行默认使用标签custom。从当前源码可以看到该设计已完整落地内置模式表中每个条目都携带语义标签auth_header、env_secret、credential_path等Sanitizer::new在编译内置模式的同时把cfg.extra_patterns中的每个正则绑定到固定标签customsanitize.rs 约 218–232 行scrub()的替换闭包里做 allowlist 检查后输出[REDACTED:{label}]约 245–261 行。测试面覆盖了每个内置标签的kind断言例如contains([REDACTED:github_token])、contains([REDACTED:jwt])、contains([REDACTED:env_secret])以及extra_patterns落到[REDACTED:custom]的用例。向后兼容 / 输出变更说明为什么是 minor 而不是静默 patch脱敏后的字符串是持久化的——它被存进页面与 observation。旧行保留[REDACTED]新写入得到[REDACTED:kind]。两者都不是机密可以接受但这是可见的格式变化因此随 minor 版本发布并在 CHANGELOG 中注明而不是悄悄改。设计文档还特别提醒[REDACTED:jwt]并不包含子串[REDACTED]所以那些断言contains([REDACTED])的旧测试约 368–598 行会失败需改为contains([REDACTED)开括号前缀。成本很小——无迁移单一文件 测试。风险低——信任边界 #6 保持不变仍是从不可信文本到存储的唯一通路且 fail-safe未知/extra模式一律回落到custom标签绝不会泄漏。4. P2 — 页面证据强度 / 信念强度真正的新机制借鉴点Hindsight 的 observation 是证据支撑的信念——引文 proof count——新信息强化、削弱或扩展既有信念而不是静默替换它。ai-memory 当前的 supersede版本链替换并不追踪当前版本背后有多少证据。为什么值得做团队决定不用队列不应该只是一张最新的页面而应该是一张带有 N 次佐证视线的页面此时单次矛盾的视线应当削弱它而不是立刻替换它。信念强度恰好是a排名权威度和bcontradictslint 缺失的输入也是 design-page-ingestion-windows.md §7 中延期 Phase-Bconfidence所指向的基座——而且这里用零-LLM 的方式就能填充它。设计先评估后落地新的 append-only 表page_evidenceV63(page_id, source_kind CHECK(session|observation|feedback|reconsolidation), source_id, created_at)主键唯一于(page_id, source_kind, source_id)。与页面 upsert 在同一事务中写入consolidator 的write_page/apply_batch路径数据来自产生该页面的 sessions/observations。纯规则驱动——不需要 LLM——所以零-LLM 路径也能填充它。保留 source ids而不是只存整数让后来者能看到什么在支撑一条信念也为未来的 recency 加权留了路。读取时派生confidence而不是存储可变的标量避免每次访问都产生热路径写、也避免第二数据源confidence f(evidence_count, distinct_sessions, age_of_newest_evidence, unresolved_contradiction_count)。起点简单且单调支撑会话越多 ⇒ 越高存在未解决的contradicts边来自contradiction_edges⇒ 更低。通过现有PageAuthorityreader.rs 约 202 行喂进排名作为一个有界的因子钳制在现有[0.55, 1.50]区间内——绝不叠新的乘子塔。在SearchExplainreader.rs 约 557 行中报告为confidenceevidence_count与authority并列从而可通过memory_query(explaintrue)检视绝不是黑盒。memory_status也暴露计数。强化 / 削弱 / 扩展语义强化——从新会话重新合并同一路径时追加一条reconsolidation/session证据行计数上升。这已经是 supersede 路径的形状P2 只是记录来源。削弱——未解决的contradicts边落地时降低派生置信度不写库它是读时输入。扩展——不变的 supersession正文增长/变化P2 不改变版本机制。防固化失败模式research-hindsight §5 预警流行但错误的信念可能以数量压过正确的一次修正。设计在f中内置两重缓解recency 加权最新视线权重更高以及supersession 永远优先于计数——人或 agent 的修正替换版本证据计数只影响排名绝不门禁修正是否生效。置信度影响排序但永不阻塞写入。这保住了不变量 #16 的分歧写入是 supersede 而非销毁。当前仓库中的实现证据迁移脚本 V63__page_evidence.sql 完整落地WITHOUT ROWID表、ON DELETE CASCADE证据随页面版本删除/purge 级联、INSERT OR IGNORE幂等语义并明确注释本版本只交付基座与 explain-only 表面confidence → authority的翻转推迟到 R2 评测之后。写入路径在 ops.rs 约 1081 行INSERT OR IGNORE INTO page_evidence ...与页面写入同事务。explain 表面在 reader.rs 约 618–626 行SearchExplain::evidence_count字段明确注释仅在 explained 路径填充本版本对排名 inert绝不喂给fused/authority。测试lib.rs 约 3031 行hybrid_search_explained_reports_evidence_count_without_moving_default_ranking验证计数上报但不改变默认排名约 6778 行evidence_count(conn, page_id)辅助函数及配套单测同一 source 重复引用不重复计数、不同 source 计数累加、不同页面互不干扰。成本中——一个备份门禁迁移V63 pin 提升、一个写路径钩子事务性证据插入、一个读时派生 explain 字段、保留期联动证据行随页面 purge 级联与 links 一致。风险中——以评测门禁R2 harness把关confidence 进 authority 是否真的改善检索还是只是加噪声先交付表 计数 explain 字段对排名 inert权威度因子只在一个数字支撑下才开启。5. P3 — 类型化因果边检索 contradicts进排名借鉴点Hindsight 在图检索策略里遍历 entity/temporal/causal边而不只是邻居扩展。ai-memory 的类型化边causes/fixes/contradicts作为数据早已存在但对检索不可见。设计让图流知道边的类型。graph_neighbors_for_project_explainedreader.rs 约 4165 行当前连接links不带link_type过滤。把边的种类加进遍历在GraphViareader.rs 约 514 行中暴露link_type让 explain 显示邻居为什么浮出来一条fixes边 vs 一条裸references并让类型化边在 RRF 中贡献更强的排名权重——对 bug/决策类查询fixes/causes邻居比偶发的 wikilink 更相关。有界的fixes/causes链遍历。可选地沿fixes多走一跳bug → fix → fix 自己的页面严格限制深度≤2并且与abstract_vectors一样放在[retrieval]opt-in 门禁之后——保证默认扇出有界不变量无无界图遍历。contradicts进排名——即 design-page-ingestion-windows.md §8 明确点名的 follow-up。处于未解决contradicts边一端的页面获得一个权威度上限类似PageAuthority中已有的superseded → 0.65上限使被矛盾但仍是最新的页面排在其挑战者之下直到矛盾解决。这与 P2 的置信度直接组合矛盾同时削弱排名与置信度。当前仓库中的实现证据图流 SQL 已经在邻居 CTE 里选择了l.link_type AS link_type并在结果中把非references边作为edge字段暴露reader.rs 约 4298–4354 行contradiction_edges查询已按link_type contradicts过滤并计算resolvedreader.rs 约 6392 行起。P3 的剩余工作是把link_type从已暴露的数据升级为参与排名的权重 有界链遍历 contradicts 权威度上限且链遍历保持 opt-in 与深度封顶。成本小-中——无迁移边已存在改动局限于图流构造器 PageAuthorityGraphVia/explain。风险低-中——链遍历保持 opt-in 与深度封顶类型化边排名权重先在 R2 harness 上证明有效再设为默认同样的 baseline-before-change 规则。6. P4 — 心智模型agent 启动时读取的 standing-answer 页面借鉴点Hindsight 的顶层是一张已定论知识的 Markdown 页面agent 每次会话从它启动而不是每次重新发现上下文。诚实的范围ai-memory 已有反思回路——run_experience_review跨项目回顾最近 N 个会话页面并重写 procedures/rules/preferences节奏由调度器 tick 中的experience_pass_due/min_new_sessions门控。与 Hindsight 心智模型的两个 delta 是standing-answer 语义。给经验回路一个明确的输出通道一小批持久的、项目级的我们已经定下什么页面PageKind/层级已经存在——rule/decision携带最高的PageAuthority直接复用不发明新层级。该回路维护这些页面而不是创建新的 episodic 页面P2 的证据计数正是settled的可量化信号带多个支撑会话的 rule 是 settled 的一次性的是不是。启动浮出。memory_briefing既有工具无新表面是从定论知识页启动的接缝——让它优先展示高置信度的 standing-answer 页面由 P2 供给让新会话先读到已定论的知识正是 Hindsight用一页定论知识启动而非每次重新发现的做法。实现状态当前仓库中该能力已以 opt-in 的settled_firstbriefing 形式交付默认关闭lib.rs 约 4603–4605 行的测试断言settled_first.settled[0].evidence_count 2而其余为 0验证高证据计数页面排前。成本中但主要是在既有子系统之上的 prompt 选择 briefing 接线——无新调度器、无新子系统且依赖 P2 提供settled信号。风险中——experience 回路保持 LLM-opt-in零-LLM 安装仍获得会话页面 briefing只是没有抽象通道用既有节奏门控 仅当证据变化时重写防止回路每 tick 搅动 standing 页面。7. P5 — 用你已经付费的订阅定位文档借鉴点Hindsight 通过 ChatGPT Plus / Claude Pro / Copilot 订阅宣传免 API-Key 上船。ai-memory 已支持 Copilot 与 Anthropic-OAuth token——这纯粹是docs/positioning改动不是代码把使用你已有的 Claude Pro / Copilot 订阅无需 API Key提升为 docs/install.md 与 provider 配置中的一等公民文案并确认 OAuth/Copilot 路径在install-mcp/配置中是一行式操作。成本微不足道文档。风险无。把它纳入是为了不让研究中的上船洞察丢失。8. 排序与各自独立交付最小优先每个都是独立的 2.2.x PRP1类型化脱敏标签——无依赖、无迁移立即可做。P3类型化边检索 contradicts排名——无迁移即 §8 早已规划好的 follow-up。排名权重先在 R2 上证明再设为默认。P2证据表 计数 explain对排名 inert——V63 迁移先交付计数 explain/status 表面authority 因子置于评测门禁之后。P4standing-answer 通道 briefing 偏置——依赖 P2 的settled信号扩展experience.rs。P5订阅上船文档——随时可做琐碎。R2可复现的 LongMemEval harness见 research-2026-landscape.md R2是默认开启P2 的 authority 因子与 P3 的排名权重的前提——两者都被门禁为表/流先行排名改动必须有数字支撑。这避免了研究报告中标记的 mempalace 陷阱营销数字跑在架构失活之上的问题。9. 明确不借用清单research-hindsight §12LLM 必需式采集——ai-memory 拥有零-LLM 细分市场P2 计数与 P1 是规则驱动的P4 保持 opt-in。不追随 Hindsight 进入 provider 强制写入。Postgres / 企业级基座——单一自包含二进制继续作为 homelab 差异化点。严格 bank 隔离——那是 issue #708按项目授权另行跟踪那里的设计是在项目内共享模型不变量 #16之上再叠一层边界而不是用 Hindsight 式隔离替换共享。#709项目身份是它的前置。Disposition traitsskepticism/literalism/empathy——在没有消融实验证明之前都是隐喻当架构不纳入计划。10. 遗留的开放问题编码前需维护者拍板P1 输出变更——把持久化文本从[REDACTED]迁移到[REDACTED:kind]是否值得它改变存储文本并触碰 #6 信任边界。替代方案保留[REDACTED]把 kind 放在结构化 sidecar——但这会失去正文内可读这个核心卖点。P2 置信度放置——读时派生本计划的推荐无热路径写、page_evidence为唯一真源vs 物化pages.confidence列读更快但是需要保持诚实的可变标量 每次访问的第二次写V62 文档为了对称性选了物化这里读时派生避免了热路径写是相反的权衡值得拍板。P2 粒度——证据放在页面本计划vs 放在类型化边/实体链接更贴近 Hindsight 的按信念 proof count但改动更大页面是排名已在做权威度加权的单位所以本计划从页面起步。P3 默认 vs opt-in——类型化边排名权重经评测证明后是否默认开启还是像abstract_vectors一样保持[retrieval]opt-inP4——在memory_briefing中单独浮出 standing-answer 是否可取还是说在既有 briefing 内按 P2 置信度做偏置就足够、无需可见的新通道11. 每个阶段的验收标准P1每个内置模式断言其kind操作者extra_patterns默认落custom无假阳性测试仍然成立CHANGELOG 的### Added/### Changed注明输出格式变更。P2page_evidence与页面同事务填充测试重新合并时计数上升、纯读不受影响purge 级联清理证据置信度出现在explain/status在 authority 因子被 R2 数字显式启用前排名不变V63 迁移备份门禁 pin 提升 幂等回填测试。P3explain在graph_via中显示边的link_typefixture 查询上类型化边排名高于裸引用contradicts对矛盾页面施加权威度上限用已解决 vs 未解决对照组测试链遍历深度封顶且 opt-in。P4experience 回路维护而非倍增standing-answer 页面memory_briefing优先展示高置信度已定论页面零-LLM 安装仍获得会话页面 briefing。P5docs/install.md 记载免 API-Key 的订阅路径对照既有 Copilot/Anthropic-OAuth 支持验证。全部按 AGENTS.md 跑完整本地门禁合并前跑快速 Linux CI打 2.2.0 tag 前在 release-candidate SHA 上跑完整 macOS/Windows 矩阵。12. 小结一次论文级竞品反哺自身的工程化落地这份设计文档的价值在于它示范了一条可复用的工程路径先研究、再盘点、后分阶段落地并用评测门禁锁住排名行为。Hindsight 研究的结论是论文背书的竞品在架构上收敛到了我们已有的基座——这不是推倒重来的理由而是把四项可借用的想法变成有界、可独立交付阶段的依据。P1–P5 中真正的新机制只有 P2证据强度基座其余都是对既有子系统sanitizer、图检索、experience 回路、文档定位的增量扩展而涉及排名行为的两处P2 的 authority 因子、P3 的类型化边权重都被严格门禁在 R2 评测之后保证数据与解释先行、默认排名不动延续了设计文档一贯的保守推进风格。对读者而言从 docs/design-hindsight-borrowings.md、V63__page_evidence.sql 与 sanitize.rs 三个入口即可完整回溯这一轮借鉴的每一处落点。【免费下载链接】ai-memorySolution for long term memory for agent coding CLIs and to facilitate handoff between different agent vendors项目地址: https://gitcode.com/GitHub_Trending/ai/ai-memory创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考