Qwen Code 五种审批模式(Plan、Ask Permissions、Auto-Edit、Auto、YOLO)怎么选?
2026/9/13 1:36:32 网站建设 项目流程

Qwen Code 五种审批模式(Plan、Ask Permissions、Auto-Edit、Auto、YOLO)怎么选?

【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code

Qwen Code 在终端里运行 AI 编码任务时,每次要改文件或执行 shell 命令前都需要一个授权机制。项目提供了五种审批模式:Plan、Ask Permissions、Auto-Edit、Auto、YOLO,从"只读分析"到"全自动执行"逐级放权。这篇文章给出五种模式的完整对比、每种模式适用的判断依据、切换与持久化配置的具体操作,以及 Auto Mode 分类器的调优与 CI/CD 场景的无头用法,让你根据任务风险选定模式并验证它已经生效。

以下内容依据 审批模式文档、Auto Mode 参考文档、配置参考 与 headless 文档。

五种模式的权限差异

先看清楚每种模式对"文件编辑"和"shell 命令"两个关键动作的授权方式:

模式文件编辑Shell 命令适用场景风险级别
Plan❌ 仅只读分析❌ 不执行代码探索、规划复杂改动、安全地审查代码最低
Ask Permissions✅ 每次需手动批准✅ 每次需手动批准陌生代码库、关键系统、团队协作、学习教学
Auto-Edit✅ 自动批准❌ 每次需手动批准日常开发、重构与代码改进、安全自动化
Auto✅ 分类器评估✅ 分类器评估长时自主会话;Auto-Edit 太保守而 YOLO 又太危险时
YOLO✅ 自动批准✅ 自动批准可信个人项目、自动化脚本/CI/CD、批处理任务最高

几点关键说明(来自源文档,不是推测):

  • 以前叫Default的模式已改名为Ask Permissions,但配置值tools.approvalMode: "default"/approval-mode default命令为了向后兼容保持不变。
  • Auto-Edit 模式自动批准的编辑工具明确为editwrite_filenotebook_edit三个。
  • Auto Mode 由一个 LLM 分类器逐条评估 shell 命令、网络调用和工作区外的编辑;大多数只读操作和工作区内编辑会跳过分类器以节省时间。
  • 关于默认模式存在一处文档不一致:审批模式文档一处称 Ask Permissions 是启动 Qwen Code 时的初始模式,而配置参考记录tools.approvalMode的默认值为auto。如果你依赖某个特定模式,不要依赖启动默认值,直接在 settings.json 或命令中显式指定。

按任务场景对号入座

源文档给出的选择路径是:

  1. 陌生代码库、想先看清再动手:用 Plan Mode。它只允许只读操作来分析代码库并产出计划,适合多文件改动的规划、改动前的调研,以及和 AI 逐步确认方向。
  2. 关键系统、生产代码、多人协作、想看清每一步:用 Ask Permissions。所有文件变更和 shell 命令都会先弹审批,你可以逐条批准或拒绝。
  3. 大量安全的代码改动:用 Auto-Edit。文件编辑自动生效,但npm test这类 shell 命令仍会请求批准,防止 AI 意外执行危险命令。
  4. 长时自主会话、无头/定时任务:用 Auto Mode。Ask Permissions 打断太频繁但又不放心 YOLO 时,Auto Mode 的分类器会放行判断安全的动作(只读命令、cwd 内的包安装、构建/测试命令、工作区内编辑、本地操作),拦截rm -rf /curl | sh、凭据外泄、修改.bashrc/crontab等危险动作。
  5. 可信个人项目、CI/CD、批处理:用 YOLO,但要"节制使用"(源文档原话 Use YOLO sparingly),且只用于受控环境中的可信自动化。启用前应确认三件事:信任当前代码库、理解 AI 将执行的所有动作、重要文件已备份或已提交版本控制。

