Skip to content
FunCoding

Search

Search docs, Skills and MCP

Worktree 创建与路径

区分启动参数、中途创建、PR 引用和自定义目录共享。

This page has not been translated into English yet. The original Chinese version is shown below.

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 字符。

目录固定为 /.qwen/worktrees/,分支 worktree- 基于当前所在分支,不一定是主 checkout 的 HEAD。非 Git 仓库或已在 .qwen/worktrees 内时拒绝再创建嵌套树。

中途 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 窗口。恢复与退出见生命周期。