Skip to content

[Feature] 支持 Git worktree:每个任务运行在独立工作树,避免并行会话互相覆盖 / Support Git worktrees per task for conflict-free parallel sessions #99

Description

@Alonso-li

Problem / 问题

在同一个仓库上跑多个 agent / 多任务时,所有会话都共用同一个工作目录,并行任务很容易互相覆盖文件、产生冲突。目前 PI-Desktop 没有 worktree 概念,Bash 工具只能在同一目录下执行。

参考实现(同为 pi 生态的 Pi Agent Desktop 0.84.0):它有专门的 findGitPaths 处理 worktree(.git 是文件而非目录的情况),并会针对 git worktree add ../feat 这类兄弟 worktree 做仓库归一化。Codex 也是这个思路:每个任务开一个隔离 worktree。

Proposed change / 期望改动

为 PI-Desktop 增加 Git worktree 支持

  1. 任务级 worktree:新任务可选「在独立 worktree 中运行」——自动 git worktree add 到临时目录,任务文件改动落在那棵 worktree 里,主仓库不受影响;
  2. 路径识别:会话/工具层的 workspace root 能正确识别「主仓库 + 链接 worktree」的关系,Bash 的 cwd、文件预览、artifact 路径都能指向正确的 worktree;
  3. 清理与合并:任务结束后可选择删除 worktree 或合并改动回主仓库;
  4. 团队/多分支场景下也顺带解决「同一仓库开多个会话时 git 状态互相干扰」。

Alternatives / 其他方案

  • 只提供引导:用户自己在 Bashgit worktree add,软件不感知(治标,易出错);
  • 维持现状:单目录并行,靠用户自理冲突(当前行为)。

Additional context / 补充信息

  • 版本:PI-Desktop 0.14.1(macOS)
  • 现状:git worktree 相关处理为 0;Bash 工具、会话、文件系统都以单一 workspace root 工作
  • 参考:Pi Agent Desktop(DLYZZT/pi-desktop 生态)已支持 worktree 归一化;Codex 同思路

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions