开发向 · 第 4 篇

把开发能力从某台机器上解绑:多设备治理方法论

设备是可替换的厨房——值钱的是菜谱,和你的手艺。

START

最后一道坎,是你自己被绑在了那台机器上

前三篇你已经能把代码拉下来跑通、两台机器并行不弄乱、带着人一起干还不失序。最后这道坎,是你自己——

我的时间是碎的。有空的时候手边未必是"那台开发机",等回到它跟前,那股劲儿早过去了。想在公司再放一台,又怕两边对不上;想换新电脑,一想到环境要重配一遍就拖着;最怕的是哪天它坏了——我不知道有多少东西只存在于那块硬盘上。

大多数人的解法是把自己绑在那台机器上:背着它到处走、坏了就停工、换机时用迁移助理整机搬,顺带把旧环境的脏东西一起搬过去。

这一篇要换个思路。真正的目标不是"管好两台电脑的文件同步",而是让项目的完整状态活在云端,让设备退化成可替换的接入点。做到这一点,"我今天在哪台电脑前"就不再决定"我今天能不能开工"。

SCOPE

它到底解决什么(以及不解决什么)

做到之后,这几件事的性质会变

场景没这套能力有了之后
随时切进开发状态必须回到"那台机器"前,节奏被设备绑死手边有电脑就能开工,碎片时间真能用上
多地点办公背着唯一那台到处跑各处放一台配好的,哪儿方便用哪儿
设备故障 / 送修 / 丢失项目直接停摆,没推送的工作可能永久没了换台机器照清单重建,两小时恢复
换新机器整机搬迁,把旧环境的脏东西一起搬过去照清单重建,环境反而更干净
多一个人加进来手把手带,带一次忘一次同一份清单,对方自己就能跑通
AI 协作能力不衰减AI 的上下文散落在某台机器的对话记忆里上下文进了仓库,AI 跟着你换设备

什么人做这件事最划算

满足下面任意两条,性价比就很高:时间碎片化、长期打磨同一个项目(而不是一次性交付)、单人或小团队没有专职运维、用 AI 辅助开发、手上有两台以上设备或预期会换。

也诚实说清边界

以下情况收益有限,不必勉强:需要本地大体量数据或模型(几十 GB 起,同步成本高过收益)、依赖特殊硬件、保密要求限定代码只能待在指定设备、项目是一次性交付做完不再回来。

MODEL

三个云端锚点,和一个不对称

项目状态该待在哪

┌──────────────────────────────────────────────┐
│  图纸档案馆   ← 代码 + 文档 + 约定             │
│  那排货架     ← 业务数据(唯一真相)           │
│  施工规程     ← 项目说明(给人看,也给 AI 看) │
└──────────────────────────────────────────────┘
                     ▲
       ┌─────────────┼─────────────┐
     厨房 A        厨房 B        厨房 C
    (接入点)    (接入点)     (接入点)

设备上只该留两样东西:

  1. 认证凭据(密钥、那份密码单)——不进档案馆,每台单独配
  2. 生成物(依赖包、构建产物、数据库客户端)——不进档案馆,每台现做

其余一切都在云端。设备坏了、丢了、换了,损失的只是"重配一次"的时间。

最关键的一条:图纸能复印,货架只有一排

对外站点  ┐
          ├──→ 共用的后端 ──→ 同一排货架   ← 只有一个当下状态
内部后台  ┘

代码有 N 份(N 台设备),数据只有一份。

这个不对称,是所有多设备风险的总根源。档案馆天生支持"复印很多套图纸、各自标注、事后并回";货架不支持——它没有"另一个版本",谁在哪台机器上动了它,它就是真动了,立即、全局、所有人同时受影响。

记住这一句:版本管理管得住代码的分叉,管不住数据的分叉——因为数据根本不分叉。

RISK

不治理会发生什么(按危险度,从低到高)

先卸一个焦虑:分叉本身不是故障

两台机器各自提交,本地历史必然分叉。这是它的正常工作方式。问题从来不在"分叉了",而在"分叉多久才合":

分开时长合并成本
1 天自动合并,无感
1 周可能有冲突,十几分钟解决
1 月大量冲突,可能得手工重做一部分

合并成本随时间指数上升。这条决定了后面第一层纪律为什么最重要。

