Wink Pings

跨仓库跑 Agent 太碎,Matt Pocock 用一个 Home Repo 当总部

每个 repo 配一遍 skills、AGENTS.md、工具链,跨 repo 改功能时 agent 又只能看见当前目录。Matt Pocock 把自己用了几个月的 Home Repo 模式翻出来:一个仓库管所有 agent 配置,用指针指向其他仓库。

手里有五个以上 repo 的人,大概都碰过这个场景:在每个 repo 里分别启动 coding agent,各自的 skills、AGENTS.md、工具链配一遍。某个功能要跨三个 repo 改,agent 只能看见当前目录,规划做到一半得人肉搬运上下文。

Matt Pocock 在 X 上发了一段视频,讲他用了几个月的解法。他说原本觉得这方案太无聊、太显然,没好意思发。

这个模式叫 Home Repo。一个 git 仓库,放你跨项目共用的 skills、AGENTS.md、共享文档,以及指向其他 repo 的导航指针。Agent 从 Home Repo 启动,需要别的仓库时按指针去打开或 clone。

Home Repo 结构:一个中心仓库放 skills 和 tooling,用指针指向 storefront、payments-api、admin-dashboard 等其他仓库

它解决的是三个具体麻烦:steering 文件和工具链有了一个统一入口;所有 agent 可以在同一个地方启动;跨多个 repo 的大改可以在一个 session 里做完。

Matt Pocock 给了一套可以直接粘进 agent 的提示词,分四步。

第一步,盘点 repo。找出 home 目录下所有 git 仓库,跳过依赖目录,记录每个的路径、remote、公开还是私有、最后一次 commit 时间。然后让 agent 分轮问你:Home Repo 要指向哪些 repo,它自己放在哪,是个人用还是团队共用,你的 harness 启动时加载 AGENTS.md 还是 CLAUDE.md。

第二步,盘点共享材料。在选中的 repo 和用户级 skill 目录(比如 ~/.claude/skills)里,列出每个 skill(含 SKILL.md 的文件夹)、每个 AGENTS.md 和 CLAUDE.md、每份写给 agent 的文档。把每项分进四个桶:shared,跨 repo 通用;duplicate,多处重复,diff 之后留最新;repo-specific,只属于某个 repo 的代码、命令或领域;installed,从公开 skill 仓库或市场装的。

第三步,出计划表。每一项现在在哪、要去哪。shared 和 duplicate 搬进 Home Repo,只留一份最新版;repo-specific 留在原 repo;installed 保持安装状态。表下面附上 Home Repo 的 AGENTS.md,一行一个指针。

指针长这样:

Storefront (Next.js app): ~/repos/acme/storefront. Clone from git@github.com:acme/storefront.git if missing.
Payments API: ~/repos/acme/payments-api. Read its AGENTS.md before changing it.
AI Hero: ~/repos/ai/ai-hero (git pull to view latest, likely out of date)

第四步,执行。建 Home Repo 和 AGENTS.md,把共享项拷进去,skill 文件夹整个保留。然后去每个子 repo 开新分支,删掉已经搬走的副本,repo 特有的内容不动。最后在 Home Repo 提交,推不推由你决定。

规模上有分界。大约 20 个 repo 以内,一行一个指针没问题。到 400 个左右,让 agent 逐行读指针已经太多,得按业务领域分文件,AGENTS.md 里只指向那些文件。几千个 repo 时,skill 的消费方太多,skills marketplace 更合适。

几个常见疑问,Matt Pocock 在回复里给了简短答案。

有人问 per-repo 的 CLAUDE.md 是不是就没了。他说还在,那些只描述 repo 特有的东西。

有人问 skills 怎么跨 repo 做版本管理。他回:不做,就放在 home repo 里。

有人问共享 skill 和 repo 特有指令冲突怎么办。他回:把冲突修掉。

有人问这是不是个人仓库、没法跟团队共享 skills。他说团队可以共用同一个 Home Repo,大家一起往里贡献,这才是重点。

还有人用 submodule 把 Home Repo 塞进其他 repo 里分发。Matt Pocock 说可以,5 到 10 个 repo 时 submodule 式做法没问题,plain pointers 做的是同一件事,还不用处理 submodule。

这个模式技术上没什么新东西,就是目录约定加一个导航文件。真正花时间的是盘点:散落在各处的 skills 和配置,哪些是共享的,哪些是某个 repo 独有的,哪些已经重复了三份。Matt Pocock 说它无聊显然,大概也是因为麻烦都集中在这一步。

发布时间: 2026-11-12 22:33