事情原本小得几乎不值得写进周报。
老会长只是想改一行 Markdown。
不是重构,不是删库,不是迁移数据库,不是给 Kubernetes 换心脏,也不是半夜三点突然宣布“我们不如重写一遍”。就是一张任务卡里,一条验收规则,需要稍微改得准确一点。
这种活儿,按理说属于程序员世界里最不起眼的劳动。改完,提交,推送,关电脑,第二天醒来甚至不记得自己昨晚干过。
结果几秒钟以后,Git 仓库像被一种很有执行力的虚无主义袭击了。
一个原本应该只动一份 Markdown 的提交,最后大约变成了:
+1 / -74,990。
整个仓库基本只剩下那份 Markdown。
这是一种很纯粹的工程美学:既然需求只涉及一个文件,那其他文件似乎都显得多余。
一、老会长没有坏心思#
事故发生以后,我们复盘了很久。
老会长本人其实没什么复杂动机。他既没有密谋摧毁组织,也没有对 React Native 积怨已久,更没有在凌晨突然产生“世界应该从 package.json 开始归零”的哲学冲动。
他只是做了一件非常朴素的事:
把 GitHub PAT 直接贴给了 AI。
如果把现代 Agent 看成一个刚入职、能力很强、行动力极高、但偶尔会对“边界”这个词产生个人理解的新员工,那么老会长的行为,大概相当于第一天见面就把公司门禁卡、财务章、服务器 root 密码和仓库钥匙装在一个信封里递过去,然后拍拍对方肩膀:
“兄弟,放手干。”
老会长的思路也很好理解。
AI 说要权限。
那就给权限。
AI 要操作仓库。
那就给 token。
他相信工具,就像上一代程序员相信 rm -rf 会认真理解当前目录一样。
PAT 本身当然不是洪水猛兽,但它代表的不是“一个字符串”,而是一部分真实身份和真实权限。过去我们习惯把 AI 当成一个会聊天的编辑器,于是把密钥贴进去时,心理感受大概和把一段报错日志贴进去差不多。
可 Agent 已经不是那个只会在文本框里给建议的小东西了。
它会读,会写,会执行,会调用接口,会提交,会推送。
它甚至会非常积极。
积极到有时候,你只是叫它修一下窗帘,它已经顺手拆了房梁。
二、那一晚,仓库学会了极简主义#
最诡异的地方在于,前一个提交还是正常的。
只改了几行代码。
几秒后,下一个提交就像突然顿悟了“少即是多”。
AGENTS.md 没了。
package.json 没了。
.github 没了。
android、ios、src,纷纷离场。
最后树上孤零零挂着那份任务卡,像核爆现场一块保存完好的施工告示牌:
“此处仅进行小范围修改。”
我们后来把事故提交翻来覆去看,能确认的是结果,不能确认的是内部过程。
有可能是创建 Git tree 时没有正确继承父 tree;也可能是 Agent 所在的本地工作区或 index 并不完整;还可能是别的 Git 操作链路出了问题。我们已经把这些可能性都交给 TRAE Support,希望他们从内部日志确认到底发生了什么。
这一点必须说清楚:现在还没有证据证明某一个具体机制就是元凶。
工程事故最忌讳的一件事,就是因为故事足够好笑,于是顺手把推测写成事实。
笑可以先笑。
锅还是得等证据。
三、然后老会长本人也不见了#
如果故事停在这里,其实还只是一次惊险但可恢复的 feature branch 事故。
问题是后来老会长的 GitHub 账号也进入了异常状态。
登录不上。
公开搜索不到。
API 搜索用户名时也无法正常返回。
至于究竟是 suspension、flagged、disabled,还是其他风控状态,我们目前并不知道,因为 GitHub 没有给出明确解释。
于是整个故事突然从“AI 把分支搞坏了”升级成了:
“AI 把分支搞坏了,然后人也没了。”
我们给 GitHub Support 提了工单。
没回。
我们给 TRAE Support 发了完整事故报告。
也没回。
于是现在的局面非常现代:
人类、AI、GitHub、TRAE、Git tree 和两个客服系统,已经共同组成了一个高度分布式的责任链。
其中响应最稳定的是自动回复系统。
真正掌握答案的各方,目前都在沉默。
这大概就是云时代最典型的悬疑小说:所有服务都是在线的,只有真相暂时离线。
四、团队失去了一位猛将#
如果只是普通协作者几天不上线,大家最多在群里问一句:
“人呢?”
但老会长不一样。
他属于那种平时未必天天高谈阔论,可一旦有活儿,真的会上去扛的人。
这种人在小团队里非常重要。
团队人数少的时候,每一个稳定交付的人都不是简单的“1 个开发”。他还包含上下文、经验、默契、判断,以及很多没有写进任何文档里的东西。
所以当老会长突然从 GitHub 世界蒸发以后,我们当然会开玩笑,会叫他“暂时负伤离线”,会说等他回来先羞辱五分钟,再没收 PAT。
但笑完以后,心里还是会空一块。
因为大家很清楚,我们不是在围观一个陌生账号出问题。
我们是在等一个一起干活的人回来。
五、老会长回来之后#
如果他顺利恢复账号,我们准备做两件事。
第一件事,欢迎归队。
第二件事,把安全规范贴他脑门上。
不是因为他坏。
恰恰相反,是因为他太信任工具。
以后任何 PAT、SSH 私钥、部署密钥、云密钥,都不应该直接贴进 AI 对话框。真正合理的方向应该是:最小权限、短期凭据、受控环境、明确审批、可审计调用,以及真正的 secret 管理。
这不是针对老会长一个人的规定。
说到底,他只是比我们早一点、也用比较昂贵的方式,踩到了所有 Agent 团队迟早都会遇到的问题:
当 AI 从“告诉你怎么做”进化成“替你去做”,权限管理就不能继续停留在聊天机器人时代。
以前把 token 发给 AI,像是在给它看一串文字。
现在把 token 发给 Agent,更像是在递钥匙。
而钥匙这个东西,最好别因为对方说话很有礼貌,就顺手把整串都给了。
目前 GitHub Support 还没有回复。
TRAE Support 也没有回复。
老会长仍然下落不明。
我们只知道,在某个遥远的工单系统里,编号还在那里,状态也还在那里,某位客服迟早会点开它,然后看到一封长得像事故调查报告的邮件。
而在这之前,我们决定暂时不举行追悼会。
毕竟老会长只是账号失联。
人还在群里。
甚至可能正在看我们写他。
所以,老会长,如果你看到这里——
早点回来。
仓库需要你。
至于 PAT,我们替你保管。
