news 2026/9/13 5:33:52

Hindsight 0.8.2 发布解读:Memory Defense 机密脱敏、可逆记忆策展与观察范围治理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hindsight 0.8.2 发布解读:Memory Defense 机密脱敏、可逆记忆策展与观察范围治理

Hindsight 0.8.2 发布解读:Memory Defense 机密脱敏、可逆记忆策展与观察范围治理

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

Hindsight 0.8.2 是面向长期运行部署的一次大版本更新:新增Memory Defense(按银行粒度对留存内容做密钥与 PII 脱敏/拦截)、支持对单条记忆进行可逆编辑、失效与回滚、通过观察范围(Observation Scopes)枚举与上限控制记忆规模,并为嵌入式部署提供内置的本地 Control CenterWeb 界面;同时新增 Nous Portal、Gemini Batch retain、Gemini embedding-2 等提供商与模型支持,以及多项影响并发与数据存储的修复。阅读本文后,你将掌握如何在 bank 上配置 Memory Defense 策略、理解 45 条内置脱敏规则与 SIEM 联动方式,并了解 0.8.2 中所有新增能力对应的配置项与源码实现位置。

Memory Defense:入库前的密钥与 PII 脱敏层

Agent 在运行过程中不可避免地会接触到 API Key、Token 与个人数据——在没有护栏的情况下,这些内容可能被直接写入长期记忆。Memory Defense正是 0.8.2 引入的开源脱敏层:在内容写入存储之前,扫描并清除其中的敏感数据。

工作方式

在某个 bank 上启用后,Agent 写入的每条记忆都会被一组45 条正则模式扫描,覆盖范围包括:Anthropic、OpenAI、Google 等提供商 API Key、通用密钥、数据库连接串以及常见 PII。每个命中项在内容进入 memory unit 或 document body 之前都会被替换为[REDACTED:type]标记,因此 recall、导出和 reflect 永远看不到原始密钥。

每个规则可选择两种动作:

  • redact— 将每个命中替换为[REDACTED:type]标记,并存储脱敏后的记忆;
  • block— 丢弃包含命中的条目;若 retain 请求中的全部条目都被拦截,调用返回422

Memory Defense按 bank 粒度生效,默认关闭。通过 bank 的 config 字段开启:

{ "memory_defense": { "enabled": true, "rules": [{ "on": "sensitive_data", "action": "redact" }] } }

策略仅影响该 bank 上后续的 retain 调用——已有记忆不会被追溯扫描。关闭脱敏只需将enabled置为false或删除该字段;未设置sensitive_data规则的 bank 与未启用时行为完全一致(扩展返回 ALLOW,内容原样通过)。更完整的策略说明与模式清单见 Memory Defense 指南。

45 条内置模式的源码实现

默认扩展为hindsight-api-slim/hindsight_api/extensions/builtin/memory_defense_regex.py中的MemoryDefenseRegexExtension,其核心扫描逻辑apply_redaction位于 memory_defense.py。模式目录_REDACTION_PATTERNS按类别组织,完整清单如下:

AI / LLM 提供商

标签匹配内容
anthropic_keysk-ant-...
openai_key/openai_project_key/openai_admin_keysk-.../sk-proj-.../sk-admin-...
google_api_keyAIza...
google_oauth_tokenya29.<token>
xai_keyxai-...
groq_keygsk_...
huggingface_tokenhf_...
replicate_tokenr8_...
perplexity_keypplx-...
databricks_tokendapi<hex32>

云厂商aws_access_keyAKIA<16>)、aws_session_tokenASIA<16>)、digitalocean_tokendop_v1_<hex64>),另有aws_secret_key上下文型规则。

源码与 CIgithub_fg_patgithub_tokenghp_<36>)、github_app_tokengithub_user_tokengithub_refreshgithub_oauthgitlab_patnpm_tokenpypi_token

支付stripe_secretsk_live_/sk_test_)、stripe_restrictedrk_...)、square_tokenbraintree_token

通讯与邮件slack_tokenxoxb-/xoxp-/xoxa-/xoxr-)、slack_webhooktwilio_api_keytwilio_account_sidsendgrid_keymailgun_keydiscord_bottelegram_bot

