审批模式
Qwen Code 的五种权限模式(Plan、Ask Permissions、Auto-Edit、Auto、YOLO):行为对比、切换方式、Plan 模式与 /plan、Auto 模式的分类器与安全护栏。
Qwen Code 提供五种不同的权限模式,让你根据任务复杂度和风险级别,灵活控制 AI 与你的代码和系统的交互方式。
| 模式 | 文件编辑 | Shell 命令 | 适合 | 风险级别 |
|---|---|---|---|---|
| Plan | 只做只读分析 | 不执行 | 代码探索、规划复杂改动、安全的代码评审 | 最低 |
| Ask Permissions | 需手动批准 | 需手动批准 | 新的/不熟悉的代码库、关键系统、团队协作、学习和教学 | 低 |
| Auto-Edit | 自动批准 | 需手动批准 | 日常开发任务、重构和代码改进、安全的自动化 | 中 |
| Auto | 由分类器评估 | 由分类器评估 | 长时间自主会话;Auto-Edit 太谨慎而 YOLO 太冒险时 | 中 |
| YOLO | 自动批准 | 自动批准 | 受信任的个人项目、自动化脚本/CI/CD、批处理任务 | 最高 |
以前叫 Default 的模式已重命名为 Ask Permissions 以更好描述其行为;底层配置值(tools.approvalMode: "default")和 /approval-mode default 命令为向后兼容保持不变。速查:从 Plan 模式开始,适合改动之前先理解;Auto 模式是开箱即用的默认体验(LLM 分类器自动批准安全的动作并阻止有风险的,在保留安全网的同时尽量减少打扰);想对每次文件编辑和 shell 命令手动批准时,切到 Ask Permissions;做大量安全的代码改动时,切到 Auto-Edit;谨慎使用 YOLO,只用于受控环境里受信任的自动化。会话中用 Shift+Tab(Windows 上用 Tab)快速循环切换模式,终端状态栏显示当前模式;循环顺序是 plan → default → auto-edit → auto → yolo → plan → ...。
1. 用 Plan 模式做安全的代码分析
Plan 模式让 Qwen Code 通过只读操作分析代码库来创建计划,非常适合探索代码库、规划复杂改动或安全地评审代码。适用:多步实现(功能需要编辑很多文件)、代码探索(改动之前想彻底研究代码库)、交互式开发(想与 Qwen Code 一起迭代方向)。
会话中切换:用 Shift+Tab(或 Tab)循环权限模式;在普通模式下,第一次按键切到 auto-edits 模式(底部显示 ⏵⏵ accept edits on),再按一次切到 Plan 模式(显示 ⏸ plan mode)。/plan 命令提供进入和退出的快捷方式:/plan(进入)、/plan refactor the auth module(进入并开始规划)、/plan exit(退出并恢复之前的模式,例如进入前是 Auto-Edit,就回到 Auto-Edit)。普通的规划请求本身不会切换模式;想要只读的 Plan 模式流程,用 /plan、键盘快捷键,或显式把审批模式设为 plan。在新会话里以 Plan 模式启动,用 /approval-mode 并选 plan;也可以直接用 -p 或 prompt 在 Plan 模式下运行无头查询。示例:/plan I need to refactor our authentication system to use OAuth2. Create a detailed migration plan. Qwen Code 进入 Plan 模式并分析当前实现来创建全面的计划,你可以用「What about backward compatibility?」「How should we handle database migration?」这样的后续提问来细化。把 Plan 设为默认:
// .qwen/settings.json
{
"tools": {
"approvalMode": "plan"
}
}2. 用 Ask Permissions 模式做受控交互
Ask Permissions 是使用 Qwen Code 的标准方式:你对所有潜在有风险的操作保持完全控制,Qwen Code 在做任何文件改动或执行 shell 命令之前都会征求你的批准。适用:刚接触某个代码库(探索不熟悉的项目、想格外谨慎)、关键系统(生产代码、基础设施、敏感数据)、学习和教学(想理解 Qwen Code 的每一步)、团队协作、涉及多个文件或复杂逻辑的复杂操作。它是启动 Qwen Code 时的初始模式;改了模式想回来,用 /approval-mode default,或用 Shift+Tab 循环(回到没有任何模式指示符的状态)。无头命令默认就是 Ask Permissions 模式。例如让它给应用添加用户头像(存 S3、URL 存数据库):Qwen Code 分析代码库并提出计划,然后在创建新文件(控制器、模型、迁移)、修改现有文件(添加新列、更新 API)和运行任何 shell 命令(数据库迁移、依赖安装)之前请求批准,你可以逐个评审并批准或拒绝每个改动。设为默认:"tools": { "approvalMode": "default" }。
3. Auto-Edit 模式
Auto-Edit 让 Qwen Code 自动批准文件编辑,同时对 shell 命令仍要求手动批准,适合在保持系统安全的同时加速开发流程;自动批准的编辑工具包括 edit、write_file 和 notebook_edit。适用:日常开发(大多数编码任务)、安全的自动化(允许 AI 修改代码,同时防止意外执行危险命令)、团队协作(在共享项目里避免对他人产生意外影响)。切换:/approval-mode auto-edit,或 Shift+Tab(Windows 上 Tab)。流程示例:你让 Qwen Code 重构一个函数;AI 分析代码并提出改动;自动应用所有文件改动而无需确认;如果需要运行测试,它会请求批准才执行 npm test。
4. Auto 模式:分类器驱动的审批
Auto 模式位于 Auto-Edit 和 YOLO 之间:一个 LLM 分类器评估每个 shell 命令、网络调用和工作区之外的编辑,自动批准它判断为安全的,阻止有风险的;大多数只读操作和工作区内的编辑为了速度会跳过分类器。适用:长时间自主会话(Ask Permissions 打扰太多而 YOLO 太冒险)、受信任的项目(内部代码库,智能体应持续推进,但你仍想对破坏性 shell 命令和出站网络调用设一道护栏)、无头/定时运行(Auto-Edit 不够,智能体还需要运行 shell 命令,但你想在 rm -rf /、curl ... | sh、凭据外泄等上有安全保障)。开启:按 Shift+Tab(或 Tab)循环进入,状态栏显示当前模式;或用 /approval-mode auto(第一次进入 Auto 模式时会有信息消息解释它如何工作,之后不再出现);或在 .qwen/settings.json 里设 "tools": { "approvalMode": "auto" } 在新会话以它启动。
分类器在不确定时倾向于阻止。默认:自动批准——只读命令(ls、cat、git status、grep、find)、在当前目录安装包、构建/测试命令、工作区内的文件编辑、仅限本地的操作;阻止——不可逆的破坏(rm -rf /、fdisk、mkfs)、执行外部代码(curl | sh、eval 远程内容)、凭据外泄、未经授权的持久化(改 .bashrc、crontab)、削弱安全性、对 main/master 强制推送。你可以通过 settings.json 里的自然语言提示来自定义分类器的判断。安全护栏:硬规则仍然有效(permissions.deny 规则在分类器运行之前就阻止动作);过于宽泛的允许规则在 Auto 模式期间会被剥离(例如 permissions.allow: ["Bash"],即允许每个 shell 命令,会使分类器失效,进入 Auto 模式会暂时禁用这些规则,离开时恢复,磁盘上的设置从不被修改);失败即关闭(分类器 API 不可达时,动作被阻止而不是放行;连续两次不可用后,下一次工具调用回退到手动批准);循环防护(连续三次策略阻止后,下一次调用也回退到手动批准,使智能体不会卡在循环里)。完整参考(提示配置、排障、FAQ)见 Auto 模式文档。
5. YOLO 模式
YOLO 自动批准一切,包括 shell 命令、文件写入和网络请求,没有确认。只在受信任、受控的环境里使用(如受信任的个人项目、自动化脚本/CI/CD、批处理任务)。注意:auto-edit、auto 和 yolo 审批模式会绕过工具执行的批准提示,只在受信任的环境里使用它们。