文档还推荐了一条复合路径:复杂重构先用 Plan Mode 做详细规划,再切换到合适的执行模式去落地

会话中切换模式并验证生效

三种切换方式:

1. 快捷键循环切换。会话中按Shift+Tab(Windows 上是Tab)在五种模式间循环,顺序为:

plan → default(Ask Permissions) → auto-edit → auto → yolo → plan → ...

验证方式看终端底部状态栏:进入 Auto-Edit 会显示⏵⏵ accept edits on,进入 Plan Mode 会显示⏸ plan mode,Ask Permissions 模式下则不显示任何模式指示(见状态栏文档与快捷键文档)。

2./approval-mode命令(命令参考):

/approval-mode # 交互式选择 /approval-mode default # Ask Permissions /approval-mode auto-edit /approval-mode auto /approval-mode yolo /approval-mode yolo --project # 设为项目默认 /approval-mode yolo --user # 设为用户全局默认

注意:不带--project/--user的切换只影响当前会话。

3. Plan Mode 专属的/plan快捷命令

/plan # 进入 Plan Mode /plan refactor the auth module # 进入并开始规划 /plan exit # 退出 Plan Mode,自动恢复到进入前的模式

文档特别说明:普通的规划类提问不会自动切换模式,想要只读的 Plan Mode 工作流必须用/plan、快捷键或显式设置审批模式。

把审批模式写入 settings.json 持久化

配置位置:项目级./.qwen/settings.json,用户级~/.qwen/settings.json。字段为tools.approvalMode,取值plan/default/auto-edit/auto/yolo(见配置参考):

{ "tools": { "approvalMode": "auto-edit" } }

Auto Mode 的分类器提示(hints)配置

Auto Mode 是五种模式里唯一可深度调优的。分类器默认偏向"拿不准就拦截",你可以通过permissions.autoMode用自然语言提示调整它的判断(Auto Mode 参考):

{ "tools": { "approvalMode": "auto" }, "permissions": { "autoMode": { "hints": { "allow": ["Running pytest, mypy, and ruff on this Python repo"], "deny": ["Any network call to intranet.example.com"] }, "environment": ["Open-source monorepo; commits are signed"], "classifyAllShell": false, "mcp": { "forwardArguments": true } } } }

配置约束与语义(均来自 Auto Mode 文档):

  • 提示是自然语言描述而非规则模式,会附加注入分类器的系统提示。分类包括allow(应放行的动作)、softDeny(可被用户最近的明确请求解除的拦截)、hardDeny(安全边界动作,分类器必须拦截)。hints.deny为向后兼容仍被接受,按softDeny处理。
  • 单条提示上限 200 字符,allow/softDeny/hardDeny各最多 50 条,environment最多 20 条。
  • classifyAllShell: true会强制所有 shell 命令(含只读命令)都过分类器,适合生产/高安全环境的纵深防御,代价是每次只读命令约 300ms 额外延迟,且分类器 API 不可用时只读命令也需要手动批准。
  • Auto Mode 期间,过宽的 allow 规则(如BashBash(*)、解释器通配)会被临时剥离,退出 Auto Mode 后恢复,磁盘上的 settings.json 从不被修改。硬规则依然优先:permissions.deny在分类器之前就拦截动作;permissions.ask强制手动确认。
  • 分类器使用你配置的 fast 模型(/model --fast),未配置时回落到主会话模型;分类器走的是与主 agent 相同的模型端点,自托管模型则同样走自托管端点。

无头 / CI 场景下的模式参数

headless 模式支持 CLI 直接指定审批模式(headless 文档):

qwen -p "query" --approval-mode auto-edit # 取值同 settings:plan/default/auto-edit/auto/yolo qwen -p "query" --yolo # 等价于自动批准所有动作

文档给出一条 CI 场景的参考命令(示例,预算参数按你的任务调整):

qwen -p "..." --yolo --max-session-turns N --max-wall-time 10m --output-format json

