生产 Agent 接私有数据前,先补 6 个数据接入边界

生产 Agent 接私有数据前,先补 6 个数据接入边界

这两周国内关于 Agent、MCP、Codex、Claude Code 的讨论还在升温,但一旦系统准备接入企业内部知识库、CRM、工单、支付、设备台账或运行日志,问题就不再只是“检索效果够不够好”。

真正决定这类 Agent 能不能进生产的,往往是:

它拿到私有数据之后,边界是不是先立住了。

很多团队的第一版方案都会这样起步:

  • 把文档接进向量库;
  • 把业务表接成查询工具;
  • 让模型根据检索结果给建议或直接触发下一步动作。

demo 很容易跑起来,但一旦进入真实业务,风险会很快暴露:

  • 检索到的内容不是当前版本;
  • 不同角色看到了不该看的字段;
  • 模型给出结论,却说不清依据来自哪一段证据;
  • 脱敏没做好,输出把敏感字段带了出去;
  • 缓存或 fallback 逻辑把旧数据当成新数据继续用了。

所以我更建议把“接私有数据”当成一条受控数据链路来设计,而不是一个简单的 RAG 接口集成。

下面这 6 个边界,是我认为 production AI agent systems 在接真实私有数据前至少该补齐的。

1. 先把数据源分级,不要默认都能接

很多系统一开始把“企业内部数据”当成一个统一概念处理,这是最容易出问题的地方。

真实环境里至少应该先分清:

  1. 公共知识和低敏文档;
  2. 内部运营文档和项目资料;
  3. 客户数据、交易数据、设备控制数据;
  4. 合规、财务、权限、审计这类高敏数据。

这几类数据不该走同一套默认检索和暴露规则。

如果连分级都没做,后面所谓权限控制、脱敏、日志留痕,基本都只能停留在口头上。

2. 没有版本和时效标记的数据,不要直接给模型用

很多 Agent 的问题,不是“查不到”,而是“查到了旧数据还继续用”。

生产里至少要让每条关键证据带上:

  • 数据源名称;
  • 更新时间;
  • 版本号或快照标记;
  • 是否来自缓存;
  • 是否已过可用窗口。

例如:

  • 工单状态是 5 分钟前还是 2 小时前同步的;
  • 设备配置是当前版本还是上一次发布版本;
  • 制度文档是正式生效版,还是历史草稿。

如果这些字段没有结构化暴露给系统,模型即使回答得像对,也只是把过期信息包装得更像正确答案。

3. 检索权限要按角色、对象和字段收紧

“能查到内部数据”不代表“所有内部数据都能给当前任务看”。

更稳妥的默认设计通常要同时限制三层:

  • 角色能看什么;
  • 当前任务能查哪个对象范围;
  • 返回结果里哪些字段可以被模型消费或输出。

例如售后 Agent 可以查工单进度,但不一定能看合同折扣;设备运维 Agent 可以看运行状态,但不一定能读取全部客户标识字段。

如果权限只做到“工具能不能调”,没有细到对象和字段,越权通常只是时间问题。

4. 结论必须能回指到具体证据片段

很多团队做了 citations,但只是把“来源列表”挂在答案后面,这还不够。

真正可审查的证据链,至少应该回答:

  • 这次结论引用了哪几个数据源;
  • 关键判断对应哪一段文本、哪条记录、哪个字段;
  • 如果有多条候选证据,为什么选了这一条;
  • 证据之间有没有冲突。

也就是说,系统不仅要有 citations,还要有可复盘的证据选择过程

否则排障时看到的只是“答案像是有依据”,但没人能判断依据到底够不够支撑这次动作。

5. 敏感字段要在检索层和输出层双重收口

很多泄露问题不是模型主动“越狱”,而是数据管道默认把不该暴露的字段一起送进来了。

比较常见的风险字段包括:

  • 身份证号、手机号、邮箱、住址;
  • 交易金额、账户标识、风险标签;
  • API key、设备密钥、内网地址、凭证片段;
  • 合同价格、内部审批意见、审计备注。

比较稳妥的做法通常不是只在最后一步做字符串替换,而是:

  1. 检索前先按字段级策略裁剪;
  2. 检索后再做输出策略检查;
  3. 命中高敏字段时直接转人工或改成摘要模式。

这样系统即使检索到了相关记录,也不会默认把整段敏感上下文直接暴露给模型和最终用户。

6. 没有证据或证据冲突时,默认停住,不要让 fallback 硬补

很多 demo 为了“看起来总能回答”,会在检索失败时自动走:

  • 更宽松的检索;
  • 更旧的缓存;
  • 泛化知识回答;
  • 另一套低质量备用数据源。

这在生产里往往很危险。

因为当系统已经在用私有数据回答时,用户默认会把它当成“企业真实信息”,而不是“模型的合理猜测”。

所以更稳妥的默认规则通常是:

  • 没命中足够证据就明确说查不到;
  • 证据冲突就提示需要人工确认;
  • 高风险流程里禁止用通用知识补真实业务结论;
  • fallback 命中后不允许直接触发写操作。

这不是降低可用性,而是承认“无证据时停住”比“猜一个继续跑”更像生产系统。

为什么数据接入边界比“再堆一个更强模型”更优先

因为只要开始接私有数据,最贵的问题通常不是回答普通了一点,而是:

  • 旧数据被当成新依据;
  • 不该看的字段被看到了;
  • 不够硬的证据支撑了真实动作;
  • 敏感数据通过答案或日志泄露出去;
  • 事后无法判断这次结论到底是基于哪条记录做出的。

这些都属于数据接入控制面,不属于单纯的模型效果问题。

一个够用的落地顺序

如果团队最近准备把 Agent 接进真实私有数据,我更建议按这个顺序补:

  1. 先做数据源分级和敏感度标记;
  2. 再补版本、时效和快照字段;
  3. 再把角色、对象、字段三级权限收紧;
  4. 再把 citations 做到字段或片段可回指;
  5. 再把脱敏和输出策略做成默认规则;
  6. 最后才优化召回率、模型成本和回答流畅度。

这样做的好处是,团队讨论的不再只是“Agent 能不能查到更多东西”,而是“它在什么条件下,才有资格使用这些私有数据给出结论甚至推进动作”。

如果最近在做 AI Agent Production-Readiness Review,这类项通常也会被优先检查:私有数据接入有没有分级、citations 和 audit logs 能不能落到具体证据、tool-calling 和输出策略有没有把越权与泄露风险真正拦下来。重点不是把能力讲得更大,而是让系统在真实客户和业务数据面前更可控、更可追溯。