Qwen Code 加一条命令就能给 AI 单独开代码沙盒
通义千问 Qwen Code 官方文档提供了 Worktree(工作树)功能,加一个 --worktree 参数,AI 的所有改动都会落在 .qwen/worktrees 下的独立目录和独立分支上,不满意退出时选择删除就能全部作废,主目录完全不受影响。
先明确几个基础概念:Worktree 是 git 的功能,指同一个仓库再开一份独立工作目录,各改各的互不干扰;Branch(分支)是代码的一条独立时间线;Slug(名字标识)是给这个独立工作区起的名字,只能用字母、数字、点、下划线、连字符,最长 64 个字符。
使用前提:必须在 git 仓库内使用,分支从当前检出的分支切出;对话中触发需要明确说“use a worktree”“start a worktree”这类指令,只说“修这个 bug”或“建个分支”不会触发该功能。
启动时直接进入独立工作区的操作步骤:
1. 在项目目录运行 qwen --worktree,名字会自动生成,比如 tender-jemison-037f0a。
2. 想自定义名字,运行 qwen --worktree=my-feature。
3. 想直接测试某个 PR,在等号后面写井号加 PR 编号(官方示例为 4174),或者直接跟 PR 的完整网址,工具会从 origin 拉取该 PR 的最新代码。
4. 后面需要跟一句话提示词时,用等号写法最稳妥:qwen --worktree=my-feature "say hi"。官方提醒,直接写 --worktree 再接一句话,那句话会被当成名字然后报错。
5. 想接着之前的会话继续操作,运行 qwen --resume 会话编号 --worktree=my-feature。
对话过程中随时开启独立工作区的操作:
直接对 Qwen 说 start a worktree called experiment-a,工具会自动创建分支 worktree-experiment-a,目录为 .qwen/worktrees/experiment-a,之后所有文件修改和命令执行都在这个目录下进行。
做完操作后说 exit the worktree and remove it 就会删除整个工作区;想保留就说 exit the worktree but keep it。
独立工作区的默认配置:目录固定在项目根目录/.qwen/worktrees/名字/,分支命名为 worktree-名字,PR 对应的工作区分支名为 pr-数字,目录位置无法修改。界面底部会显示当前分支名和工作区名称。官方说明 git 钩子会自动指向主仓库的 .husky/ 或 .git/hooks/,提交时原有的代码检查规则会正常运行。
退出时的安全机制:在独立工作区内连按两次 Ctrl+C,会弹出对话框,列出新提交数和未提交文件数,让用户选择保留、删除(连分支一起丢弃)或取消。
官方设置了三道删除保护:其他会话正在使用的工作区不能删除;有未提交改动时需要先确认;没有合并的提交会被无条件拦下,没有强制删除开关。
子代理也支持该功能:让子代理带上 isolation 为 worktree 参数,它会在 agent-加7位十六进制字符的临时目录里工作。没有改动就自动删除,有改动就保留,并把路径和分支写在结果后面,由用户自行审阅后再决定合并或删除。官方说明,超过 30 天、没有未提交内容和未合并提交的这类目录,下次启动时会被自动清理。
这个功能相当于给 AI 大改代码买了一份“后悔药”,主目录始终保持干净。