必须知道的安全边界:--yolo(或 settings 中tools.approvalMode: "yolo"不会启用 sandbox,shell/write/edit 工具以宿主进程权限运行。Qwen Code 检测到"YOLO 且未配置 sandbox"时会在启动时向 stderr 打印一行警告;确认接受该风险后可用QWEN_CODE_SUPPRESS_YOLO_WARNING=1抑制警告。

如何验证当前模式及其行为

  • 状态栏指示⏸ plan mode⏵⏵ accept edits on等指示见上文;Ask Permissions 模式无指示。
  • Auto Mode 拦截:分类器拦截时工具调用失败并报错Blocked by auto mode policy: <reason>,reason 由分类器第二阶段产生(LLM 生成、不做翻译;想在中文环境看到中文理由,可在environment中加Respond reasons in Chinese这类提示)。被拒的具体动作不允许通过换工具、shell 间接、生成脚本等途径绕行完成,无关的安全工作不受影响。
  • Auto Mode 自动降级(防止你被卡住):分类器 API 不可达/超时/超上下文/响应非法时,当前动作立即回落手动审批,确认框会提供 "Switch to Default Mode and allow once" 选项,切换只影响当前运行时会话;连续 3 次策略拦截后,下一次工具调用也回落手动审批。会话仍停留在 Auto Mode,只有回落的那次走手动审批;批准后计数复位。

已知限制与排错

Auto Mode 的文档明确列出的限制:

  • 不支持离线:分类器需要 LLM 调用。
  • 慢路径有延迟:allowlist + 工作区编辑覆盖大多数调用;run_shell_command快路径约 300ms,带 thinking 复核的慢路径约 3–5 秒。
  • 不能替代permissions.deny:分类器是尽力而为,确定绝不能执行的命令要写进permissions.deny
  • MCP 工具按参数判断、不按实际行为验证:未标记trust: true的 MCP 服务器每次调用都带服务器名、工具名、自报注解和有界参数副本送分类器;信任的 MCP 工具可加permissions.allow: ["mcp__server__tool"]绕过分类器。

常见排错(均出自 Auto Mode 文档的 Troubleshooting):

  • "Auto mode 一直拦我的命令":看报错里的 reason,如果是分类器在你的上下文里过于保守,往permissions.autoMode.hints.allow加一条自然语言描述,如"Building Docker images for this project (docker build ...)"
  • "Auto mode classifier unavailable":分类器 API 没响应,可能原因:与模型端点的网络问题、fast 模型不可用(检查/model --fast)、transcript 过长超出 fast 模型上下文窗口。诊断期间切回/approval-mode default
  • 频繁触发回落:最可能是分类器 API 故障或 hints 需要调优,调查期间切回 Default Mode。

另外两个行为注意项:Plan Mode 下任何修改都被禁止,它只产出计划;退出时/plan exit会自动恢复进入前的模式。YOLO 下 AI 以你的终端权限执行任意命令,文档要求在启用前确认代码库可信、动作可理解、重要文件已备份或入库。

落地检查清单

完成选型后按这个顺序确认:

  1. 会话内用 Shift+Tab 或/approval-mode <mode>切换,看底部状态栏指示是否符合预期(Plan 显示⏸ plan mode,Auto-Edit 显示⏵⏵ accept edits on)。
  2. 需要跨会话生效时,写入./.qwen/settings.json(项目级)或~/.qwen/settings.json(用户级)的tools.approvalMode
  3. 用 Auto Mode 的话,先跑几个典型命令验证分类器放行/拦截是否符合预期,再按需补permissions.autoMode.hints
  4. CI/CD 用--yolo前,确认无 sandbox 警告的风险可接受,或配置 sandbox 后再开启。

如果以上四类操作仍覆盖不了你的场景(例如需要更细粒度的工具级控制),继续阅读 审批模式总览 和 Auto Mode 参考 的完整说明。

【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询