Git 冲突 50+ 到几乎为 0:我用「插件目录」架构解决了 AI 并行开发难题 🧩

:face_with_spiral_eyes: 痛点:AI 写太快,仓库炸了

事情是这样的。AI 写代码真的太快了,快到让人产生幻觉——“今天我能做 5 个新功能”。

然后现实打脸:50 个合并冲突 等着你。不是那种点两下就能解决的,是"修完能跑,但你不知道修对没"的那种。

更要命的是并行探索时的碰撞。大家最容易同时碰到那批核心文件:入口、公共逻辑、数据处理。AI 还爱顺手重构——改个函数名、挪个文件位置——合并完直接开盲盒 :wrapped_gift:

我们不缺开发速度。缺的是:多人 + 多 AI 并行探索时,怎么不把仓库炸掉。


:puzzle_piece: 方案:Core + Plugins 双区架构

一句话:把项目拆成稳定核心和隔离插件。

  • Core:尽量稳定、尽量少改
  • Plugins:所有新功能都在自己的小文件夹里写,物理隔离,互不打扰

唯一铁律:

:prohibited: 新功能只允许写在 plugins/xxx/ 里(以新增文件为主),禁止触碰核心文件。

:file_folder: 目录实战结构

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 并挂载。

千万别手写插件列表,不然入口文件又变冲突热点 :collision:


:light_bulb: 为什么能救命?Git 冲突的底层逻辑

Git 冲突很朴素:两个人改了同一个文件的同一段,就冲突。

以前的冲突多,是因为大家都在改"大家都要用的地方"——入口文件、公共逻辑、数据文件。这些是天然的冲突热点 :fire:

插件化之后:

  • :bust_in_silhouette: A 同学只动 plugins/feature_a/
  • :bust_in_silhouette: B 同学只动 plugins/feature_b/

物理路径完全不同,Git 基本没有冲突的理由。就算 AI 写炸了,也只炸自己的插件目录,不会拖垮整个项目 :white_check_mark:


:robot: 给 AI 划边界:提示词模板

把这段规则贴给 AI,能减少 80% 的越界修改:

:bullseye: 你现在在一个插件化项目里开发新功能。

:white_check_mark: 允许:在 plugins/<plugin_name>/ 里新增/修改文件

:cross_mark: 禁止:修改 core/ 下除"插件加载区"以外的任何代码;禁止重构、移动、重命名、删除现有文件

:clipboard: 必须:提供改动文件清单、运行方式,并确认没有越界修改

:warning: 如果必须修改 core/,请先写变更提案,不要直接动手

AI 一旦被画圈,突然就变乖了 :slightly_smiling_face:


:white_check_mark: 落地效果:3 个最爽的变化

  1. 并行开发真的并行

各写各的插件目录,互不干扰,再也不用排队等合并。

  1. 合并从"修半小时"变成"秒合"

新增文件夹合进来就行,冲突率趋近于 0。

  1. 探索成本断崖式下降

AI 可以随便试疯狂迭代,试烂了 rm -rf plugins/xxx 就完事,无副作用。

一句话总结:把冲突从"全项目到处炸"缩小成"几乎不炸" :bullseye:


:warning: 局限:这招不是银弹

插件化能解决的是多人并行写新功能时的文件冲突。

它不太能解决的是:多人同时修改同一份数据结构/数据库的情况。

比如:问卷系统要改 database 字段怎么办?


:file_cabinet: 数据库变更怎么办?版本化 + 迁移

核心思路不变:别在原地改,尽量新增版本。

:bar_chart: 问卷题库(配置数据)

不要改旧题库,直接新增版本文件:

questionnaire_v1.xlsx
questionnaire_v2.xlsx   # ← 新增,不删不改旧版

插件在 manifest.json 里声明自己用哪个版本。v1 插件继续跑,v2 插件并行开发,互不拖累。

:card_file_box: 数据库表结构(Schema)

如果真改到表结构(加字段、改表),用最朴素的迁移:

  • 每次变更新增一个文件:migrations/003_add_user_age.sql
  • 绝对不要回头改旧迁移文件

新增文件合并起来几乎不会冲突,而且还能追溯每次改了什么 :scroll:


:bullseye: 写在最后

没有银弹,但插件目录架构确实把合并地狱变成了可管理的并行开发。

如果你也在被 AI 的高频代码输出和 Git 冲突折磨,试试这个方案。把冲突关进笼子里,让开发回归并行 :rocket:


:pushpin: 你在并行开发中踩过哪些 Git 的坑?欢迎评论区交流 :backhand_index_pointing_down:

1 个赞

学习学习 收藏了!

1 个赞

晚点来看看

1 个赞