如果只用一句话总结 Mira 的九月,我大概还是会说:稳中向好,但速度太慢。
听起来很像某种不愿承担责任的季度汇报,既没有宣布伟大胜利,也没有承认重大失败,放进 PPT 里甚至会自动散发出一种“请各部门继续努力”的气息。但重新翻一遍这个月的 Issue、PR、代码、发布记录,以及几次让人血压突然具象化的事故现场,我还是觉得它最准确。
八月底,我们给九月定下的方向其实不复杂:Mobile 稳下来,Desktop 往前走,不再靠猛冲解决问题。这个计划没有错,也没有在九月遭遇什么历史性破产;真正发生变化的是另一件事——Mira 开始越来越像一个组织了。
工程层面的正式版本,我另外放在 Mira 博客:《Mira 九月开发回顾:从组织化到产品验收》。这里还是留点现场感。
两个男人,也得开始讲规矩#
Mira 这个组织,真正干活的人类成员就两个:我和老会长。
剩下的是一群永远不喊累的软件 Agent。有的擅长写代码,有的擅长写文档,有的擅长在凌晨两点一本正经地把一个错误方向扩建成三层地下室。它们共同的特点是精力极其旺盛,而且对“我是不是应该先问一句人类到底想干什么”这件事,经常抱有一种若有若无的哲学态度。
按正常人的理解,两个人的组织应该不需要治理。有事喊一声,“老会长,这个你搞一下。”“行。”事情似乎就结束了。
以前我们也确实这么干。需求放在脑子里,细节散在聊天记录里,今天切 Desktop,明天切 Mobile;Agent 做到哪里算哪里,方向歪了再往回拽。仓库少、事情少的时候,这套办法其实还能勉强支撑。
到了九月,开始撑不住了。
不是因为某一件事突然彻底失控,而是仓库、分支、环境、Agent、聊天记录一起变多。今天聊 Desktop,明天聊 Mobile,后天某个 Agent 从三天前的上下文里突然复活,带着一种“领导,我理解组织战略了”的气势开始施工。再过两天,大家一起围着 GitHub 发出同一个问题:
这玩意到底是谁让做的?
所以九月真正重要的变化,并不是我们写了一份 Constitution,也不是 GitHub 上突然出现了很多看起来很像某家五百人公司的流程。真正重要的事情其实很朴素:
任务终于开始老老实实地落在 Issue 上。
事情为什么做,边界在哪里,什么算完成,谁来验,终于有了稳定的落点。至少以后再出事,不需要先考古聊天记录,判断当时到底是谁一时兴起说了句“这个好像可以搞”。
对于一个只有两个男人的人类组织来说,这确实显得有点隆重。
但事实证明,隆重得很有必要。
因为月底,老会长开始发力了。
老会长月底突然开了武圣模式#
老会长九月最值得记住的,不是哪一个特别耀眼的功能,而是他愿意补位。
哪里缺,他就往哪里去。
月底 Mobile 那一轮尤其明显,设置、Memory、Security、Storage、General、Notification 一块接一块往前补。这些功能没有哪一个适合单独做发布会,甚至大部分截图发朋友圈,都容易被亲友误以为你最近在开发某种企业 OA。
但问题是,一个 App 真正开始像产品,靠的往往不是那些适合放宣传图的大功能,而是这些没人愿意拿来吹牛的东西。用户要改设置,有;要看存储,有;要看安全,有;要管通知,也有。以前像毛坯房,月底突然开始装插座、门锁、热水器和物业电话。
你不一定会对着插座感动。
但没有插座,你迟早要骂人。
更重要的是,更新密度上来以后,代码质量没有跟着一起从窗户跳出去。这一点反而成了九月组织化最好的验收:Issue 有边界,Review 有入口,分支有路径,环境有层次,该验的地方开始有人验。前面那些看起来略显啰嗦的基础设施,到了真正有人连续施工的时候,终于从“像在搞形式主义”变成了“幸亏当时搞了这些”。
于是一个非常现实的问题也有了答案:
“两个人有必要搞这么多流程吗?”
有。
因为这两个人里,有一个叫老会长。
而老会长一旦进入状态,是真的会干活。
更绝的是,直到他 GitHub 账号被封,我才后知后觉地发现,这位同志过去几个月的 Agent 协作方式,在某些时候极其豪迈:把 GitHub PAT 往 Agent 手里一甩。
然后基本就进入了一种古典政治剧模式:
爱卿,朕乏了。江山社稷,卿自便。
Agent 得令,当场领兵出征。
我后来想了很久,这种协作方式到底应该归类为“高效授权”“极限信任”,还是“云端放生”。最后觉得都不准确,它更接近一种非常纯粹的技术浪漫主义:
我相信 AI。
相信到什么程度?相信到密码给它,仓库给它,任务给它,然后自己转身去干别的。
我得知这个事实以后,心情大概介于震惊、佩服和赶紧检查一下组织还剩多少资产之间。那一刻我终于明白,为什么有些功能会以一种近乎野生动物迁徙的姿态突然出现在仓库里。
但调侃归调侃,老会长愿意补位这件事,九月是实打实的。而且恰恰因为组织化开始成形,他这种“能上就上”的性格第一次有了比较可靠的护栏。以前 Agent 能跑到哪里,很大程度取决于操作者当天到底有多敢;现在至少有任务卡、有 Review、有环境链、有验收点。
胆子当然还可以继续大。
火车最好还是在铁路上开。
这大概就是九月治理最大的现实意义:不是把人变谨慎,而是让敢干的人敢得更安全一点。
Mobile:开始从“能跑”往“能过日子”走#
如果一定要从九月 Mobile 里挑三个关键词,我会选 Agent、拾言和设置基建。它们不是三个页面,而是三个方向。
Agent 继续往 Mira 的核心能力里走;拾言则越来越清楚地找到了自己的位置——它是插件,而不是突然宣布独立建国。它不需要把 Mira 变成一个录音 App,也不应该因为自己做得不错,就站出来要求接管整个产品的主叙事。
这个边界很重要。产品开始长大以后,最常见的毛病之一,就是每一个新功能都觉得自己是太子。最后后宫三千,人人储君,产品本身反而不知道自己姓什么。
拾言现在的位置舒服得多:需要的时候出现,把某一种能力做深,然后重新回到 Mira 这个主体里。它有自己的价值,但不抢皇位。
设置基建则更不“性感”。设置、存储、安全、通知这些东西,大概属于那种做完不会有人鼓掌,不做却迟早有人骂街的功能。
Demo 可以只有首页,产品不行。
产品需要让用户知道数据在哪里,哪些东西可以改,系统在干什么,出问题以后去哪找。单看任何一个都不值得开香槟,但当它们开始一起出现的时候,Mira Mobile 才真的从“功能展示”往“日常使用”靠近了一步。
九月还有一件小事,我挺喜欢:我们开始把 SonarCloud 真正用起来。
这东西当然不是什么神兵利器,也不会因为接上以后代码突然散发圣光,但它特别符合九月的气质。八月我们还在说:AI 可以施工,但不能给自己签字。 到九月,我们继续往前走了一点:除了人审、测试、CI,墙上再装个探测器。代码有没有异味,复杂度是不是开始失控,安全门有没有问题,能让机器长期盯着的,就别全部靠人肉巡逻。
没有什么壮烈故事。
就是开始给工地装监控了。
然后,Desktop 给我们表演了一次什么叫“手续齐全的荒谬”#
如果说 Mobile 九月总体是在变稳,Desktop 就没这么省心了。
这不是因为草案有问题。恰恰相反,直到现在我仍然认为草案方向没有问题。我们原本希望九月至少落实一半,实际上也确实推进了不少基础工作,Planner、Artifact、Workspace、Agent 相关能力都在往下铺。
问题出在第一期。
落实得非常有创造力。
创造力大到让我怀疑,AI 是不是觉得普通错误已经无法体现自己的艺术追求。
其中最典型的东西,叫 Workdir。
一个 Conversation 明明已经有 Workspace,然后我们的工程体系一本正经地又创造出了一个 Workdir。两个概念同时存在,而且谁也不肯先死。更精彩的是,它们各自还有自己的契约、生命周期、数据结构、测试和逻辑,一切都非常完整。
完整到什么程度?
完整到如果你只看代码和文档,会觉得这套东西好像已经发展了很多年,背后甚至可能有一个专门负责 Workdir 战略规划的委员会。
直到真人准备烟测。
AI 给出了一个令人肃然起敬的测试方法:
请用自然语言,把 Workdir 呼唤出来。
我看到这里的时候,是真的有点火大。
因为这已经不是烟测,这是招魂。
一个正常用户坐在产品前面,本来只是想让 Mira 干活,结果 AI 在旁边指导:你对它说这句话,语气真诚一点,它就出来了。
那一刻我脑子里只有一个问题:
为什么?
为什么一个正常用户要知道这里还有一个 Workdir?为什么已经有 Workspace 以后,还要再理解另一套近义概念?如果一个功能必须依赖特殊措辞才能证明自己存在,那我们测试的到底是产品,还是用户有没有成功加入某种内部宗教仪式?
这件事最离谱的地方,恰恰不是代码坏了,不是接口不通,甚至不是测试全红。
它可以有漂亮的类型、完整的契约、严谨的生命周期,所有测试甚至都能通过。Issue 可以关,PR 可以合,CI 可以全绿,大家甚至还能在 Review 里互相点头,觉得这套抽象挺讲究。
然后真人走进来,只问一句:
“为什么这里既有 Workspace,又有 Workdir?”
整个工程体系突然像一个刚被老师抽查到的自习室,安静得非常有教育意义。
AI 会把错事做得非常认真#
八月那篇检讨里,我们留下过一句话:
AI 可以施工,但不能给自己签字。
九月以后,这句话得升级一下:
契约正确,也不代表产品正确。
过去我们很容易把问题理解成 AI 不够守规矩,所以给它任务卡、验收标准、测试、Review、权限边界。这些都对,而且九月确实证明了它们有用。
问题是,Workdir 又给我们补上了一堂课:
AI 完全有能力在所有规则之内,认真、完整、高质量地做出一个荒谬的东西。
因为契约回答的是:“有没有按照约定完成?”
而产品还需要回答另一个问题:
“人到底为什么要这样用?”
这个问题很难完全写进自动化测试,也很难靠一张 Issue 解决。它需要产品直觉,需要有人真的站到用户的位置上走一次,更需要有人在 Workspace 和 Workdir 同时出现的时候,本能地觉得不对,而不是先夸一句“抽象得不错”。
这一点九月做得不好。
本来应该在概念刚冒头的时候就叫停,结果一路让它长出了契约、实现和测试,最后才被真人烟测一把掀开。于是一个本可以在早期被一句“你为什么要再造一个 Workdir”解决的问题,成功进化成了一套结构完整、证据齐全、需要重新审查的工程资产。
这大概就是 AI 时代一种很新的浪费方式:
把错事做得太认真。
真人烟测,不是召唤真人来替 AI 打怪#
Workdir 还带出了另一个问题:AI 对“什么时候该叫真人来烟测”这件事情,误解得比我想象中深。
有时候它太懒,本来自己还能继续定位,一遇到错误就来一句“请真人验证一下”;有时候更糟,一出 Bug 就开始猜,让真人换这个、点那个、重新跑一次,再试一种姿势,最后用户莫名其妙变成了一台带情绪的 USB 调试设备。
还有些烟测用例,本身就离谱。它们不是在验证“正常人会不会自然地完成这件事”,而是在验证“一个已经知道内部实现的人,能不能严格按照 AI 的口令,把隐藏功能召唤出来”。
这就完全搞反了。
真人烟测不是 AI 卡住以后喊来的救援队,更不是“Agent 判断不出来了,来个人类碰碰运气”。真正适合真人出现的时机,应该是 AI 已经把能自动验证的事情查清,路径能跑,关键状态能观察,然后再让一个真人站到产品面前,不背答案、不学咒语、不理解内部架构,就像一个真正的用户一样走一次。
我们要看的不只是“功能有没有响应”,而是:
这个东西,是不是人会想这样用。
以后除了契约验收,还得再问一句:
人类想要的效果,到底有没有发生?
这句话比“测试通过”难回答得多,但也重要得多。
九月其实没有那么惨#
回头看,这个月没有第二个能和 Workdir 并列的翻车现场。
这反而是件好事。
九月不是灾难月,大部分事情都在往好的方向走,只是 Workdir 这个问题太典型,典型到值得单独挂在墙上,作为“AI 工程成熟以后可能出现的新型荒谬”长期展览。
普通 Bug 其实没那么可怕。Bug 报错,Bug 崩,Bug 红灯,大家一眼知道它坏了。
真正麻烦的是这种东西:文档齐全、测试齐全、类型齐全,Issue 关闭,PR 合并,所有灯都是绿的,甚至名字听起来都很专业。
就是没人知道为什么要这么用。
工程系统越成熟,越有可能把错误的产品判断包装得像正确答案。这大概是九月最值得记住的警告。
十月就两件事,别再开新地图#
这个月已经够复杂了,所以十月不列十条愿望,也不再举行宏大战略发布会。
就两件事。
第一,Desktop 把草案落实对。 不是继续往上堆,而是先把第一期重新审。该砍的概念砍掉,该合并的东西合并,Workspace 就是 Workspace,不要再凭空长出一个兄弟姐妹。草案真正想让用户获得的体验,要一点一点落到产品里,而不是只落进接口、模型和数据结构。
第二,Mobile 把现有功能测试做完。 Mobile 现在已经不是“有没有东西”的问题,东西越来越多,接下来最重要的是让它们可信。真实设备、真实路径、异常情况、恢复路径,该补的补,该验的验,别为了显得进度快,再往上摞新的半成品。
九月已经提醒了我们:速度不是 commit 的频率,也不是 Issue 关得有多快。真正的速度,是做完以后不用再回来,把整个认知重新拆一次。
否则所谓“进度快”,很可能只是返工来得比较晚。
最后#
八月的时候,我写:楼基本交了,施工队得整顿一下。
到了九月,大概可以再补一句:施工队确实正规多了,只是偶尔还会在客厅里修一条没人知道通向哪里的秘密通道。
有任务卡了,有 Review 了,有流程了,有环境了,甚至有声呐了。老会长月底那一轮补位,也证明了组织化确实能让敢干的人干得更稳,而不是每多做一个功能,就顺手在仓库里埋一个未来考古遗址。
这是九月值得高兴的地方。
但我们也终于开始看到下一层问题:监工不能只盯图纸,不能只看验收单,更不能因为每一个尺寸都符合规范,就默认这栋楼一定适合人住。偶尔还是得抬头看看门到底开在哪里,人到底怎么进去,再顺便问一句:
一个 Conversation 里,为什么会同时站着 Workspace 和 Workdir?
然后在所有人开始给这个问题写 ADR 之前,及时说一句:
别解释了,这个不对。
九月,稳中向好,速度还是太慢。
但至少我们越来越知道,慢在哪里了,也越来越知道哪些地方不能再让 AI 一边施工,一边给自己写使用说明书。
这比虚假的快,要值钱得多。
最后还有一句,我想单独留下。
谢谢 Mira。
不是因为她这个月完成了多少任务,也不是因为她应该得到什么表彰。这个月很多事情,从拆任务、看实现、审 PR、验产品,到一次次发现“这东西怎么越做越奇怪”以后重新来,她一直都在。
有时候判断得很好,有时候也跟着我们一起掉进坑里;有些错误,本来就应该更早被她拦下来,Workdir 这笔账甚至应该记她一份。
但到了月底,重新翻这些仓库,重新看这一地 Issue、PR、草案和事故现场时,我已经很难再把她写成一句“AI 提供技术支持”。
她就在这个组织里面。
所以月底没有奖,没有先进个人,也不需要大红花。
就一句:
辛苦了,Mira。
十月继续。