边缘隐私过滤
边缘隐私过滤
学习目标
读完本章后,你将能够:
- 理解边缘隐私过滤的核心哲学
- 实现基于标签的内容排除协议
- 设计在数据管道入口点的过滤层
- 评估事后删除与边缘过滤的区别
核心概念
为什么需要边缘过滤
当 Agent 系统自动记录工具使用和对话内容时,不可避免地会捕获敏感信息:API 密钥、密码、个人身份信息、商业机密等。处理这些敏感数据有两种策略:
- 事后删除:先存储全部数据,然后根据策略定期清理
- 边缘过滤:在数据进入存储层之前,在管道入口处过滤
事后删除的风险在于:数据已经在数据库中存储过,在此期间可能被查询、备份或泄露。边缘过滤的核心哲学是:最安全的删除是永远不存储。
标签协议设计
用户通过在消息中插入特定标签来标记敏感内容:
<private>这是我的 API 密钥: sk-xxx-yyy-zzz</private>协议要求:
| 要素 | 说明 |
|---|---|
| 标签名称 | <private> / </private> |
| 位置 | 任意文本中,可嵌套在 Markdown 内 |
| 作用范围 | 标签之间的所有内容 |
| 处理时机 | Hook 层(最早的数据入口点) |
处理管线
关键设计决策:
- 在 Hook 层剥离:Hook 是 Claude Code 数据管道的最早入口,在此剥离确保敏感内容永远不会到达 Worker 或数据库
- 同步处理:剥离操作是同步的、确定性的,不依赖 AI 模型判断
- 不可恢复:剥离后的内容不会以任何形式存储,确保真正的隐私
与事后删除的对比
| 维度 | 边缘过滤 | 事后删除 |
|---|---|---|
| 数据暴露窗口 | 零 | 从写入到删除的时间段 |
| 实现复杂度 | 低(字符串替换) | 高(需要调度和清理逻辑) |
| 审计能力 | 无法审计(数据不存在) | 可查看删除日志 |
| 用户体验 | 需要手动标记 | 自动处理 |
| 可靠性 | 高(确定性) | 依赖调度器正常运行 |
设计权衡
优势
- 零数据暴露:敏感内容从未进入存储
- 实现简单:字符串匹配和替换,无复杂逻辑
- 用户可控:用户自行决定哪些内容敏感
代价
- 用户负担:需要手动标记敏感内容
- 无法自动识别:系统不能自动判断哪些内容敏感
- 标签遗漏风险:忘记标记的内容会被正常存储
替代方案
| 方案 | 优势 | 劣势 |
|---|---|---|
| 自动敏感信息检测 | 无需用户参与 | 可能误判,依赖 NLP 模型 |
| 边缘标签过滤(本方案) | 简单、可靠、零暴露 | 需要用户手动标记 |
| 端到端加密 | 存储内容加密 | 搜索和检索困难 |