最近这段时间,我同时在用好几个 AI 编程工具:Claude Code、Cursor、Codex、Gemini CLI、Qwen Code……每个都有自己顺手的地方,但配置也各管各的。

一开始只是觉得有点麻烦,后来发现这个事情会慢慢变成一个小坑:我在 Claude Code 里加了一个好用的 MCP,Cursor 没有;我在 Codex 里改了 AGENTS.md,Claude Code 的 CLAUDE.md 又没同步;某个 skill 在一个工具里是新版,另一个工具里还是旧版。

于是就做了 Plexus

它想解决的事情很简单:

只配置一次,然后同步到所有你常用的 AI Agent。


先看效果

Plexus Dashboard

Plexus 会扫描你本机已经配置过的 AI Agent,然后把 Rules、MCP Servers、Skills 展示在一个 dashboard 里。

目前主要支持:

  • Claude Code
  • Cursor
  • Codex
  • Gemini CLI
  • Qwen Code
  • Factory Droid

如果你的工具还不在内置列表里,也可以在 Settings -> Agent Catalog -> Add agent 里手动新增一个 instruction file。这个模式比较轻量,主要是先让 Plexus 帮你查看、编辑和备份这个文件,MCP / Skills 的完整 adapter 后面再慢慢补。


它到底解决什么问题?

假设你现在同时使用 Claude Code 和 Cursor。

Claude Code 读的是:

~/.claude/CLAUDE.md
~/.claude.json
~/.claude/skills/

Cursor 读的是:

~/.cursor/AGENTS.md
~/.cursor/mcp.json
~/.cursor/commands/

Codex 又是另一套:

~/.codex/AGENTS.md
~/.codex/config.toml
~/.codex/skills/

如果你只是偶尔改一次配置,手动复制也不是不能忍。但一旦你开始认真维护这些东西,比如:

  • 维护一份通用的 agent 行为规则
  • 给所有工具加同一个 MCP Server
  • 把自己常用的 skills 分发到不同 agent
  • 给团队成员同步一套默认配置

那手动复制就会变得很烦,而且很容易忘记自己到底改过哪里。

Plexus 的思路是:不要让每个工具各自漂移。先把配置整理到一个本地统一源里,再投射回每个工具自己的原生路径。


最短使用路径

目前 Plexus 还是 alpha 阶段,可以先从源码启动:

git clone https://github.com/miniLV/Plexus.git
cd Plexus
npm ci
npm run dev

然后打开:

http://localhost:7777

第一次使用时,可以直接点 Dashboard 右上角的 Share config everywhere

它会做三件事:

  1. 扫描本机已经存在的 AI Agent 配置。
  2. 把已有 Rules、MCP Servers 和 Skills 导入到 Plexus 的本地 store。
  3. 再同步到所有启用的 Agent。

如果多个 Agent 里已经有同名配置,但是内容不同,Plexus 会让你选一个 Primary Agent。比如你觉得 Codex 里的配置最完整,就可以选择 Codex 作为主来源。

这点很重要。因为“一键同步”最怕的不是没同步,而是不知道谁覆盖了谁。


Rules:一份规则同步到所有工具

比如 Claude Code 常用 CLAUDE.md,Codex / Cursor 常用 AGENTS.md,Gemini CLI 可能是 GEMINI.md

它们本质上都是 instruction file,只是文件名和路径不同。

Plexus 会把共享规则放在:

~/.config/plexus/personal/rules/global.md

然后同步到各个工具的原生位置:

~/.claude/CLAUDE.md
~/.codex/AGENTS.md
~/.cursor/AGENTS.md
~/.gemini/GEMINI.md

这样每个工具仍然读取自己熟悉的文件名,但背后可以指向同一份规则。

如果后悔了,也可以在界面里 detach,把某个 Agent 的规则文件重新变回本地独立文件。


MCP:为什么不能全部软链接?

这个地方是 Plexus 里最需要小心的部分。

有些工具的 MCP 文件是单用途文件,比如 Cursor 的:

~/.cursor/mcp.json

这种文件基本只放 MCP 配置,Plexus 可以比较放心地托管它:生成一份 cache 文件,然后让 Cursor 的 MCP 文件通过 symlink 指过去。

但有些工具不是这样。

比如 Claude Code 的配置文件可能是一个更大的 JSON,里面除了 MCP,还可能有 auth、history、profile、model settings 等等。Codex 的 config.toml 也类似,里面不一定只有 MCP。

这种文件就不能粗暴覆盖,也不适合直接软链接。

所以 Plexus 对 MCP 用的是 hybrid 策略:

