
Archon 提示 worktree 属于另一个 clone 怎么排查【免费下载链接】ArchonThe first open-source harness builder for AI coding. Make AI coding deterministic and repeatable.项目地址: https://gitcode.com/GitHub_Trending/archon3/Archon当你在某个本地 clone 里执行 workflow尤其是带--branch name的运行时Archon 没有启动任务而是抛出一条关于 worktree 归属的报错。最常见的现象是Worktree at path belongs to a different clone (other-clone-path). Remove it from that clone or use a different codebase registration.它和下面几条报错出自同一套隔离isolation系统本文按识别报错 → 理解根因 → 选定一条修复路径 → 验证的顺序排查。适用前提是你对同一个远端仓库同一个owner/repo存在两个或更多本地 clone并且其中某个 clone 已经为某次运行创建过 worktree。先确认是哪一条报错这些报错都出现在从某一个 clone 启动 workflow 时。原文给出的四类提示分别是Worktree at path belongs to a different clone (other-clone-path). Remove it from that clone or use a different codebase registration. Cannot verify worktree ownership at path: reason Cannot adopt path: path contains a full git checkout, not a worktree. Cannot adopt path: .git pointer is not a git-worktree reference.第一条是典型的跨 clone 冲突后三条是它的变体各自对应略不同的子原因见文末其它报错变体。path、other-clone-path是报错里给出的具体路径reason是具体的失败原因后续命令中的同名占位符都要替换成报错里的实际值。为什么会跨 clone 冲突Archon 用远端 URLowner/repo来推导 codebase 身份因此同一远端的两个本地 clone 共享同一个codebase_id。所有 worktree 都存放在一个共享路径下~/.archon/workspaces/owner/repo/worktrees/也就是说clone A 创建出来的 worktree在磁盘上从 clone B 也能看到。隔离系统拒绝静默接管另一个 clone 的 worktree因为那样会操作到错误的文件系统状态——这正是报错要拦下来的地方。理解了这一点就能明白为什么解决思路是让两个 clone 不再争抢同一个 worktree 路径。排查与解决三选一下面的命令都要在报错所指向的那个 clone 之外——也就是先确认冲突 worktree 究竟属于哪个 clone再到那个 clone 的目录里操作。方案一移除另一个 clone 的 worktree如果你已经不需要另一个 clone 里那项未完成的 worktree把它清掉。先列出当前所有活跃 worktree确认分支名和路径archon isolation list该命令按 codebase 分组显示分支名、路径、创建时间与状态。确认无误后二选一# 优雅清理移除该分支的 worktree、本地分支和远端分支 archon complete branch-name # 或者当确实没有需要保留的工作时直接用 git 强制删除 git worktree remove path --forcebranch-name用archon isolation list里显示的分支名替换path用报错或 list 里给出的 worktree 路径替换。archon complete会删除 worktree、本地分支和远端分支并把该隔离环境标记为已销毁它默认会在确认补丁已在远端默认分支上之后才移除--force可跳过安全检查。因此如果该 worktree 还有未合并的提交先想清楚是否要丢弃。git worktree remove path --force会直接删除该 worktree 目录未提交的改动会被丢弃不可恢复。仅在确认没有需要保留的内容时使用。方案二本次运行改用另一个分支名让这次运行不和其它 clone 争抢同一路径换用一个新的分支名即可archon workflow run name --branch different-name taskname是 workflow 名different-name是一个另一个 clone 没在用的新分支名task是任务描述。分支名唯一对应一个 worktree换名字就能绕开冲突且不动另一个 clone 的任何状态。方案三固定只用一个 clone如果两个本地 checkout 本来就是同一个项目最彻底的办法是收敛到一个 clone。需要说明的是Archon 的 codebase 注册目前假设每个远端对应一个本地路径真正的多 clone 支持尚未提供文档中作为一个未完成的跟踪项记录。因此当两个 clone 长期并存时方案三是结构性修法。其它报错变体怎么判断如果命中的不是belongs to a different clone而是下面几条按各自的现象处理Cannot adopt path: path contains a full git checkout, not a worktree.说明在 worktree 路径上有一个非 Archon 创建的完整 git 仓库。移除或挪走这个目录即可。Cannot adopt path: .git pointer is not a git-worktree reference.说明该路径下的.git文件指向了意料之外的位置比如是子模块或格式损坏。用下面命令查看它实际指向哪里再手动清理cat path/.gitCannot verify worktree ownership at path: reason说明读取path/.git时遇到文件系统权限或 I/O 错误。检查该路径与~/.archon/workspaces的权限ls -la path怎么确认已解决修复动作完成后重新执行之前那条archon workflow run命令作为验证如果它不再抛出 worktree 归属错误、并能在~/.archon/workspaces/owner/repo/worktrees/下创建出本次运行对应的 worktree就说明两个 clone 已不再争抢同一路径。再跑一次archon isolation list确认列表里没有来自另一个 clone 的冲突条目本次运行就能正常进行。需要记住的边界是每个分支名只对应一个 worktree不要在同一分支上同时启动两次运行而同一远端多个本地 clone本身目前不被支持长期共存时建议按方案三收敛到一个 clone。【免费下载链接】ArchonThe first open-source harness builder for AI coding. Make AI coding deterministic and repeatable.项目地址: https://gitcode.com/GitHub_Trending/archon3/Archon创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考