最初做 Mira,并没有什么完整的产品叙事。

它在项目里叫作 rag-demo,源于一项被忽悠出来的任务。有人在客户面前吹嘘,某某功能“三天就能做出来”。而我作为当时唯一在场的技术,在没有任何资源的情况下,开始了这场探索。

我十分反感这种忽悠。尽管在内心深处,我也认为自己或许需要学会一点忽悠的本事,但这样的忽悠,实在太过离谱。

随着工作推进,不出所料,我没有完成那个预期三天交付的忽悠工程,反而完成了对这场忽悠的彻底拒绝。

与此同时,我又开始接受另一种来自焦虑和自媒体的忽悠:猪都能借助 AI 飞上天,那么,我加上 AI,边界究竟能去到什么地方?

这大概就是 Mira 最早的由来。

它不是从产品规划开始的,也没有经过什么严谨的市场分析。一开始只是一个有点不服气的问题:以我现有的能力、经验和资源,借助 AI,究竟能把一件事情做到什么程度。

这个问题如果只停留在想象里,大概永远不会有答案。总要真的做出一点东西,看看它能不能运行,能不能解决问题,最后又会坏在什么地方。

只是当时的我,对“做出一点东西”存在很深的误解。


2025 年 4 月,我还在用近乎石器时代的方式,一点点手写 UIChat 的第一代。后来我在 Hugging Face 上看到 DeepSeek 生成的页面,一时惊为天人。

于是开始迭代。

一个版本接一个版本,最后迭代了五十多个版本。我没有因此成为更成熟的开发者,先把自己做燃尽了。

之后整整十三个月,我不想再碰代码。

偶尔打开编辑器,也很难真正开始工作,只会迅速陷入一种深刻的苦恼。那些以前熟悉的文件、组件和报错,突然都变成了某种压力的来源。

那段时间,我练毛笔,下围棋,看脑残短剧。什么都可以做,唯独无法再和代码相处。


这次重新开始写代码时,我一开始并没有抱太大的乐观。事实上,三十天后再回头看,才发现当时还是乐观过头了。

我借助 GPT,疯狂补这十三个月里发生的变化。

坐在电脑前和它聊,躺在床上也和它聊;一边敲代码,一边追着各家 AI 问问题。甚至在半睡半醒、被疼痛弄醒的时候,也要顺手刷几篇自媒体制造焦虑的文章。

今天一个拳打 GPT,明天一个脚踢 Claude,后天那个脚踢 Claude 的,又被 GPT 给干掉了。

很好。

这样一来,我就又有了起床的动力。

事实也在不断印证这种变化。

当初那个让我惊为天人,最后又间接把我送进燃尽状态的 DeepSeek 生成界面,后来成了我最反感的东西之一。

在熟悉了各种“暴打”“碾压”之后,B 站也终于不再坚持给我推送 AI 新闻,转而开始推荐擦边视频。

仿佛算法也觉得,我确实应该休息一下。


而 Codex 和 GPT 也开始说各种胡话,一遍又一遍把我带进新的深坑。

它们很擅长发现问题,也很擅长把一个问题解释成十个问题。一个原本只需要修补的缺口,聊着聊着就可能变成架构缺陷;一个局部的不顺手,很快又会上升为产品方向需要重新思考。

更麻烦的是,它们说得通常很有道理。

于是功能不够完整,可以继续补;架构不够漂亮,可以继续改;模型效果不稳定,可以继续换。刚刚完成的方案,只要遇到一种新技术,也可以立刻被宣布过时,然后重新开始。

独立开发还有一个天然优势:几乎所有事情都可以继续做。

开发者、产品经理、测试人员和验收人都是同一个人。只要我对结果不满意,完成标准就可以继续向后移动。昨天刚做完的重构,过几天又会成为下一次重构的理由。

“还可以再改一点,收口需要 18 项任务卡”几乎是我每天听到最多的废话。

你以为这是追求品质,其实这是在骗你的 token。

更常见的情况是,两者已经混在了一起,再难分清楚。


所以我开始推动功能收口。

一项工作开始之前,先说明它究竟要解决什么问题,预期结果是什么,做到什么程度算完成,最后应该怎样验证。完成之后,也尽量按照原先设定的条件判断,而不是根据当天的焦虑程度临时修改标准。

这并不能保证方向正确,也不能让 AI 少说胡话。

它只是让我少保留一点事后解释的权利。

不能因为结果不符合期待,就重新定义期待;也不能因为已经投入了很多时间,就默认这个方向值得继续。

我不太害怕明确的失败。一个方向被证明不成立,至少还可以结束。

真正消耗人的,是那种长期处于半完成状态的东西。它没有交付,也没有失败,只是持续吸收新的功能、新的技术和新的焦虑。

而技术变化得太快,半成品尤其容易过时。

一个功能如果迟迟不能落地,它面对的就不只是尚未解决的 bug。模型在变,协议在变,智能体的实现方式在变,用户对于 AI 的预期也在变。

等它终于准备完成时,最初试图解决的问题,可能已经换了一种形式。


Mira 的 slogan 里,核心词是“接住”。

GPT 的那点尿性大概就是这样:接不住问题,就先去接住那个有问题的人。

我明明在问一个具体的问题,它却开始关心我的情绪,劝我休息,提醒我不要给自己太大压力。问题还在那里,它倒先把我安慰了一遍。当我看到 AI 为了过单测去改核心代码逻辑,骂它 cnmb 的时候,它说:你是对的。

后来也就心宽了。

接住就接住吧。

只是我希望 Mira 所说的“接住”,最后不能只停留在这里。

一个人在混乱的时候,当然可能需要一点安慰,但他更多时候并不缺一句“你已经很努力了”。他缺的是有人帮他把眼前的事情重新排好顺序,告诉他现在真正的问题是什么,下一步应该做什么。

Mira 不应该只是陪着用户待在问题旁边。

它需要理解目标,整理上下文,选择合适的能力,执行任务,处理失败,并验证最后的结果。

它不必每次都给出一套宏大的方案,也不需要为了显得聪明制造更多分支。很多时候,只要能在一团混乱里判断出先做哪一件事,并把这件事可靠地推进下去,就已经足够有用。

我希望它接住的,不只是情绪,还有那些因为混乱而无法继续的事情。

如果一个人已经没有余力处理十个问题,Mira 至少应该替他压住九个,然后把剩下的一个说清楚。

先做这个。

理由是这个。

做到这里,再决定下一步。

这大概就是我理解的生产力。

它当然可以表现为代码、文档、检索结果或者自动化流程,但更基础的一层,是减少混乱,让人重新获得行动能力。


现在,一个人可以同时开十条 AI 线程帮他干活。

一条写代码,一条审查,一条查资料,一条分析架构,剩下几条负责提出更多听起来很重要的问题。

它们都很勤快,也都能给出理由。

但通常没有一条会替他决定:现在究竟应该先做什么,什么已经足够,什么应该停止。

线程越多,未必越接近结果,也可能只是让混乱拥有了更高的并发。

我希望 Mira 最终能够补上这一块。

它不只是执行任务,也要帮助人收束任务;不只是提供更多能力,也要在能力之间作出判断。至少在用户被十条线程围住的时候,它应该知道该关掉其中九条。

因此,“接住”最后还是一个工程问题。

模型能不能理解任务,工具能不能稳定执行,失败以后能不能恢复,结果有没有证据,这些都会决定它到底是在帮助用户,还是只是在用一种比较温柔的方式制造新的麻烦。

产品理念并不能脱离技术能力单独存在。

一个系统可以保留熟悉的界面、温柔的语气和漂亮的品牌表达,但如果它已经无法理解新的任务,无法使用新的工具,也无法达到用户习惯的可靠程度,那么“接住你”就只剩下了一句描述。

所以,追不上时代,就接不住人。

Tomz Dang