Worktree 创建与路径
区分启动参数、中途创建、PR 引用和自定义目录共享。
Qwen 管理的 worktree 为不同任务提供独立 checkout,仍共享 Git 历史和远端。它不是进程或网络沙箱。
启动时创建
qwen --worktree=my-feature
qwen --worktree=#123名字与 PR 编号是示例。裸 --worktree 自动生成 adjective-noun-6hex 名称;可选值会吞掉紧邻的位置 prompt,所以带任务时用 --worktree=name 或 -p 明确分开。
启动参数在第一轮前改变 process.cwd() 和模型工作区;不能与 --acp/--experimental-acp 并用,ACP host 应将 worktree 路径作为 newSession/loadSession 的 cwd。
PR 可用 #N 或 GitHub pull URL,生成 pr-N 和 worktree-pr-N,从 origin 拉取 PR head,以 FETCH_HEAD 创建。要求 origin 指向 GitHub,fetch 超时 30 秒;远端缺失、PR 不存在、编号无效或超时会失败且不创建目录。
中途创建
只有用户明确说“使用/创建 worktree”才触发 enter_worktree;普通“修 bug”或“建分支”不自动触发。工具 name 可省略,接受字母、数字、点、下划线、连字符,最多 64 字符。
目录固定为
中途 enter_worktree 不改变 process.cwd() 或 Config.targetDir,后续路径依靠模型上下文约定;不能与启动 --worktree 的实际 chdir 等同。使用后核对具体工具路径。
Hooks 与共享目录
core.hooksPath 指向主仓库 .husky(优先)或 .git/hooks,提交仍执行原有 Git Hooks。
{
"worktree": {
"symlinkDirectories": ["node_modules", ".turbo"]
}
}symlinkDirectories 用于所有一般 worktree 创建路径,包括隔离 agent。值相对仓库根,绝对路径与包含 .. 的条目拒绝;来源不存在或目标已存在则跳过,不覆盖。
这是共享原目录的链接,不是复制依赖,因此被链接内容不具备 checkout 的独立性。普通 worktree 位置不可配置;agents.arena.worktreeBaseDir 只控制 Arena 的另一套目录。
其他路径参数
--worktree 下,--mcp-config、--openai-logging-dir、--json-file、--input-file、--telemetry-outfile、--include-directories 在 chdir 前按启动目录变绝对路径;未列出的其他路径形 argv 仍可能相对新 worktree。跨目录运行时使用明确绝对路径。
当前不支持 sparse checkout、worktree.sparsePaths 或自动 tmux 窗口。恢复与退出见生命周期。