01 / THE SIGNAL

我们发现了什么

在你的 AI agent 记住用户操作之前,先构建隐私过滤器。一份关于设计 AI agent 隐私过滤器的实用指南,涵盖事件允许列表、PII 脱敏、保留期限、同意检查和审计安全的记忆。

  • 来源:DEV Community(发现于 2026-08-16)
  • 证据等级:D · 发现产品或需求信号,暂未获得可核验的商业证据。
  • 商业模式:待核验
  • 主题:AI Agent
  • 初筛评分:17.3/100 · 收录 1 次
#工作流自动化#待验证#产品发现
02 / SOURCE & EVIDENCE

证据,比故事更重要。

发现产品或需求信号,暂未获得可核验的商业证据。

规则清洗与初筛,未经人工商业核验。原文语境、实际客户和付费情况仍需自行验证。

引用与数字披露

来源类型(原作者自述/第三方测算/媒体转引)需采集端标注,本版尚未落字段。

短句引用
作者
未标注
抓取日期
来源类型
未标注
数字口径
币种
未标注
口径
未标注
披露主体
未标注
披露日期
未标注

中文辅助译文(节选·触顶截断)

AI 智能体开始记住的不仅是聊天内容。它们可以观察点击、键入的文字、应用切换、浏览器上下文、文件、工具调用和工作流历史。这种记忆可以让智能体快速变得有用,但也会把一项实用功能变成一场悄无声息的隐私事件。

如果你正在构建 AI 产品,不要从“我们能捕获多少?”开始,而要从“在仍能帮助用户的前提下,最小的事件流是什么?”开始。本指南展示了一种实用的隐私过滤器,你可以将其部署在原始用户活动与智能体记忆之间。 为什么这很重要

最近的 AI 工具趋势指向同一方向:智能体正从聊天框迁移到操作系统、浏览器、IDE、客服工具、分析仪表板和工作流自动化平台中。智能体越有用,它就越想获取更多上下文。

这就产生了一个新的工程难题。

传统的应用日志记录的是请求和错误。智能体记忆记录的则是意图、上下文和行为。一个原始事件可能包括: · 用户点击了什么 · 他们键入了什么 · 打开了哪条客户记录 · 哪个浏览器页面处于活动状态 · 智能体调用了哪个工具 · 哪个文件或消息被摘要 · 附近出现了哪些密钥或个人详细信息

这不仅仅是可观测性的问题,它是一条隐私边界。

实际的触发原因很简单:电脑操作类智能体和工作流智能体现在需要历史记录来恢复工作、个性化回答并自动化多步任务。但开发者、安全审阅者和采购方正在对 PII、留存期、可审计性、用户同意以及智能体追踪是否会泄露私有业务数据提出更严苛的问题。 常见错误:把记忆当成日志

大多数团队已经拥有日志、追踪、分析事件和支持对话记录。因此,当他们添加智能体记忆时,往往复用同样的模式: · 捕获事件 · 保存到存储 · 建立索引以便检索 · 允许智能体稍后检索它

这样做很容易发布。但它的覆盖面也过宽。

智能体记忆需要一条更严格的路径,因为它可能被用于生成未来的回答或动作。一行普通的日志可能只会被工程师看到,而一条记忆项可能被模型读取,与其他数据组合,并被用于做出决策。

更安全的模式是: 原始事件 → 隐私过滤器 → 用途检查 → 脱敏后的记忆 → 留存策略 → 检索策略

隐私过滤器不是一个提示词,而是用于决定智能体可以记住什么的应用代码。 AI 智能体隐私过滤器应该做什么

一个好的隐私过滤器有五项工作。

