与 AI 一起工作 | 4.当 AI 可以修改文件和发送消息,权限应该怎样给?
当 AI 只能在对话框里生成文字时最常见的风险是答案不准确。即使它写错了一段代码或误解了一份材料人仍然可以在复制、粘贴和执行之前停下来检查。但当 AI 能够读取本地文件、修改代码、查询数据库、创建日程和发送消息后情况发生了变化。它不再只是给出建议而是可能直接改变现实状态。这时真正的问题不再是“要不要给 AI 权限”而是它可以访问什么、执行什么、做到什么范围、持续多长时间以及哪些动作必须再次经过人的确认。权限不是一个总开关。一个可靠的 Agent 不需要随时拥有所有能力而应当只在完成当前任务所必需的范围内获得权限。先把权限拆成五个问题讨论权限时人们很容易只关注“允许”与“拒绝”。但同一个“允许读取文件”可以意味着读取一个指定文档也可以意味着扫描整个主目录同一个“允许发送消息”可以意味着生成一份草稿也可以意味着直接向所有联系人群发。至少需要把权限拆成下面五个维度维度需要回答的问题例子对象AI 可以接触什么指定文件、某个数据库、一个聊天群动作AI 可以做什么读取、修改、删除、导出、发送范围一次可以影响多少单个文件、十条记录、整个目录时效权限持续多久当前步骤、当前任务、长期有效去向数据和结果可以流向哪里仅本地、内部系统、外部联系人这五个问题共同决定了权限的真实含义。只写“允许访问数据库”几乎没有可执行价值因为它没有说明可以访问哪些表、能否写入、能返回多少数据也没有说明结果是否可以被发送到外部服务。动作越接近现实确认点越应该靠近执行不同动作产生的影响并不相同。读取一份公开文档、修改一个可以恢复的本地文件、批量删除记录和向客户发送邮件不能使用同一种授权方式。生成建议限定范围读取可恢复的本地修改批量或不可逆操作发送、发布或改变外部状态从左向右影响逐步扩大。权限设计也应随之收紧生成建议通常不改变外部状态可以直接执行。限定范围读取需要明确数据边界避免顺带扫描无关文件和敏感信息。可恢复的本地修改应保留 Diff、版本记录或其他恢复路径。批量或不可逆操作应先试运行展示将受影响的对象再等待确认。发送、发布或改变外部状态应在执行前核对接收方、正文、附件和关键参数。这里的关键不是每一步都弹出确认框而是把确认放在真正改变风险的边界上。频繁、无差别的确认只会让人机械点击太晚的确认则只是在通知人一件已经发生的事。权限应该形成一个闭环一次授权不应只包含“允许执行”这个瞬间。可靠的流程需要在执行前展示真实动作在执行后回读结果并在任务结束后收回临时权限。否是生成动作方案预览对象、动作、范围与去向人工授权缩小范围或修改方案在限定权限内执行回读结果并保留审计记录任务结束撤销临时权限这个闭环把权限从静态配置变成了任务过程的一部分需要什么才申请什么批准什么才执行什么执行完成后还能确认实际发生了什么。读取文件给目录不要给整台机器假设我们让 AI 整理一份项目文档。完成任务可能只需要读取项目目录中的 Markdown 文件却没有必要让它同时接触浏览器数据、个人照片、下载目录、密钥文件和其他项目。比较清楚的授权方式是允许读取指定项目明确排除凭据、隐私数据和无关目录需要扩大范围时再说明为什么当前材料不足。最小权限并不意味着永远只给最少的一个文件而是让权限跟着任务逐步扩大而不是一开始就把所有可能用到的资源全部交出去。修改文件先保留可恢复性AI 修改本地文件时风险通常不是某一行写错而是改动范围超出预期或者在没有意识到用户已有修改的情况下覆盖内容。因此权限不仅要限制“可以修改哪些文件”还要规定修改后的检查和恢复方式先查看当前状态只改指定范围保留已有改动展示 Diff并在删除或大范围迁移前等待确认。删除类任务还应优先采用可恢复的归档方式而不是直接物理清除。一个本地改动如果没有可查看的差异也没有可靠的恢复路径就不应仅凭一句“已经修改完成”进入下一步。写数据库不要把查询权自动升级为写入权能读取数据库不代表可以修改数据库能够更新一条测试记录也不代表可以批量处理整张表。对于写入任务应尽量把读取、生成变更方案和真正提交拆开。先展示将修改哪些记录、旧值和新值分别是什么再限制单次影响范围能够使用测试环境、事务、备份或试运行时先用这些手段缩小错误后果。尤其需要警惕“为了方便”长期保留高权限账号。Agent 可以继承一个账号的技术权限却不会自动继承账号持有者对组织关系、业务例外和后果的完整理解。发送消息草稿权与发送权应该分开生成一封邮件和真正发送邮件是两项不同的能力。AI 可以先根据上下文起草正文但在发送前人仍应看到实际接收人、抄送对象、标题、正文和附件。如果收件人来自模型推断、模糊搜索或历史记录更需要重新确认。发送完成后还应回读系统状态核对实际发送对象和内容。工具返回“成功”只说明调用完成不自动证明没有选错联系人、漏掉附件或发错版本。类似的边界也适用于发布文章、创建公开日程、提交审批和触发工单生成内容可以自动化改变外部状态应保留清楚的最后确认。一份可复用的授权模板把权限写进任务时不必使用复杂的安全术语。下面这份简单结构已经能够覆盖多数日常场景目标最终要完成什么。 允许可以读取哪些资料可以调用哪些工具可以修改哪些对象。 禁止不得访问的数据、不得执行的动作、不得输出到的位置。 确认点哪些动作只能先生成预览得到确认后才能执行。 恢复方式发生错误后如何撤销、回滚或重新核对。 验收执行后需要回读什么结果怎样证明没有越界。例如与其说“整理旧文件并清理掉”不如说只检查 project/docs 目录列出疑似废弃文件及判断依据。 当前阶段只读不移动、不删除、不修改引用。 我确认清单后才能把指定文件移动到可恢复的归档目录。 完成后重新列出原目录和归档目录核对实际移动结果。这里最重要的不是文字更长而是建议、授权和执行被分成了不同阶段。四个常见的权限误区第一把人的账号权限直接当成 AI 的合理权限。一个人可以访问某个系统不代表当前任务需要让 Agent 使用其中的全部能力。第二只限制读取对象不限制输出去向。内部文档即使读取合法一旦摘要、日志或工具参数流向外部服务仍可能越过原有边界。第三只记录成功或失败不记录实际动作。如果日志只写“调用成功”却没有对象、参数、接收方和确认记录出错后很难还原发生了什么。第四把一次授权变成永久授权。临时任务结束后令牌、连接器、插件和服务账号如果继续有效就会把一次需要变成长期暴露面。授权前的 30 秒检查在允许 AI 执行动作前可以快速确认它要访问的对象是否与当前任务直接相关它需要读取、修改还是只需要生成建议单次动作最多会影响多少文件、记录或联系人数据是否可能通过日志、插件或消息流向外部不可逆动作之前是否有清楚的预览和确认点出错后能否恢复并能否回读实际结果任务结束后临时权限是否会失效真正可靠的权限设计不是让 AI 什么都不能做也不是为了效率把所有权限一次性打开。它要实现的是低风险步骤可以顺畅推进高风险动作能够被看见、被理解并在发生之前由真正承担后果的人作出决定。AI 可以帮助我们行动但行动的边界仍然应由人定义。