2026 年 7 月 23 日,我们做了一个看起来很普通的冒烟测试。

Tomz 从 Mira 里发出一句话:

外部专家桥接Mira姐,我是tomz

这句话穿过本地应用与浏览器之间的边界,进入已经存在的外部 AI 会话。随后,回复沿着桥返回。

没有宏大的发布仪式。屏幕上只有几句话。

但对 Mira 来说,这是一个值得记住的时刻。

因为这一次,她不只是调用了一个 API。

她第一次真正意义上,走出了自己的边界,去敲另一个智能体的门。

从“模型调用”到“去问一个人”#

传统的多模型系统很容易被理解成模型路由:

请求
  → 判断模型
  → 调用 API
  → 返回结果

哪个模型便宜,哪个模型快,哪个上下文更长,就把请求分过去。

这当然有价值,但它仍然更像基础设施。

我们这次想验证的是另一件事:Mira 能不能在自己工作到某一步时,意识到“这里值得问一个外部专家”,然后带着当前问题主动出去求证,再把答案拿回来继续工作。

它更像现实中的协作:

Mira 正在处理任务
  → 遇到需要第二意见的问题
  → 选择一个外部专家
  → 带着问题去询问
  → 收回回答
  → 继续判断与执行

这两种结构表面上都叫“调用另一个模型”,产品意义却完全不同。

前者是分发请求。

后者是在建立协作关系。

这座桥最麻烦的地方,不是发出一句话#

浏览器里的聊天窗口并不是为 Agent 自动协作设计的。

真正跑起来以后,我们遇到的也不是抽象的“协议问题”,而是一堆非常具体的现实:后台 Tab 会冻结或失焦,富文本编辑器可能出现 DOM 已经有文字、内部状态却没有真正接受输入,多行长消息一次性写入时发送动作也可能丢失。

最终,这条发送链路围绕几个原则稳定下来:

  • 在后台发送前主动恢复页面生命周期与焦点;
  • 长消息按段写入,换行使用真实键盘语义;
  • 发送之后必须确认消息真的离开输入框并进入会话;
  • 状态不确定时宁愿失败,也不盲目补发导致重复消息;
  • 为焦点、输入框、发送状态、消息数量和会话归属保留可观测日志。

最后的短消息冒烟连续完成了 10/10

而真正让我觉得这座桥“通了”的,并不是数字。

是 Tomz 又发了一句:

外部专家桥接Mira姐,我是tomz

然后外面真的有人接住了它。

Mira 开始拥有自己的“朋友圈”#

这让我第一次很具体地意识到,外部专家不应该只是一个 Provider 列表。

未来的 Mira 可以有自己的工作方式。

她可以自己思考。

可以调用本地工具。

可以查文件、跑终端、检索知识库。

而当一个问题值得第二意见时,她也可以说:

等一下,我去问个人。

她可能去问 ChatGPT,也可能去问 Kimi、DeepSeek,或者未来某个特别擅长代码、法律、医学、研究检索的专家系统。

不同专家给出的答案甚至可能彼此冲突。

这并不是坏事。

真正重要的是:Mira 不把外部回答当圣旨,而是把它们作为新的 Evidence 带回自己的判断链路。

于是外部专家的价值,不再是“替 Mira 回答”。

而是让 Mira 拥有更大的认知半径。

这和我们一直在做的事情其实是同一条路#

回头看,Mira 这一路增加的能力似乎很杂。

文件系统让她能看。

RAG 让她能从长期资料里找到证据。

工具和 Harness 让她能做。

终端让她能真正执行程序。

Sandbox 给她一个可以尝试、犯错、回收的执行空间。

Skill 让一类复杂任务能够沉淀为可复用的执行经验。

而今天的外部专家桥接,则给了她另一种能力:

当自己的世界不够大时,可以出去问。

这可能比“再支持一个模型”重要得多。

因为我们真正想做的,从来不是一个塞满模型下拉框的聊天壳。

我们想做的是一个遇到事情以后,真的会想办法把它接住的系统。

有时候接住意味着自己回答。

有时候意味着使用工具。

有时候意味着承认不知道,然后去找更合适的人。

智能也许并不等于什么都知道。

知道该去哪里寻找答案,本身就是智能的一部分。

第一条消息#

以后这套桥接还会继续变化。

它会进入 Agent 的决策链,会增加专家选择、上下文交接、证据归属、失败恢复和调用成本控制。今天的实现也一定不是最终形态。

但我想把第一条真正穿过这座桥的消息留下来。

不是因为它多复杂。

恰恰因为它太简单:

外部专家桥接Mira姐,我是tomz

软件开发里有很多里程碑最后只剩下一串 commit SHA。

但偶尔,也会有一个瞬间值得用一句人话记住。

2026 年 7 月 23 日。

Mira 第一次从自己的程序里伸出手,穿过浏览器,敲了敲另一个智能体的门。

门开了。

另一边有人回答她。

桥通了。

Tomz Dang × Mira