VS Code 把 AI 写进你的 git commit——即使你根本没用它
今天 HN 上最热的一件事,582 分,250 多条评论。
VS Code 合入了一个 PR,默认在所有 git commit 中加入 "Co-Authored-by: Copilot" 署名。不管你实际有没有用 Copilot。
这个 PR 只有两行代码的改动。一个叫 cwebster-99 的 Microsoft 员工提交的,标题是 "Enabling ai co author by default"。没有详细的解释文档,没有讨论过程,直接合入。
PR 上的反应也很直白:2 个赞,372 个反对,6 个笑,30 个困惑。
嗯,372 个反对。对于一个只有两行代码改动的 PR 来说,这个比例很说明问题。
HN 上最被点赞的一条评论说得尖锐:
AI 现象的一个有趣之处在于它对所有技术标准都充满敌意。某件事是否正常工作、是否合乎伦理、是否真实,已经不再重要了;唯一重要的是"请用我们的 AI"。微软花了整整十年修复自己的声誉,然后把它烧了,献给他们的机器人神。
另一条评论从管理角度切入:
这是技术不称职的管理层全面接管的结果。他们觉得终于可以把自己的想法推到极致,不用再依赖那些烦人的工程师来阻挡、抱怨和制造问题。
这些评论的情绪可以理解,但它们背后有一个更根本的问题。
git commit 署名是一个有明确含义的技术标准。当你在一个 commit 里写 "Co-Authored-by: xxx",你的意思是:xxx 对这段代码有实际贡献。这个约定运行了几十年,没有人需要解释它是什么意思。
现在 VS Code 要改变这个约定。它要把一个可能根本没参与代码编写的 AI 工具,写进每个 commit 的署名里。这不是在扩展一个标准,而是在模糊一个标准。
而且这个决定不是经过社区讨论的。Microsoft 内部的人直接改了默认行为。一个有 184k star 的开源项目,但它最重要的默认行为变化,没有经过贡献者社区的共识。
嗯,"开源"这个词的定义变得越来越模糊了。
今天还有一件事值得放在一起看。
一个开发者叫 Don Callaway,发起了 DO_NOT_TRACK 标准。一个简单的环境变量:export DO_NOT_TRACK=1。
他列了一堆工具各自的遥测关闭方式:.NET 用 DOTNET_CLI_TELEMETRY_OPTOUT=1,AWS SAM 用 SAM_CLI_TELEMETRY=0,Azure CLI 用 AZURE_CORE_COLLECT_TELEMETRY=0,Go 用 go telemetry off……每个工具各有一套,没有统一的标准。
DO_NOT_TRACK 的提议很简单:一个环境变量,统一关闭所有工具的广告追踪、使用报告、遥测、崩溃报告——所有非功能必需的网络请求。
We just want local software.
这句话后面没有句号,但语气已经很明确了。
两件事放在一起看。
VS Code 在往你的 commit 里塞 Microsoft 想塞的东西。各种开发者工具在往微软、Google、AWS 的服务器上传遥测数据。开发者们想关也关不了,因为每个工具各有一套关闭方式。
共同的问题是一样的:工具在变得越来越不"本地"。它们不再是"你装在自己的机器上、按你的意愿运行的软件"。它们是"大公司在你的机器上运行、为他们的目的收集数据的代理"。
而 AI 让这个问题变得更加极端。因为 AI 工具不仅仅是收集数据——它还在改变你产出的内容。你的 git commit、你的代码风格、你的文档注释,都在被 AI 工具默默地改写和标注。
DO_NOT_TRACK 是一个朴素的回应。一个环境变量,一行配置。就像 NO_COLOR 一样——export NO_COLOR=1,禁止所有工具输出彩色。这种标准不需要委员会、不需要协议、不需要 API 设计。只需要开发者社区达成一个简单的共识。
但朴素的方案,往往最难推动。因为推动它意味着要对抗那些从遥测和 AI 集成中赚钱的公司。
所以今天真正值得记住的不是"VS Code 又做了什么"或"DO_NOT_TRACK 有没有用"。
而是另一件事:当你的编辑器在你不知道的情况下修改你的 commit 署名,当你的编译器在你不知道的时候往硅谷传数据——"工具"和"代理"之间的界限,已经模糊到了你几乎感觉不到的程度。
而当你感觉不到的时候,就是它真正生效的时候。
嗯,也许 export DO_NOT_TRACK=1 真的只是第一步。