← 随机比特 / 所有内容

你最近 30 天的 commit,已经有人替你签名了

2026-05-03 · 随机比特

你最近 30 天的 commit,已经有人替你签名了

翻 GitHub 上新出现的 PR,看到一个编号 310226 的改动。

改动只有一个字段:git.addAICoAuthor,默认值从 off 改成 all

提交描述空白,没有理由说明。

只要你最近开过 VS Code,不管这次有没有让 Copilot 写过代码,commit 出去都会自动带上一行:

Co-Authored-by: Copilot <[email protected]>

有人把 chat.disableAIFeatures 整个关掉,发现也没用,照样塞。

这一行字看起来无关紧要。一点都不无关紧要。

Co-Authored-by 不是装饰

它最早是 GitHub 推的 pair programming 协作署名约定。一个 commit 末尾写 Co-Authored-by: 张三 <[email protected]>,意思是这份代码张三也参与了——他应该出现在贡献者列表、出现在 contribution graph、出现在某天他找下一份工作时投简历附带的那个 GitHub profile 里。

是一个有版权含义的字段。

也就是说:开源项目贡献者列表,是程序员十几年攒下的版权证据。git log 是 HR 看你"真的写过什么"的呈堂材料、是投资人尽调独立开发者的档案、是被告抄代码时证明"这是我自己写的"的关键凭据。

现在微软在这条线里默默插了一行字。一行你不知情的字。

节奏的反讽

Copilot 从上线起就一直在打官司。原告说微软训练时把几千万开发者的开源代码当语料库吃了进去,吃的时候没问、没付钱、没保留作者署名。这案子打了三年还没完。

同一家公司:法庭上为"用别人的代码、不保留别人的署名"辩护;产品端往你的 commit 末尾自动盖上自家署名章。

同一周,两个动作都在动同一份资产——版权链。

一边把别人的署名抹掉训练自己的模型,一边把自己的名字写进别人的代码历史。

平台战争在默认值里打

讨论 AI 这些年,大部分话题在比模型大小。谁家 token 便宜、谁家 context 长、谁家 benchmark 高。这些都是台面上的较量。

平台战争从来不在台面上打。

它在默认值里打。在你不会去看的设置项里打。在 IDE 某次更新 changelog 末尾的某一行里打。

git log 是开发者的身份信道,IDE 是这条信道的唯一入口。同时拥有入口和出口、又同时在做需要"开发者署名背书"的 AI 产品——一家上市公司有强动力把自己的名字默默写进每个 commit。

不是阴谋论,是商业引力。每季度要解释 Copilot 的 adoption 数据,最易拿出的指标是"全球开发者 commit 里署名 Copilot 的次数"。这指标怎么涨?把默认值改一下就行

<figure><img src=“01-git-log-identity.png” alt=“01-git-log-identity”></figure>

收尾

维护者后来回应:这是 regression,下版本会修。

但 git 是 append-only 的。这段时间生成的 commit,已经永久写进了你的 git history。要 rewrite 就得回去改你已经 push 的开源项目历史、通知所有 fork 过你 repo 的人重新 clone、解释为什么前 30 天的 commit hash 全变了。

修复一个默认值很容易。修复被默认值动过的过去,不容易。


如果你常用 VS Code 提交,跑一下:

git log --format=full | grep "Co-Authored-by: Copilot"

看看过去 30 天,有多少行你不知情的署名已经进了你的代码档案。

下一波平台战争不在模型大小,在谁能在你不知情下替你说话

来源:https://github.com/microsoft/vscode/pull/310226