这道题其实在问一件事:[[Agent]] 系统怎么在开放交互和严格安全之间画一条信任边界。说白了,你不能因为 Agent 能调工具、能理解自然语言,就把所有权限都交给它,得分级、得审计、得有熔断机制。
我先讲算法层。核心是让 Agent 自己知道什么能碰、什么不能碰。敏感信息识别我会做三层检测:先上正则,身份证手机号这种硬规则,召回率高;再过一个 [[NER]] 模型,覆盖人名地址这些;最后让 LLM 自己判断,比如问一句「这个上下文里有没有隐私」。三层串联,漏报率能压到很低。脱敏这里有个场景:比如客服退款场景,用户说「我的订单号是 123456」,Agent 返回时订单号必须打码,但管理员查日志时又要能看到。所以脱敏策略得动态化,根据用户角色标签来,普通用户打码,管理员可见。
再一个就是意图风险分级。用户请求进来先过一个风险分类器,分成 L1 常规、L2 敏感、L3 高危。L1 直接放行,L2 触发二次确认,L3 直接转人工。举个例子,用户问「我的退款到哪了」是 L1,但「帮我查一下张三的退款」就可能是 L2,因为涉及他人隐私。高危比如「把这条数据删掉」,必须人工确认。
架构层我重点讲权限和审计。权限我设计成三级:用户级、工具级、数据级。用户级用 OAuth2 加 RBAC,谁有什么角色能调什么工具;工具级是每个 API 注册时打标签,运行时动态校验,比如「查天气」的工具只能调天气 API,不能碰支付;数据级用行级权限,查询时自动注入过滤条件,比如客服只能看自己负责的工单数据。
审计这块我强调全链路 TraceID,从用户请求到 LLM 推理到工具调用到外部 API,一个 ID 串到底。日志要结构化,记录谁、什么时候、调了什么、传了什么参数、返回了什么摘要。异常熔断也得有:同一个用户 1 分钟内敏感接口调用超过阈值,比如 5 次,自动降权或冻结。
这里有个坑:Agent 本身不能持有长期凭证,每次调用临时申请 Token,用完即弃。这是零信任原则。工具 API 设计也要遵循最小权限,能查摘要就不给详情。比如订单查询接口,普通 Agent 只能返回「订单状态:已发货」,不能返回用户手机号。
最后,高危操作必须人机协同。转账、删数据这类,Agent 只做到「预提交」状态,生成一个审批单,人工确认后才执行。常见失败场景是权限配得太粗,比如把所有工具都绑到一个角色上,那就等于没控制。所以上线前我会特别关注权限矩阵的交叉验证,确保每个角色只拿到它该拿的。
不过审计日志本身也有隐私合规问题,比如日志里如果记录了用户的完整对话,那这些日志的存储和访问控制本身就成了新的安全风险点,这块怎么平衡审计需求和数据隐私,我觉得值得细想。
所以整体上,我更倾向把安全看成一条动态边界,而不是静态规则。算法层和架构层互相配合,再加上人机协同,才能把风险控制在可接受范围。