审批模式
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 模式开始:非常适合在做出更改前进行理解
- 在 Ask Permissions 模式下工作:大多数开发工作的平衡之选
- 切换到 Auto-Edit:当你需要进行大量安全的代码更改时
- 尝试 Auto 模式:当你希望减少中断,但仍需要对 Shell 命令和网络调用进行安全控制时——LLM 分类器会评估每次调用
- 谨慎使用 YOLO:仅用于受控环境中受信任的自动化
你可以在会话期间使用 Shift+Tab(或 Windows 上的 Tab)快速循环切换模式。终端状态栏会显示你当前的模式,因此你始终清楚 Qwen Code 拥有的权限。
循环顺序为:plan → default → auto-edit → auto → yolo → plan → …
1. 使用 Plan 模式进行安全的代码分析
Plan 模式指示 Qwen Code 通过 只读 操作分析代码库来创建计划,非常适合探索代码库、规划复杂更改或安全地审查代码。
何时使用 Plan 模式
- 多步实现:当你的功能需要编辑多个文件时
- 代码探索:当你想在更改任何内容之前彻底研究代码库时
- 交互式开发:当你想与 Qwen Code 迭代开发方向时
如何使用 Plan 模式
在会话期间开启 Plan 模式
你可以在会话期间使用 Shift+Tab(或 Windows 上的 Tab)循环切换权限模式来进入 Plan 模式。
如果你处于 Normal 模式,Shift+Tab(或 Windows 上的 Tab)会首先切换到 auto-edits 模式,终端底部会显示 ⏵⏵ accept edits on。再次按下 Shift+Tab(或 Windows 上的 Tab)将切换到 Plan 模式,终端底部会显示 ⏸ plan mode。
使用 /plan 命令
/plan 命令提供了进入和退出 Plan 模式的快捷方式:
常规的规划请求本身不会切换模式。如果你想要只读的 Plan 模式工作流,请使用 /plan、键盘快捷键,或显式将审批模式设置为 plan。
/plan # 进入 plan 模式
/plan refactor the auth module # 进入 plan 模式并开始规划
/plan exit # 退出 plan 模式,恢复之前的模式当你使用 /plan exit 退出 Plan 模式时,你之前的审批模式会自动恢复(例如,如果你在进入 Plan 模式前处于 Auto-Edit 模式,你将返回 Auto-Edit 模式)。
在 Plan 模式下启动新会话
要在 Plan 模式下启动新会话,请使用 /approval-mode 然后选择 plan
/approval-mode在 Plan 模式下运行“无头”查询
你也可以直接使用 -p 或 prompt 在 Plan 模式下运行查询:
qwen --prompt "What is machine learning?"示例:规划复杂的重构
/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 命令之前都会征求你的同意。
何时使用 Ask Permissions 模式
- 刚接触代码库:当你正在探索不熟悉的项目并希望格外谨慎时
- 关键系统:在处理生产代码、基础设施或敏感数据时
- 学习和教学:当你想了解 Qwen Code 正在采取的每个步骤时
- 团队协作:当多人共同处理同一个代码库时
- 复杂操作:当更改涉及多个文件或复杂逻辑时
如何使用 Ask Permissions 模式
在会话期间开启 Ask Permissions 模式
你可以在会话期间使用 Shift+Tab(或 Windows 上的 Tab)循环切换权限模式来进入 Ask Permissions 模式。如果你处于任何其他模式,按下 Shift+Tab(或 Windows 上的 Tab)最终会循环回到 Ask Permissions 模式,此时终端底部不会显示任何模式指示器。
在 Ask Permissions 模式下启动新会话
Ask Permissions 模式是你启动 Qwen Code 时的初始模式。如果你已更改模式并希望返回 Ask Permissions 模式,请使用:
/approval-mode default在 Ask Permissions 模式下运行“无头”查询
运行无头命令时,Ask Permissions 模式是默认行为。你可以使用以下方式显式指定:
qwen --prompt "Analyze this code for potential bugs"示例:安全地实现功能
/approval-mode defaultI need to add user profile pictures to our application. The pictures should be stored in an S3 bucket and the URLs saved in the database.Qwen Code 将分析你的代码库并提出计划。然后,它会在以下操作之前请求审批:
- 创建新文件(控制器、模型、迁移)
- 修改现有文件(添加新列、更新 API)
- 运行任何 Shell 命令(数据库迁移、依赖安装)
你可以审查每个提议的更改,并单独批准或拒绝它。
将 Ask Permissions 模式配置为默认
// .qwen/settings.json
{
"tools": {
"approvalMode": "default"
}
}3. Auto-Edit 模式
Auto-Edit 模式指示 Qwen Code 自动审批文件编辑,同时要求对 Shell 命令进行手动审批,是在保持系统安全的同时加速开发工作流的理想选择。
自动审批的编辑工具包括 edit、write_file 和 notebook_edit。
何时使用 Auto-Edit 模式
- 日常开发:非常适合大多数编码任务
- 安全的自动化:允许 AI 修改代码,同时防止意外执行危险命令
- 团队协作:在共享项目中使用,以避免对他人产生意外影响
如何切换到此模式
# 通过命令切换
/approval-mode auto-edit
# 或使用键盘快捷键
Shift+Tab (or Tab on Windows) # 从其他模式切换工作流示例
- 你要求 Qwen Code 重构一个函数
- AI 分析代码并提出更改建议
- 自动应用所有文件更改,无需确认
- 如果需要运行测试,它将请求审批以执行
npm test
4. Auto 模式 - 分类器驱动的审批
Auto 模式介于 Auto-Edit 和 YOLO 之间。LLM 分类器会评估每个 Shell 命令、网络调用和工作区外的编辑,并自动批准 它认为安全的操作,同时阻止有风险的操作。大多数只读操作 和工作区内的编辑会跳过分类器以提高速度。
完整参考(提示配置、故障排除、常见问题解答)请参见 auto-mode.md。
何时使用 Auto 模式
- 长时间自主会话:当 Ask Permissions 模式中断过于频繁,而 YOLO 风险过高时。
- 受信任的项目:内部代码库,代理应继续运行, 但你仍希望对破坏性 Shell 命令和 出站网络调用设置防护栏。
- 无头/定时运行:当 Auto-Edit 不够用(代理
也需要运行 Shell 命令),但你希望对
rm -rf /、curl ... | sh、凭据泄露等操作进行安全防护时。
如何使用 Auto 模式
在会话期间开启 Auto 模式
按下 Shift+Tab(或 Windows 上的 Tab)循环进入 Auto 模式。 状态栏会显示当前活动的模式。
使用 /approval-mode 命令
/approval-mode auto首次进入 Auto 模式时,会显示一条信息说明其 工作原理。该通知不会再次出现。
在 Auto 模式下启动新会话
// .qwen/settings.json
{
"tools": {
"approvalMode": "auto",
},
}Auto 模式自动审批与阻止的内容
分类器在不确定时倾向于阻止。默认情况:
- 自动审批:只读命令(ls、cat、git status、grep、find)、 当前工作目录下的包安装、构建/测试命令、工作区内的文件编辑、仅限本地的操作。
- 阻止:不可逆的破坏(rm -rf /、fdisk、mkfs)、 来自外部的代码执行(curl | sh、远程内容的 eval)、 凭据泄露、未经授权的持久化(.bashrc 编辑、 crontab)、削弱安全性、强制推送到 main/master。
你可以通过 settings.json 中的自然语言提示自定义分类器的判断。请参见 auto-mode.md。
安全防护栏
- 硬规则仍然有效:
permissions.deny规则会在分类器运行之前阻止操作。 - 在 Auto 模式下会剥离过于宽泛的允许规则:例如,
permissions.allow: ["Bash"](允许所有 Shell 命令)会使分类器失效;进入 Auto 模式会暂时禁用此类规则,以便分类器发挥作用。当你离开 Auto 模式时,这些规则会恢复。磁盘上的设置永远不会被修改。 - 故障关闭:当分类器 API 无法访问时,操作会被阻止而不是允许。在连续两次不可用调用后,下一次工具调用将回退到手动审批。
- 循环防护:在连续三次策略阻止后,下一次调用也会回退到手动审批,从而避免代理陷入死胡同方法中循环。
示例
/approval-mode auto
Refactor the auth module to use OAuth2. Run the full test suite afterwards.Qwen Code 进行文件编辑(工作区内的编辑跳过分类器),
运行 npm test(分类器判断为安全),如果它尝试执行类似 rm -rf /Users/me/.aws 的危险操作,则会显示阻止信息。你可以内联查看原因,并决定是否针对该步骤切换到 Ask Permissions 模式。
将 Auto 模式配置为默认
// .qwen/settings.json
{
"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"],
// 可选:将所有 Shell 命令(包括 ls、cat 等只读命令)
// 路由到分类器以实现纵深防御。
// "classifyAllShell": true,
},
},
}5. YOLO 模式 - 全自动化
YOLO 模式授予 Qwen Code 最高权限,自动审批所有工具调用,包括文件编辑和 Shell 命令。
何时使用 YOLO 模式
- 自动化脚本:运行预定义的自动化任务
- CI/CD 管道:在受控环境中自动执行
- 个人项目:在完全受信任的环境中快速迭代
- 批处理:需要多步命令链的任务
谨慎使用 YOLO 模式:AI 可以使用你的终端权限执行任何命令。请确保:
- 你信任当前的代码库
- 你了解 AI 将执行的所有操作
- 重要文件已备份或提交到版本控制
如何启用 YOLO 模式
# 临时启用(仅限当前会话)
/approval-mode yolo
# 设置为项目默认
/approval-mode yolo --project
# 设置为用户全局默认
/approval-mode yolo --user配置示例
// .qwen/settings.json
{
"tools": {
"approvalMode": "yolo"
}
}自动化工作流示例
# 全自动重构任务
qwen --prompt "Run the test suite, fix all failing tests, then commit changes"
# 无需人工干预,AI 将:
# 1. 运行测试命令(自动审批)
# 2. 修复失败的测试用例(自动编辑文件)
# 3. 执行 git commit(自动审批)模式切换与配置
键盘快捷键切换
在 Qwen Code 会话期间,使用 Shift+Tab(或 Windows 上的 Tab)快速循环切换这五种模式:
Plan 模式 → Ask Permissions 模式 → Auto-Edit 模式 → Auto 模式 → YOLO 模式 → Plan 模式持久化配置
// 项目级别: ./.qwen/settings.json
// 用户级别: ~/.qwen/settings.json
{
"tools": {
"approvalMode": "auto-edit" // 或 "plan", "default", "auto", "yolo"
}
}模式使用建议
- 刚接触代码库:从 Plan 模式开始进行安全探索
- 日常开发任务:使用 Auto-Edit(默认模式),高效且安全
- 自动化脚本:在受控环境中使用 YOLO 模式实现全自动化
- 复杂重构:首先使用 Plan 模式进行详细规划,然后切换到适当的模式进行执行