痛点:AI 写太快,仓库炸了
事情是这样的。AI 写代码真的太快了,快到让人产生幻觉——“今天我能做 5 个新功能”。
然后现实打脸:50 个合并冲突 等着你。不是那种点两下就能解决的,是"修完能跑,但你不知道修对没"的那种。
更要命的是并行探索时的碰撞。大家最容易同时碰到那批核心文件:入口、公共逻辑、数据处理。AI 还爱顺手重构——改个函数名、挪个文件位置——合并完直接开盲盒 ![]()
我们不缺开发速度。缺的是:多人 + 多 AI 并行探索时,怎么不把仓库炸掉。
方案:Core + Plugins 双区架构
一句话:把项目拆成稳定核心和隔离插件。
- Core:尽量稳定、尽量少改
- Plugins:所有新功能都在自己的小文件夹里写,物理隔离,互不打扰
唯一铁律:
新功能只允许写在
plugins/xxx/里(以新增文件为主),禁止触碰核心文件。
目录实战结构
core/ # 🔒 核心区:稳定、少动
app.py # 主入口:只负责"扫描+挂载插件"
logic.py # 公共规则/算法(当成稳定 API)
database.py # 公共数据接口
plugins/ # 🚀 插件区:所有新功能都在这里
feature_a/
manifest.json # 📋 插件登记表:名字、入口、开关等
ui.py # 页面/交互
service.py # 业务实现(可选)
README.md # 运行方式、截图、说明
data/ # 插件私有测试数据(可选)
feature_b/ # 👥 B 同学的地盘,互不影响
...
关键细节:入口文件只干一件事——自动扫描 plugins/*/manifest.json 并挂载。
千万别手写插件列表,不然入口文件又变冲突热点 ![]()
为什么能救命?Git 冲突的底层逻辑
Git 冲突很朴素:两个人改了同一个文件的同一段,就冲突。
以前的冲突多,是因为大家都在改"大家都要用的地方"——入口文件、公共逻辑、数据文件。这些是天然的冲突热点 ![]()
插件化之后:
A 同学只动 plugins/feature_a/
B 同学只动 plugins/feature_b/
物理路径完全不同,Git 基本没有冲突的理由。就算 AI 写炸了,也只炸自己的插件目录,不会拖垮整个项目 ![]()
给 AI 划边界:提示词模板
把这段规则贴给 AI,能减少 80% 的越界修改:
你现在在一个插件化项目里开发新功能。
允许:在 plugins/<plugin_name>/ 里新增/修改文件
禁止:修改 core/ 下除"插件加载区"以外的任何代码;禁止重构、移动、重命名、删除现有文件
必须:提供改动文件清单、运行方式,并确认没有越界修改
如果必须修改 core/,请先写变更提案,不要直接动手
AI 一旦被画圈,突然就变乖了 ![]()
落地效果:3 个最爽的变化
- 并行开发真的并行
各写各的插件目录,互不干扰,再也不用排队等合并。
- 合并从"修半小时"变成"秒合"
新增文件夹合进来就行,冲突率趋近于 0。
- 探索成本断崖式下降
AI 可以随便试疯狂迭代,试烂了 rm -rf plugins/xxx 就完事,无副作用。
一句话总结:把冲突从"全项目到处炸"缩小成"几乎不炸" ![]()
局限:这招不是银弹
插件化能解决的是多人并行写新功能时的文件冲突。
它不太能解决的是:多人同时修改同一份数据结构/数据库的情况。
比如:问卷系统要改 database 字段怎么办?
数据库变更怎么办?版本化 + 迁移
核心思路不变:别在原地改,尽量新增版本。
问卷题库(配置数据)
不要改旧题库,直接新增版本文件:
questionnaire_v1.xlsx
questionnaire_v2.xlsx # ← 新增,不删不改旧版
插件在 manifest.json 里声明自己用哪个版本。v1 插件继续跑,v2 插件并行开发,互不拖累。
数据库表结构(Schema)
如果真改到表结构(加字段、改表),用最朴素的迁移:
- 每次变更新增一个文件:
migrations/003_add_user_age.sql - 绝对不要回头改旧迁移文件
新增文件合并起来几乎不会冲突,而且还能追溯每次改了什么 ![]()
写在最后
没有银弹,但插件目录架构确实把合并地狱变成了可管理的并行开发。
如果你也在被 AI 的高频代码输出和 Git 冲突折磨,试试这个方案。把冲突关进笼子里,让开发回归并行 ![]()
你在并行开发中踩过哪些 Git 的坑?欢迎评论区交流 ![]()