news 2026/9/2 23:26:45

ai-memory采集排除ignore_paths:别让敏感文件进入你的记忆库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ai-memory采集排除ignore_paths:别让敏感文件进入你的记忆库

ai-memory采集排除ignore_paths:别让敏感文件进入你的记忆库

【免费下载链接】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-memory 是为编码 Agent CLI 提供的长期记忆系统,会自动采集你与 Agent 的会话并沉淀为可检索的记忆页。但密钥、私人笔记这类敏感文件,真的不该被存进记忆库。本文介绍如何用[capture] ignore_paths配置采集排除规则,在事件离开本机之前就把敏感文件挡在 ai-memory 记忆库之外。

为什么需要 ai-memory 采集排除

ai-memory 的生命周期钩子(lifecycle hooks)会捕获 Agent 的文件读写事件,编译成会话记忆,最终落到 Wiki 页面里——就像下面这个 Web 界面中展示的"项目记忆库":

这套机制的好处是"零配置、自动学习",但副作用也很直接:Agent 每读一个文件,其路径和内容摘录都可能被记录。如果你在工作目录里同时放着.env、个人笔记目录或客户资料,它们就会被一并采集。ai-memory 提供的[capture] ignore_paths就是为了解决这个问题——一条"采集排除"规则,让敏感文件根本不进入记忆库。

💡 核心结论:排除发生在客户端本地,命中规则的事件在入队、发送、落库之前就被丢弃,敏感内容不会到达服务器,也不会进入全文检索、会话页或交接(handoff)流程。

三步配置 ignore_paths 排除敏感路径

第 1 步:在仓库根目录创建标记文件

在项目根目录(即 Agent 的工作目录或其上级目录)创建.ai-memory.toml,这是 ai-memory 的仓库级配置文件。

第 2 步:写入 [capture] 排除规则

在标记文件中加入[capture]段和ignore_paths列表:

[capture] ignore_paths = ["private/**", "~/.env", "secrets/*.pem"]