工作它回答的问题示例
事件白名单该事件是否应该被捕获?保存“打开了发票页面”,而不是每个鼠标坐标。
敏感数据检测载荷中是否包含 PII、密钥或受监管的数据?检测电子邮件、API 密钥、类卡号、令牌。
用途绑定为什么需要这段记忆?恢复任务、改善支持、审计审批。
留存控制这段记忆可以保留多久?原始追踪 48 小时,脱敏后的任务摘要 30 天。
检索控制稍后谁或什么可以读取它?仅限同一用户、租户、角色和任务类型。

过滤器应在索引、摘要、向量化、分析导出或模型调用之前运行。 第 1 步:对你的事件流进行分类

不要从脱敏开始,而要从事件分类开始。当你必须保留数据时,脱敏才有帮助;分类则帮助你在源头上避免收集数据。

一个简单的事件分类法可能如下所示:

事件类别风险默认存储?备注
导航事件低是,已脱敏页面类型,而非完整 URL(若包含 ID)。
工具调用元数据中是存储工具名称、状态、成本、策略结果。
用户键入文本高否仅在明确需要且脱敏后存储。
屏幕内容高否优先使用结构化的应用状态而非截图。
文件内容高否存储引用和哈希,而非完整内容。
审批决定中是保留审阅者、动作、时间戳和原因。
密钥或凭证严重永不检测到即阻止并告警。

这里是一个简短的 TypeScript 示例:

这看起来很无聊。这正是要点。隐私不应依赖于运行时的巧妙提示词。 第 2 步:在脱敏之前先缩减事件

原始事件通常包含过多上下文。在运行 PII 检测之前,先将其缩减为更小的形态。

不合格的记忆候选项:

更好的记忆候选项:

注意发生的变化: · 没有完整的键入文本 · 没有完整的 DOM · 没有包含记录 ID 的完整 URL · 没有卡号 · 没有个人邮箱 · 保留了足够的上下文以恢复任务

缩减是你能交付的最便宜的隐私胜利。 第 3 步:增加分层 PII 与密钥检测

使用多种检测器。正则表达式不够,但正则仍然有用。

你需要检测: · 电子邮件地址 · 电话号码 · 访问令牌 · API 密钥 · 会话 cookie · 类信用卡模式 · 私钥 · OAuth 授权码 · 个人地址 · 高风险上下文中的客户姓名 · 相关的健康、法律、财务或就业数据

示例过滤器:

在生产环境中,应将其与结构化的 PII 服务、特定领域词典和字段级策略相结合。关键是要将检测结果与原始值分开存储。 第 4 步:将每条记忆绑定到一个用途

没有用途的记忆会成为未来的隐患。在创建记忆时添加一个用途字段。

常见用途: · resumetask · supportdebugging · securityaudit · billingdispute · quality_evaluation · personalization

每个用途应控制留存和检索。

这为你的产品、法务和工程团队提供了一个共享的控制面。

它还能避免一种常见的失败模式:把为调试而收集的数据用作长期个性化记忆。 第 5 步:将原始追踪与智能体记忆分开

原始追踪和智能体记忆不应放在同一个存储桶中。

一种有用的拆分: · 原始事件缓冲区 生命周期短、加密、严格受限,用于即时调试或面向用户的回放。 · 脱敏后的记忆存储 生命周期较长、绑定用途、智能体仅能通过策略检查进行检索。 · 审计账本 仅追加的决策记录:存储了什么、为何存储、哪条策略允许、何时过期。

智能体通常应从脱敏后的记忆存储中检索,而不是从原始缓冲区中检索。

这种结构使删除更简单、审计更轻松。 第 6 步:在捕获和检索时检查同意

同意不是设置页上的一个复选框,它是运行时状态。

在以下时机检查同意: · 事件被捕获时 · 事件被转化为记忆时 · 记忆被检索时 · 记忆被导出时 · 用户撤销访问时 · 租户更改策略时

示例:

如果同意被撤销,应立即停止创建新记忆。已有记忆应根据你的产品策略和法律要求,选择过期、删除或变为不可访问。 第 7 步:让检索策略比存储策略更严格