1低危

没推送的工作随设备一起消失

最简单也最致命:没送到档案馆的东西,只存在于那一台机器上。硬盘坏了就是永久丢失,版本管理救不了你——它只管进了档案馆的那些。

2低危

依赖漂移

两台机器各自领的那套酱油香料版本对不上,同一份菜谱做出不同的菜——就是那句经典的"在我机器上是好的"。锁定清单文件两边都可能改,不同步就会漂。

3中危

部署覆盖

很多项目的生产环境是直接对齐主线——那么主线就是线上。一台设备长期不同步,某天推送时被要求先合并,合并时若粗暴地"用我的版本",可能把另一台数周的工作抹掉——而且下一次部署就直接上线了。

4中危

AI 上下文失真

AI 读的是你本地的文件。如果本地落后两周:它读到的项目约定是旧的、数据结构是旧的、接口定义是旧的,然后它会非常自信地基于过时事实生成代码。

这比人犯错更危险。人会怀疑"我这信息是不是过时了";AI 不会——它只照着看到的干,而且语气笃定。你给 AI 配的环境有多新,它的判断就有多准。

5高危

共用部分的静默破坏

一台设备改了共用后端某个接口的返回结构 → 另一台负责的前端挂掉 → 而档案馆不会报任何冲突,因为那台机器压根没动这个文件。

它只管文本,不理解意思。能拦住"两个人改同一行",拦不住"我改的东西让你的代码失效"。

这正是专区第 2 篇里那个"最高危风险",到了多设备场景只会更隐蔽。

6高危

数据结构与本地代码脱节

一台设备改了数据结构并推到货架上:货架真的变了,立即、全局、不可回退到"另一个版本"。另一台的代码还是旧的,但它连的是已经变了的货架——运行时报错。

最麻烦的是报错信息通常指向别处。你在这台机器上看到一个莫名其妙的错误,完全想不到根因在另一台机器上。这就是为什么它排在最危险的位置。

HOW

五层治理(第一层做到位,后四层的必要性大幅下降)

1

第一层 · 节奏纪律(最重要,零成本)

git pull

git add .
git commit -m "做了什么"
git push

外加两条:小步提交(一件事一提交,不攒大包)、不隔夜(任何未推送的提交不过夜)。

不需要"实时同步"。它没有这个机制,也不需要。你只要保证"开始写新代码之前,手上是最新的",就挡住了绝大多数问题。追求"实时"反而会让你觉得这事很难很累,最后干脆放弃——能执行的纪律,胜过完美但做不到的目标。

2

第二层 · 边界纪律(降低冲突概率)

一个目录只有一个主人(专区第 2 篇的老规矩)。两台设备天然错开,档案馆层面就撞不上。把边界表写进项目说明文件(见下一节)。

额外一条容易被忽略:文档类改动单独提交、立刻推送。项目里那些大文档往往两边都会写,是最容易冲突的地方——比代码更容易。代码可以攒着慢慢做,文档改完就推。

3

第三层 · 高危操作的握手协议

专门针对"改了会全局生效"的那两样——数据结构、对外接口契约。

改动方必须:
  ① 动手前告知另一方
  ② 改完立即推送,不要攒
  ③ 明确通知:"我改了 X,请拉取 + 重新生成数据库客户端"
  ④ 对方确认完成后,才继续往下开发

这不是形式主义。货架只有一排,它一变,所有设备同时受影响。这也是唯一需要"人对人打招呼"的操作类型——其余靠目录边界和版本管理自动兜住,不需要额外沟通成本。

4

第四层 · AI 工作流纪律

让 AI 干活之前,先拉取。

把它写进项目说明文件,作为强制启动流程(见下一节),这样每台机器上的 AI 都会自动执行。

为什么写进文件、而不是靠自己记:这条规矩的执行者是 AI。写进去,它每次会话自动做,你不用每次提醒。用文件管规矩,比用记忆管规矩可靠。

5

第五层 · 工具化(可选,按投入从低到高)

措施投入收益
自动质检线(每次提交自动跑一遍构建)半天配置拦住"另一台的改动把这边构建搞挂了"
周度巡检(查绕过约定的提交、僵尸分支、敏感文件)每周 10 分钟及早发现纪律滑坡
分支保护 + 强制送审需付费档把"约定"变成"规则",不会被赶工期绕过