电商shopify_tokenshpat_<hex32>)。

数据库连接串db_url_postgresdb_url_mysqldb_url_mongodb(含mongodb+srv://)。

私钥 / JWT / 通用凭证private_key_pem-----BEGIN ... PRIVATE KEY-----PEM 块)、jwteyJ<header>.eyJ<payload>.<signature>)。

PII(美式默认值)credit_card(13–19 位数字,带分隔符)、ssn_us123-45-6789形态)。

从源码注释可以推断出三个值得注意的实现细节:

  1. 顺序敏感:更具体的模式排在前面,避免宽泛规则(如通用sk-...)先吞掉sk-ant-.../sk-proj-...的子串;
  2. CJK 边界处理:Pythonre\b/\w采用 Unicode 语义,会把 CJK 字符视为单词字符,导致中文上下文里紧贴汉字的密钥无法命中。实现改用_ASCII_TOKEN_START/_ASCII_TOKEN_END零宽断言锚定 ASCII token 边界,测试用例 用测试{secret}等模板验证了中英混排场景;
  3. 指纹预览_fingerprint_value对命中值做长度感知的指纹化(>15 位保留前 4 + 后 4 位,6–15 位保留前 2 + 后 2 位,<6 位整体掩码),原始值绝不会出现在命中记录里,见 memory_defense.py。

SIEM 联动与审计

每次 redact 或 block 决策都可以通知安全工具链:当 bank 上存在订阅了memory_defense.triggered事件的 webhook 时,Hindsight 会触发事件,报告动作、文档 ID 与命中的模式标签。0.8.2 中这些负载新增了SIEM 友好的富化字段(每命中一条指纹化预览,如ghp_...AAAA),无需额外胶水即可直接路由进 SIEM 或 Slack,相关契约见 webhooks 文档 与端到端测试 test_memory_defense.py。同一决策也会在启用审计时写入memory_defense审计条目(含动作与匹配的模式标签)。

可逆记忆策展:编辑、失效与回滚

0.8.2 让记忆不再是"只写"的。你现在可以纠正 Agent 学到的东西、撤销错误:

  • **编辑(Edit)**一条记忆的文本、日期、事实类型或上下文;
  • 失效(Invalidate)一条记忆,使其不再出现在 recall 结果中,但不删除
  • **回滚(Revert)**一次编辑或失效,恢复先前状态。

被失效的记忆被移到一边而不是清除,因此 recall 热路径保持干净,同时任何内容都不会永久丢失;被编辑过的记忆带有标记,便于一眼看出哪些内容被改动过。从源码结构看,对应的写入实现位于 memories/pg/writes.py 与 memories/postgres.py。这让长期维护一个 bank 的准确性成为可逆操作——修正错误事实或淘汰过时事实不再具有破坏性。

观察范围(Observation Scopes):按上下文治理记忆规模

随着 bank 增长,观察(Observation,由 consolidation 引擎从多条记忆去重、沉淀出的信念)会跨越大量上下文累积。0.8.2 提供了直接的控制手段:

  • 按范围枚举与过滤观察,查看不同上下文各自学到了什么;
  • Control Plane 中可视化范围;
  • 设置每范围上限,限制一个 scope 保留的观察数量——上限为0可完全停止该 scope 新增观察

这是对"单一全局设置"的替代:你可以精确控制每个上下文保留多少记忆。从 observations.mdx 可以看到,observation_scopes参数同时出现在 retain 与 consolidate 接口上——例如用observation_scopes: "shared"将观察归并到全局无标签信念,而把会话标签保留在源事实层供 recall 过滤。0.8.2 还包含专门的迁移脚本backfill_observation_scopes(见 alembic/versions),用于为既有观察回填范围字段。

本地 Control Center:嵌入式部署的配套 Web 应用

嵌入式部署(见 hindsight-embed)现在自带一个本地Control CenterWeb 应用,为单节点 / 本地场景提供管理、检查嵌入式 Hindsight 实例的 UI,无需单独部署完整的控制平面。

更多提供商与模型

0.8.2 扩大了提供商与模型覆盖面:

  • 原生 Nous Portal 提供商,内置 OAuth 认证,不再依赖外部 CLI;对应HINDSIGHT_API_LLM_PROVIDER=nous(见 configuration.md)。
  • Gemini Batch API 用于 retain,事实抽取可走 Gemini 的批量路径。
  • Gemini embedding-2 模型家族支持,按输入产生 embedding。
  • 按 bank 的成本归属:设置HINDSIGHT_API_LLM_SEND_BANK_AS_USER=true后,出站 OpenAI 兼容的 LLM 与 embedding 调用会在user字段携带 bank ID,使 OpenRouter、LiteLLM、Helicone 等成本网关可以按 bank 归因供应商开销,默认关闭。
  • 按 bank 的 LLM 连通性探测,在依赖某个 bank 的提供商配置前先验证其可用性。
  • Amazon Bedrock service-tier 选择,用于调优 Bedrock 请求处理方式。

运维与数据完整性修复:自管理用户应当升级

0.8.2 包含多项让自管理与长期运行部署更稳健的修复:

  • 并发下的 Torch dtype:并发模型初始化可能改变全局 Torch 默认 dtype,现已统一归位为float32,保持行为一致;
  • recall/reflect 取消:客户端断开后,被放弃的 recall 与 reflect 操作会被可靠取消,不再白白运行到底;
  • PostgreSQL 上更宽的历史 ID:历史bank_id列加宽为TEXT,避免长 bank 标识符引发失败;
  • reflect 合成保真度:最终 reflect 输出更稳定地遵循指令与语言规则;
  • JSONL retain 分块:JSONL 文件按行边界分块,摄入时记录不会被从中间切开;
  • Control Plane 图视图:bank 图视图不再重复加载数据,减少冗余请求;
  • 滚动部署迁移:已应用的迁移在滚动部署中会被更可靠地跳过,包括解析错误被包装在CommandError中的情况;
  • Webhook 负载:事件负载补齐了此前缺失的字段;
  • CLIget-memory:CLI 正确解析get-memory响应。

其他亮点

  • 星座海报导出:Control Plane 现在可以将一个 bank 的记忆星座导出为可分享的 SVG 海报。

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

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

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

DeepSeek导出Word的三种技术路径与选型决策

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

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

PythonRobotics 如何用 Dubins 路径规划生成带航向约束的最短路径

PythonRobotics 如何用 Dubins 路径规划生成带航向约束的最短路径 【免费下载链接】PythonRobotics Python sample codes and textbook for robotics algorithms. 项目地址: https://gitcode.com/GitHub_Trending/py/PythonRobotics 如果你的移动平台&#xff08;小车、…

作者头像 李华
网站建设 2026/9/13 5:25:56

Stable Diffusion WebUI Forge 教程:3步搭建本地AI图像生成环境

Stable Diffusion WebUI Forge 教程&#xff1a;3步搭建本地AI图像生成环境 【免费下载链接】stable-diffusion-webui-forge 项目地址: https://gitcode.com/GitHub_Trending/st/stable-diffusion-webui-forge Stable Diffusion WebUI Forge 是一个基于 Stable Diffusi…

作者头像 李华
网站建设 2026/9/13 5:24:40

在线作业提交批改系统:状态机、权限模型与自动评测实战

简介&#xff1a;一套基于Java与Vue的在线作业提交批改系统完整项目源码&#xff0c;面向毕业设计、课程设计及Java Web学习者。系统按管理员、教师、学生三个角色设计&#xff0c;包含用户注册登录、课程管理、作业发布与设定期限、学生在线提交Word作业、教师下载批改并录入评…

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

双容水箱液位控制系统:PLC与PID工业自动化实践

1. 项目概述&#xff1a;双容水箱液位控制系统的工业自动化实现在工业过程控制领域&#xff0c;液位控制是最基础也是最经典的控制对象之一。我最近完成了一个双容水箱液位控制系统的完整开发&#xff0c;从底层的PLC梯形图编程到上位机组态监控&#xff0c;实现了完整的自动化…

作者头像 李华