一段记忆可能可以安全存储,但在不同上下文中检索却是不安全的。

在为智能体检索记忆之前,检查: · 同一租户 · 同一用户或经批准的团队范围 · 同一用途 · 角色权限 · 数据区域 · 留存到期 · 敏感度等级 · 当前任务相关性

这可以避免诸如客服智能体在产品教程中检索到计费上下文,或工作区智能体把私人笔记拉入共享频道之类的尴尬 bug。

检索策略可以很简单:

在团队产品中,将用户相等性检查替换为角色与资源策略。保持默认范围收窄。 第 8 步:记录决策,而非密钥

你仍然需要审计日志。只是不要把原始密钥放进去。

一条好的审计记录包括:

这条记录帮助你回答: · 智能体为什么会记住这个? · 是哪条策略允许的? · 是否检测到 PII? · 何时会过期? · 谁可以检索它?

这远远好于保存整个原始载荷然后祈祷没人细看。 实用实施清单

将此作为你第一个隐私过滤器的构建清单。 捕获控制 · 在埋点之前定义事件类别。 · 默认对高风险事件采取丢弃或仅摘要。 · 除非用户明确要求智能体记住,否则避免存储原始键入文本。 · 优先使用页面类型、资源类型和任务状态,而非完整 URL 或 DOM 文本。 · 让原始缓冲区生命周期短且加密。 脱敏控制 · 在存储前运行 PII 和密钥检测。 · 用类型化的占位符替换敏感值。 · 存储检测命中数量,而非原始匹配项。 · 为你的产品添加特定领域的检测器。 · 对严重密钥采取阻止而非遮盖。 用途与同意控制 · 要求每个记忆对象都必须有用途。 · 将每个用途映射到留存和检索规则。 · 在捕获和检索时检查同意。 · 支持撤销和删除工作流。 · 未经明确许可,不得将调试数据重新用于个性化。 检索控制 · 强制租户隔离。 · 强制用户或角色范围。 · 将请求用途与存储用途进行匹配。 · 在检索前过滤掉已过期的记忆。 · 将敏感记忆排除在共享上下文之外。 审计控制 · 记录带策略版本的隐私决策。 · 保持审计日志脱敏。 · 追踪谁或什么检索了记忆。 · 为用户或管理员构建一个简单的记忆查看页面。 · 在上线前测试删除、导出和过期。 大多数文章止步之处

大多数隐私指南涵盖 PII 脱敏、审计日志或广义的数据治理。智能体记忆还需要再多一层:事件设计。在点击、键入文本、页面上下文、工具调用、桌面操作和模型可读的摘要进入存储之前,先决定如何处理它们。

在保存任何内容之前先问一句: 如果用户检查、导出或在事件复盘时看到这段记忆,它是否仍然合理?

如果答案让你不舒服,那就缩减它。 一个你可以先交付的简单架构

对于小团队,不要过度构建。从以下开始: · 创建一个留存期短的 agentevents 表。 · 创建一个只存储脱敏后摘要的 agentmemories 表。 · 创建一个用于策略决策的 agentmemoryaudit 表。 · 在任何向量化或模型调用之前添加一个隐私过滤服务。 · 添加一个每晚执行的过期作业。 · 添加一个面向用户的“忘记我的智能体记忆”操作。 · 添加针对 PII、密钥、租户隔离和同意撤销的测试。

架构草图:

然后像测试安全功能一样测试它,而不是像测试日志功能一样。 值得加入的测试用例

将以下测试加入 CI: · 一个伪造的 API 密钥永远不会被存入记忆。 · 一个类卡号在存储前被脱敏。 · 已撤销的用户无法创建新的个性化记忆。 · 过期的记忆不会被检索。 · 在同一租户内,用户 A 无法检索用户 B 的记忆。 · 租户 A 无法检索租户 B 的记忆。 · 调试记忆不会被检索用于个性化。 · 原始事件缓冲区按计划过期。 · 审计日志包含检测结果但不包含原始敏感值。 · 共享频道智能体无法访问私有的点对点记忆。