规则含义:

  • 相对路径(如private/**)以标记文件所在目录为根
  • ~/前缀会自动展开为用户主目录,比如~/personal-notes/**可以排除家目录里的私人笔记
  • **表示目录及其全部子路径*?用于普通通配

第 3 步:重新安装钩子使规则生效

排除策略由原生ai-memory hook命令在本地强制执行。如果你用的是旧版.sh/.ps1脚本钩子,需要重新安装钩子(或重新生成 OpenCode / OMP / Pi / OpenClaw 插件)才能启用。本地安装默认写入原生钩子,升级后刷新一次即可。

ignore_paths 匹配规则与边界限制

为了避免误伤,ai-memory 对排除规则做了严格的语法约束(见 docs/marker-file.md 的"Capture exclusions"一节):

项目规则
匹配方式匹配整条规范化路径,不是子串匹配
通配符仅支持*?**,不支持{}[]!等扩展语法
规模上限最多 128 条模式、单条最长 1024 字符
大小写POSIX 下区分大小写;Windows 盘符/UNC 路径不区分 ASCII 大小写
失效策略未知键、非法通配符或超过 64 KiB 的文件会整体使策略失效,而不是部分生效

几个容易踩的坑:

  1. 只有最近的标记文件生效——标记文件之间不合并。如果子目录有更近的.ai-memory.toml,它的[capture]才是权威配置。
  2. 不写[capture]段或ignore_paths = []时,行为与未配置完全一致(默认全量采集)。
  3. 斜杠建议统一使用正斜杠/,跨平台都适用。

命中排除后会发生什么

理解"丢弃"的力度很重要,这直接决定规则是否可信:

  • 文件类工具事件(读、写、编辑等):只要任一候选路径命中规则,整个事件在本地直接丢弃——不进本地队列、不经过网络、不进服务器存储,也不会出现在日志里。
  • 搜索/列目录类工具:策略激活时会被保守地一并丢弃。
  • 路径缺失或无法解析的事件:降级为"仅元数据"形态,只保留有限的工具/路由元数据,绝不包含路径、参数、输出或报错内容。
  • 它不是完整的 DLP:Shell 命令、自由文本补丁、提示词正文、助手回复都不做路径归属解析;也不解析符号链接和 Windows 8.3 短名。请为每个可见别名显式添加一条规则。

这套"本地优先丢弃"的边界设计可以在 crates/ai-memory-hooks/src/capture_policy.rs 中找到实现,它也是 crates/ai-memory-hooks/ 钩子 crate 的核心安全逻辑之一。

用 --check-capture 本地验证采集决策

配置完之后,不必等一次真实的会话来验证。ai-memory hook --check-capture会读取一份 JSON 事件载荷,只打印有界的决策元数据(策略状态、处置结果、路径数量等),不做任何入队、网络或交接操作:

printf '%s\n' '{"session_id":"demo","cwd":"/example/workspace","tool_name":"Edit","tool_input":{"path":"secrets/key.pem"}}' \ | ai-memory hook --event post-tool-use --agent claude-code \ --server-url http://127.0.0.1:49374 --check-capture

如果命中排除,输出会显示事件被丢弃(drop);未命中则显示保留(keep)。整个过程不会泄露路径或载荷内容,可以安全地反复调试规则。

进阶:allowlist 模式,让"未标记即不采集"

默认情况下,没有.ai-memory.toml的仓库也会被采集——忘记放标记文件就等于"泄漏"。ai-memory 提供了反过来的失败模式:

ai-memory install-hooks --apply --capture-mode allowlist

allowlist 模式下,.ai-memory.toml的存在本身就是"启用采集"的声明:没有标记文件的仓库不会发出任何生命周期事件。这适合个人开发机上"工作目录才需要记忆,其他一切保持安静"的场景。

结合项目首页可以直观看到各 workspace/project 的记忆页面分布,确认采集范围符合预期:

常见问题(FAQ)

Q:ignore_paths 会影响已有的记忆页面吗?不会。它只拦截新采集的事件,属于"入口闸门"。历史已入库的内容需要另行处理(如purge-project等生命周期命令)。

Q:多条规则冲突或写错了怎么办?任何一条非法模式都会让整个策略进入 Invalid 状态而不是部分生效,此时文件类事件降级为"仅元数据"——宁可少采、也不误采。用--check-capture可以确认策略是否处于 Active。

Q:Docker 部署 / 远程脚本钩子支持吗?旧版.sh/.ps1脚本和 Docker 纯远程脚本包强制执行该策略;请使用install-hooks --apply写入的原生钩子或重新生成的 TypeScript 集成。

Q:它能把密钥从提示词里也过滤掉吗?不能。忽略路径是词法层面的采集边界,只处理可证明路径归属的文件工具事件,不是全文内容过滤器。不要把希望寄托于它拦截所有敏感内容。

小结

需求做法
排除仓库内敏感目录ignore_paths = ["secrets/**", ".env"]
排除家目录个人笔记ignore_paths = ["~/personal-notes/**"]
未标记仓库一律不采集install-hooks --capture-mode allowlist
本地验证规则效果ai-memory hook --check-capture

一句话记住:敏感文件不进记忆库,最好的时机是在它离开你的电脑之前。用[capture] ignore_paths配一条规则、重新安装钩子、跑一次--check-capture,三分钟内就能让 ai-memory 的采集排除生效。更多标记文件字段(workspace、project、briefing 等)参考 docs/marker-file.md,日常使用场景见 docs/usage.md。

【免费下载链接】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),仅供参考

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

安卓PS5模拟器SharpEmu深度解析:从架构原理到实测排查指南

看到“安卓首款 PS5 模拟器 SharpEmu 手机版测试”这个标题时,我的第一反应不是兴奋,而是先冷静问两个问题:它到底是真正意义上的系统模拟器,还是借 PS5 名号的实验项目?即便它真的能启动,摆在安卓设备面前…

作者头像 李华
网站建设 2026/9/2 23:18:56

电流镜设计全攻略:从原理到版图匹配的工程实践

在模拟集成电路设计里,几乎每一个模块都离不开一个可能不起眼却极其关键的电路——电流镜。带隙基准的偏置电流、差分放大器的尾电流源、有源负载、数模转换器里的电流舵,这些场景本质上都依赖同一种能力:把一路基准电流稳定地“复制”到另一…

作者头像 李华
网站建设 2026/9/2 23:18:39

电流镜设计实战:从基础结构到共源共栅与版图匹配

做模拟IC设计的人都知道,电流镜是后端到前端都绕不开的基础单元。它解决的本质问题很直接:把一路已经校准好的参考电流,按照你期望的比例复制到其他支路,让整个芯片的偏置、放大、数模转换都建立在同一个电流基准上。听起来只是“…

作者头像 李华
网站建设 2026/9/2 23:18:13

Sunshine 快速上手:10 分钟免费装出一台 PC 游戏串流服务器

Sunshine 快速上手:10 分钟免费装出一台 PC 游戏串流服务器 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 周五晚上窝在沙发里,游戏却只能跑在那台 13 寸笔…

作者头像 李华
网站建设 2026/9/2 23:12:02

R语言数据分析案例48-辽宁省产业情况分析和预测

一、研究背景在全球经济一体化进程不断加速的背景下,中国经济正处于结构转型和升级的关键时期。辽宁省作为中国东北地区的经济核心,其产业结构的演变具有典型的代表性和研究价值。辽宁省曾以雄厚的工业基础,特别是重工业,在国民经…

作者头像 李华
网站建设 2026/9/2 23:10:22

模拟IC设计:短沟道效应下为何要提高栅极电容?

前阵子和一个准备模拟 IC 岗位的朋友讨论面试题,他卡在一个问题上:“短沟道效应下,为什么要提高栅极电容?”他当然知道阈值电压滚降、DIBL、亚阈值漏电这些术语,但面试官继续追问“这些现象和加大栅极电容之间的因果链…

作者头像 李华