用Facet搞定Claude Code多仓库协作:告别Git索引打架
DevOps干活最烦的就是一个任务得同时动好几个仓库,比如改个Helm chart得同步动Terraform和K8s manifests。之前在公司尝试用git worktree来隔离不同任务,结果简直是灾难,我自己经常搞不清在哪个分支,Claude Code agent进去之后更懵,好几个会话抢一个索引,搞得工作区乱七八糟。
下一篇
分享一个网络安全面试的开源题库 →
为了解决这个问题,我搞了个叫facet的小工具,本质上就是给终端搞一套类似VS Code Workspace的机制,但它是临时性的、可丢弃的。
具体实操流程是这样的:
1. 绑定GitHub Issue,facet会自动分析这个Issue涉及哪些仓库。
2. 自动克隆相关代码到独立的工作区,并把Issue内容写进CLAUDE.md,让Claude Code一进来就有上下文。
3. 任务合并后,直接把整个工作区删掉,不留垃圾。
中间踩过大坑,最早尝试把zellij集成进去,结果会话乱跳,甚至导致崩溃丢代码,删了1500行代码才把逻辑理顺。
这里分享下facet定义工作区的方式,它是通过一个manifest文件来描述的:
# 示例工作区配置
repositories:
- url: "[email protected]:org/terraform-infra.git"
branch: "feature/update-helm"
- url: "[email protected]:org/k8s-manifests.git"
branch: "fix/chart-version"
context: "Issue #123: Update helm chart for production"最让我觉得有意思的是,这个工具后期的稳定性优化,其实是我把Issue丢给Claude Code agent去修,我只负责Review和Merge。这正好验证了这套工作流的效率:隔离的环境 + 明确的上下文 = Agent能独立干活且不搞乱我的主分支。
如果你也经常在多个repo之间切来切去,且在用Claude Code,这种“一次性工作区”的思路非常值得实操。
# 假设安装了facet,快速启动一个基于issue的工作区
facet spawn https://github.com/org/repo/issues/123