这些测试能比再多一段隐私政策文字捕获到更多真实问题。 最后的思考

智能体记忆之所以强大,是因为它把用户上下文压缩成未来的可用性。同样的压缩也可能掩盖隐私失误——如果你捕获过多、存储过久,或在错误的场景检索。

最安全的路径不是“什么都不记”。那会让智能体变得很弱。最安全的路径是记更少、说明原因、按设计过期,并且仅在当前任务值得时才检索。

在记忆功能变得流行之前,先把隐私过滤器建好。先从狭窄的范围开始,远比日后清理一大堆原始历史记录容易得多。 常见问题 什么是 AI 智能体隐私过滤器?

AI 智能体隐私过滤器是一种应用逻辑,用于决定哪些用户活动事件可以成为智能体记忆。它对事件进行分类,脱敏敏

……(正文超出本站单页篇幅上限,此处截断;完整表述请见下方原文入口。)

译文由上游机器翻译生成,可能有误;判断请以英文原文为准。

英文原文(来源本站未改写)

AI agents are starting to remember more than chats. They can watch clicks, typed text, app switches, browser context, files, tool calls, and workflow history. That memory can make an agent feel useful fast, but it can also turn a helpful feature into a quiet privacy incident.

If you are building an AI product, do not start with “how much can we capture?” Start with “what is the smallest event stream that still helps the user?” This guide shows a practical privacy filter you can place between raw user activity and agent memory. Why this matters now

Recent AI tooling trends point in the same direction: agents are moving from chat boxes into operating systems, browsers, IDEs, customer support tools, analytics dashboards, and workflow automation platforms. The more useful the agent becomes, the more context it wants.

That creates a new engineering problem.

Traditional app logs record requests and errors. Agent memory records intent, context, and behavior. A raw event can include: · What the user clicked · What they typed · Which customer record was open · Which browser page was active · Which tool the agent called · Which file or message was summarized · Which secrets or personal details appeared nearby

This is not just observability. It is a privacy boundary.

The practical trigger is simple: computer-use agents and workflow agents now need history to resume work, personalize answers, and automate multi-step tasks. But developers, security reviewers, and buyers are asking harder questions about PII, retention, auditability, user consent, and whether agent traces can leak private business data. The common mistake: treating memory like logs

Most teams already have logs, traces, analytics events, and support transcripts. So when they add agent memory, they often reuse the same pattern: · Capture the event. · Save it to storage. · Index it for search. · Let the agent retrieve it later.

That is easy to ship. It is also too broad.

Agent memory needs a stricter path because it may be used to generate future answers or actions. A normal log line might be seen by engineers. A memory item might be read by a model, combined with other data, and used to make a decision.

The safer pattern is: Raw event → privacy filter → purpose check → redacted memory → retention policy → retrieval policy

The privacy filter is not a prompt. It is application code that decides what the agent is allowed to remember. What an AI agent privacy filter should do

A good privacy filter has five jobs.

JobQuestion it answersExample
Event allowlistShould this event be captured at all?Save “opened invoice page,” not every mouse coordinate.
Sensitive data detectionDoes the payload contain PII, secrets, or regulated data?Detect emails, API keys, card-like numbers, tokens.
Purpose bindingWhy is this memory needed?Resume task, improve support, audit approval.
Retention controlHow long can this memory live?48 hours for raw traces, 30 days for redacted task summaries.
Retrieval controlWho or what can read it later?Only the same user, tenant, role, and task type.

The filter should run before indexing, summarization, embedding, analytics export, or model calls. Step 1: classify your event stream

Do not start with redaction. Start with event classes. Redaction helps when you must keep data. Classification helps you avoid collecting data in the first place.

A simple event taxonomy might look like this:

Event classRiskStore by default?Notes
Navigation eventLowYes, redactedPage type, not full URL if it contains IDs.
Tool call metadataMediumYesStore tool name, status, cost, policy result.
User typed textHighNoStore only if explicitly needed and redacted.
Screen contentHighNoPrefer structured app state over screenshots.
File contentHighNoStore references and hashes, not full content.
Approval decisionMediumYesKeep reviewer, action, timestamp, and reason.
Secret or credentialCriticalNeverBlock and alert if detected.

Here is a small TypeScript example:

This looks boring. That is the point. Privacy should not depend on a clever prompt at runtime. Step 2: reduce the event before redacting it

A raw event often contains too much context. Reduce it into a smaller shape before running PII detection.

Bad memory candidate:

Better memory candidate:

Notice what changed: · No full typed text · No full DOM · No full URL with record IDs · No card number · No personal email · Enough context to resume the task

Reduction is the cheapest privacy win you can ship. Step 3: add layered PII and secret detection

Use multiple detectors. Regex is not enough, but regex is still useful.

You want to detect: · Email addresses · Phone numbers · Access tokens · API keys · Session cookies · Credit-card-like patterns · Private keys · OAuth codes · Personal addresses · Customer names in risky contexts · Health, legal, financial, or employment data when relevant

Example filter:

For production, combine this with a structured PII service, domain-specific dictionaries, and field-level policies. The key is to store the findings separately from the raw value. Step 4: bind every memory to a purpose

A memory without a purpose becomes a future liability. Add a purpose field when the memory is created.

Common purposes: · resumetask · supportdebugging · securityaudit · billingdispute · quality_evaluation · personalization

Each purpose should control retention and retrieval.

This gives your product, legal, and engineering teams one shared control surface.

It also prevents a common failure mode: using data collected for debugging as long-term personalization memory. Step 5: separate raw traces from agent memory

Raw traces and agent memory should not live in the same bucket.

A useful split: · Raw event buffer Short-lived, encrypted, tightly restricted, used for immediate debugging or user-visible replay. · Redacted memory store Longer-lived, purpose-bound, searchable by the agent only through policy checks. · Audit ledger Append-only records of decisions: what was stored, why, which policy allowed it, and when it expires.

The agent should usually retrieve from the redacted memory store, not the raw buffer.

This structure makes deletion easier and audits less painful. Step 6: check consent at capture and retrieval

Consent is not a checkbox on the settings page. It is runtime state.

Check consent when: · The event is captured · The event is transformed into memory · The memory is retrieved · The memory is exported · The user revokes access · The tenant changes policy

Example:

If consent is revoked, new memory should stop immediately. Existing memory should either expire, be deleted, or become inaccessible depending on your product policy and legal requirements. Step 7: make retrieval policy stricter than storage policy

A memory can be safe to store but unsafe to retrieve in a different context.

Before retrieving memory for an agent, check: · Same tenant · Same user or approved team scope · Same purpose · Role permissions · Data region · Retention expiry · Sensitivity level · Current task relevance

This prevents awkward bugs like a support agent retrieving billing context during a product tutorial, or a workspace agent pulling private notes into a shared channel.

A retrieval policy can be simple:

In team products, replace the user equality check with a role and resource policy. Keep the default narrow. Step 8: log decisions, not secrets

You still need audit logs. Just do not put raw secrets in them.

A good audit record includes:

This record helps you answer: · Why did the agent remember this? · Which policy allowed it? · Was PII detected? · When will it expire? · Who can retrieve it?

That is much better than saving the whole raw payload and hoping nobody looks too closely. Practical implementation checklist

Use this as a build checklist for your first privacy filter.Capture controls · Define event classes before instrumentation. · Default high-risk events to drop or summarize_only. · Avoid storing raw typed text unless the user explicitly asks the agent to remember it. · Prefer page type, resource type, and task state over full URL or DOM text. · Keep raw buffers short-lived and encrypted.Redaction controls · Run PII and secret detection before storage. · Replace sensitive values with typed placeholders. · Store finding counts, not raw matches. · Add domain-specific detectors for your product. · Block critical secrets instead of masking them.