文件类型 处理方式
专用 MCP 文件 cache symlink / copy
共享配置文件 partial-write,只改 MCP section

也就是说,对于共享配置文件,Plexus 只改自己负责的 mcpServersmcp_servers 那一段,其他内容尽量保持原样。

这也是为什么它不是简单写一个脚本 cp config A config B 就完事。


Skills:最适合用目录软链接

Skill 通常本来就是一个目录,里面有一个 SKILL.md,再加一些脚本、参考资料或模板。

所以它比 MCP 更适合共享。

Plexus 会把 skill 放在:

~/.config/plexus/personal/skills/<id>/SKILL.md

再同步到不同工具的目录:

~/.claude/skills/<id>
~/.codex/skills/<id>
~/.factory/skills/<id>

对于 Cursor 这种更偏 command 形态的工具,也可以投射到它自己的 commands 目录。

这里优先用目录级 symlink。如果系统不支持 symlink,或者目标环境不允许,就 fallback 到 copy。


一张图看懂架构

Plexus Config Sharing Map

Plexus 的核心分成三段:

  1. Native import:从已有 Agent 原生配置里导入。
  2. Canonical store:把配置整理到 ~/.config/plexus/
  3. Native projection:再投射回每个 Agent 自己会读取的位置。

中间的 canonical store 大概长这样:

~/.config/plexus/
├── config.yaml
├── team/
├── personal/
│   ├── mcp/servers.yaml
│   ├── rules/global.md
│   └── skills/<id>/SKILL.md
├── .cache/mcp/
└── backups/

这里分了两层:

  • team/:团队共享配置,比如统一的 rules、skills、MCP baseline。
  • personal/:个人配置,比如自己的 token、本机路径、私有 MCP。

如果 team 和 personal 里有同 ID 的配置,personal 会覆盖 team。这个逻辑很符合直觉:团队给默认值,个人做覆盖。


Team Config:团队里会更有用

单人使用 Plexus,主要是减少重复配置。

但我觉得它更有意思的地方在团队场景。

比如团队可以维护一个配置仓库:

agent-primer/
├── rules/global.md
├── skills/code-review/SKILL.md
├── skills/architecture-designer/SKILL.md
└── mcp/servers.yaml

每个人把这个 repo 作为 team layer 拉下来:

plexus join https://github.com/miniLV/agent-primer.git
plexus pull
plexus sync

这样团队新增一个 code-review skill,大家只需要 pull + sync,就能同步到 Claude Code、Cursor、Codex 等工具里。

当然,带 token 的东西不要直接放 team repo。比较好的做法是:team repo 里放 placeholder 和默认结构,个人在 personal/ 层补自己的 token 或本机路径。


安全和回滚

做这种工具,最怕一件事:帮用户同步配置,结果把原来的配置搞没了。

所以 Plexus 在写入 Agent 原生文件前,会先做 snapshot:

~/.config/plexus/backups/

如果目标位置已经有真实文件或目录挡住了 symlink,Plexus 不会直接覆盖,而是会移动到 collision 备份区:

~/.config/plexus/backups/_collisions/

Backups 页面里可以看到这些 snapshot,也可以恢复。

这个设计不花哨,但很必要。因为它管理的不是 demo 数据,而是你真实在用的 AI 工具配置。


适合谁?

如果你只用一个 AI 编程工具,而且配置也很少,那 Plexus 可能暂时没必要。

但如果你有这些情况,它会比较适合:

  • 同时用 Claude Code、Cursor、Codex 等多个工具
  • 经常维护 MCP Server
  • 有自己的 agent rules / skills
  • 希望团队共享一套 AI Agent 配置
  • 想知道每次同步到底改了哪些文件
  • 想要同步前自动备份,出问题能恢复

简单说,如果你已经开始认真维护 AI Agent 配置,那就值得试一下。


写在最后

Plexus 不是一个 runtime engine,不负责运行 MCP,也不替代 Claude Code、Cursor 或 Codex。

它更像一个本地配置中枢:把散落在不同工具里的配置收回来,整理成一份基线,再用尽量安全的方式同步出去。

这件事听起来不大,但每天在几个 AI 工具之间切来切去的人,应该会懂这种痛。

目前项目还在 alpha 阶段,很多地方还会继续迭代,比如更完整的 team flow、更多 agent adapter、更好的 diff / conflict UI,以及更方便的安装方式。

如果你也同时用多个 AI 编程工具,欢迎试试看。


项目地址:Plexus

团队配置示例:agent-primer

觉得有用的话,欢迎 Star ⭐