把规矩写进"项目说明文件"

这是整套方法论最"授人以渔"的一件事:让规矩随代码走,而不是随人走。

在项目根目录放一个给 AI 读的说明文件,把下面两段写进去——一个说"边界在哪",一个说"怎么保证边界被遵守"。建议放在同一次提交里。

## 新会话启动流程(强制)

任何会话开始时,先执行以下动作,输出状态简报后再执行我的指令:

1. 拉取主线最新代码
2. 看最近 5 条提交记录 —— 了解另一台设备最近做了什么
3. 若这次拉取带来了数据结构变动 → 立即重新生成数据库客户端
4. 查看工作区状态,确认有无遗留

理由:本项目由多台设备并行开发,AI 的判断完全基于本地文件。
不先同步,就是在过时的事实上做决策。

## 多设备开发边界

| 区域 | 设备 A | 设备 B | 规则 |
|---|:---:|:---:|---|
| 对外站点目录 | 主责 | 不碰 | |
| 内部后台目录 | 不碰 | 主责 | |
| 共用接口文件 | 需知会 | 主责 | 契约文件 |
| 数据结构定义 | 共管 | 共管 | 改前必须双方对齐 |
| 文档类大文件 | 都可写 | 都可写 | 单独提交、立刻推送 |

### 三条硬约束

1. 数据结构「只增不改」:加可选字段安全;改名/删除/改类型属破坏性变更,
   必须提前告知 + 同一次提交内改完所有调用处 + 通知对方重新生成客户端。
2. 对外接口只增不改:前端已在消费现有接口,加新接口比改老接口安全得多。
3. 不跨界修改:改 A 模块时不该动 B 模块的文件,反之亦然。

这份文件的妙处在于:它同时是给人看的规矩、和给 AI 执行的指令。你写一次,两台机器上的 AI 每次会话都会照做——这比你自己记得住可靠得多。

落地清单

每次开工(30 秒)

拉取最新 → 扫一眼最近提交,知道对方做了什么 → 若有数据结构变动,重新生成数据库客户端

每次收工(1 分钟)

查看工作区状态确认没有遗留 → 提交 + 推送,不留未推送的提交过夜

每周(10 分钟,项目负责人做)

查有没有绕过约定的直接提交 → 查提交署名是否都是实名账号 → 清理已合并的僵尸分册、确认长期未合的是否废弃 → 查有没有密钥、密码单之类的敏感文件混进了历史

新设备接入(一次性,约两小时)

四件事:① 配置提交身份——邮箱必须与你的托管账号一致,否则历史归属会丢;② 生成本机独立的密钥——不要拷贝其他设备的私钥;③ 配置那份密码单——走密码管理器传,禁止走聊天工具明文发;④ 重建全部生成物——装依赖、构建内部包、生成数据库客户端(菜谱到了,菜要在这个厨房现做)

NEXT

专区收官:这四篇合起来是什么

从"代码不在你电脑上"开始,到并行不弄乱、到多人协作不失序、再到把开发能力从机器上解绑——这四篇合起来,就是让 AI 替你造工具之前,需要补的那几样工程底子。

到这里,你已经不再被"我不会那些工程动作"挡住了。

这套方法论真正沉淀下来的五句话

  1. 这本质上是"环境即代码"的入门版。 把"这个项目怎么跑起来",从个人记忆和口口相传,变成可执行的文档 + 可复现的步骤。记忆会遗忘、会失真、不能传递;文档可以版本化、可以被 AI 读、可以交给下一个人。
  2. 设备是接入点,不是资产。 值钱的是云端的项目状态,和你脑子里的方法论,不是那台机器。想通这一点,换设备、设备故障、多地办公,全都从"灾难"降级成"流程"。
  3. 能执行的纪律,胜过完美但做不到的目标。 "开工先拉取"能坚持,"实时同步"坚持不了。选前者。
  4. 需要人打招呼的操作,只有一类——改了会全局生效、且不可分叉的东西:数据结构、对外接口契约。 其余交给边界和工具。
  5. 用文件管规矩,比用记忆管规矩可靠。 尤其在 AI 辅助开发下——写进说明文件的规矩,AI 每次会话都会执行;只在你脑子里的规矩,换台设备就失效了。