Purpose and consent controls · Require a purpose for every memory object. · Map each purpose to retention and retrieval rules. · Check consent at capture and retrieval. · Support revocation and deletion workflows. · Do not reuse debugging data for personalization without explicit permission.Retrieval controls · Enforce tenant isolation. · Enforce user or role scope. · Match requested purpose to stored purpose. · Filter expired memories before retrieval. · Keep sensitive memories out of shared contexts.

Audit controls · Log privacy decisions with policy version. · Keep audit logs redacted. · Track who or what retrieved memory. · Build a simple memory inspection page for users or admins. · Test deletion, export, and expiry before launch.Where most articles stop short

Most privacy guides cover PII redaction, audit logs, or broad data governance. Agent memory needs one more layer: event design. Decide what to do with clicks, typed text, page context, tool calls, desktop actions, and model-readable summaries before they enter storage.

Ask this before saving anything: Would this memory still feel reasonable if the user inspected it, exported it, or saw it during an incident review?

If the answer feels uncomfortable, reduce it. A simple architecture you can ship first

For a small team, do not overbuild. Start with this: · Create an agentevents table with short retention. · Create an agentmemories table with redacted summaries only. · Create an agentmemoryaudit table for policy decisions. · Add a privacy filter service before any embedding or model call. · Add a nightly expiry job. · Add a user-facing “forget my agent memory” action. · Add tests for PII, secrets, tenant isolation, and consent revocation.

Schema sketch:

Then test it like a security feature, not like a logging feature. Test cases worth adding

Add these to CI: · A fake API key is never stored in memory. · A card-like number is redacted before storage. · A revoked user cannot create new personalization memory. · Expired memory is not retrieved. · User A cannot retrieve User B’s memory in the same tenant. · Tenant A cannot retrieve Tenant B’s memory. · Debug memory is not retrieved for personalization. · Raw event buffer expires on schedule. · Audit logs contain findings but not raw sensitive values. · Shared-channel agents cannot access private one-to-one memory.

These tests will catch more real issues than another paragraph in your privacy policy. Final thoughts

Agent memory is powerful because it compresses user context into future usefulness. That same compression can hide privacy mistakes if you capture too much, store it too long, or retrieve it in the wrong place.

The safest path is not “never remember anything.” That makes agents weak. The safest path is to remember less, explain why, expire it on purpose, and retrieve it only when the current task deserves it.

Build the privacy filter before the memory feature becomes popular. It is much easier to start narrow than to clean up a giant pile of raw history later. FAQ What is an AI agent privacy filter?

An AI agent privacy filter is application logic that decides which user activity events can become agent memory. It classifies events, redacts se

... (truncated at the site's per-page length limit; see the source link below for the full text.)

出处https://dev.to/jackm-singularity/build-a-privacy-filter-before-your-ai-agent-remembers-user-actions-31fe抓取日期 · 采集源 DEV Community

03 / EVIDENCE GAPS

这条还缺什么证据?

下面每条都由本条已有字段推出(等级、理由、商业模式、来源次数、是否演示), 本站不生成推测性结论;通用验证方法放在方法论页。

  • 可核验的收入或付费证据查官网定价页与付费口径;第三方数据源(如 GetLatka)只作旁证,需标注来源与时点。
  • 商业模式未定确认按席位/按用量/授权还是开源托管版收费;开源项目另查 LICENSE 与是否存在付费版。
  • 只有单一来源找一手站点或其他渠道是否重复出现同一产品;社区热帖数量不等于商业进展。

通用验证清单(谁有这个问题/谁愿意付费/一个人能交付哪一小步)见我们的筛选方法。

04 / SIGNAL HISTORY

发现时间线