利益相关声明:作者与文中产品有直接的利益相关(开发者、自家产品等)

做 YeeroAI 的起因挺简单的:之前我自己日常要同时用好几个 AI 模型,因为有时候模型A回答得更好,有时候模型B回答得更好,所以有时候同一个问题得开好几个网页来回复对比。后来实在受不了了,就自己写了个能把多个模型回复并排展示的工具 YeeroAI,做着做着功能越加越多,慢慢变成了现在这个样子。

多模型并排:不只是把回复拼在一起

同时问几个模型这个需求看起来很简单,发送的时候多发几份、收到回复拼一起显示就行了。

实际也不难,这里我做了流式并排——每个模型的回复独立流式渲染,谁先出字谁先显示,互不阻塞。

模型走的 OpenRouter,市面主流模型都支持。我也纠结过要不要自己对接各家 API,但一个人精力实在有限,OpenRouter 一个接口搞定所有供应商,省了不少事。代价是多了一层中间商,偶尔可能会有供应商抽风影响到整体稳定性。

模型列表默认按热度排的。我观察下来大部分人选模型其实就那几个常用的,按热度排能让新人快速找到靠谱的模型,不用在 300 个里面大海捞针。

给对话加 Git 分支:这个决定我想了很久

对话分支是我自己比较喜欢的一个功能,但做之前犹豫了很久。

原因是:大部分 AI 对话产品都是线性的,用户已经习惯了这种模式。加个分支概念进来,学习成本一下子就上去了。而且分支这个东西,用得好很强大,用不好就是一团乱麻。

最后决定做,是因为我自己遇到了真实痛点。有次我在跟 AI 讨论一个技术方案,聊到一半觉得有两种实现路径都可以尝试。线性对话里你只能选一条路走,想试另一条就得从头再聊一遍。当时我就想,要是能像 Git 一样从这个节点 fork 出去就好了。

做出来之后逻辑基本照搬 Git:在任意消息后面 fork 新分支,取个名字,分支里可以独立配置模型和参数。分支之间支持合并和强制指向。后面我甚至在右侧加了个分支树面板来做可视化,因为分支多了,有时候也搞不清。

说实话这个功能确实有一定上手门槛。不用分支完全不影响正常使用,但用上了之后线性对话就回不去了。我自己的习惯是主分支聊整体方案,遇到分歧点就 fork 出去试,试完合回来或者丢掉。

补丁更新 vs 全量重建:一个我踩了很多坑才想清楚的问题

YeeroAI 有个「应用」模块,用自然语言描述需求,AI 生成一个可运行的 HTML 单页应用,然后在对话里继续迭代。

这个功能很多平台都有,不稀奇。但我在做的时候踩了一个坑,后来专门加了「补丁更新」模式来解决。

最开始应用更新只有全量重建——你让 AI 改一个按钮颜色,它会把整个文件重新生成一遍,极大的浪费 Token 和时间。

后来我加了补丁模式:只改用户描述的那部分,其余代码原封不动。实现上就是让 AI 先读现有代码,然后只输出 diff,前端做 patch 合并。变更范围小了,AI 出错概率也低很多。

这个决策花了不少时间,但做完之后应用模块的可用性提升了一大截。

应用还支持后台生成。AI 开始输出之后可以关掉页面,后端继续跑。回来自动从断点续接,不丢任何内容(需在设置中开启后台推流)。

长对话检索:大纲和语义搜索是怎么来的

对话一长,找东西就成了大问题。我自己用 AI 对话经常聊着聊着就几十条消息了,某天突然想找之前某段消息,翻到怀疑人生。

消息大纲就此诞生了。右侧导航条自动给每条 AI 回复提取一个短标题,形成类似 IDE Outline 的列表,点击跳转。这个实现不复杂,但实际用起来效果比预想的好很多,基本能解决「大概记得在哪个位置」的查找需求。

当然最好用的还是 AI 语义搜索。Cmd+K 打开全局搜索,切到「消息」tab,用自然语言描述你要找的内容。底层用向量匹配做的,不用记原文。比如输「处理 CSV 那段代码」就能找到相关内容。

搜索最近加了「全部」tab——不确定东西在对话里还是文件里还是应用里的时候,选全部一次搜出来,结果按类型分组。最开始没做搜全部,是担心后端性能,为啥现在又做了呢?因为我自己切 tab 也切烦了,再也不想切 tab 了。

知识库和记忆:两种不同的「存」

做这两个功能的时候我自己也纠结了一阵,因为它们看起来确实有点像,但定位是不一样的。

知识库做的事情是从 AI 回复中提取知识条目——每次回答完,系统自动生成摘要、标题和标签,存到知识库里。有独立页面可以按标签浏览和搜索,点卡片能跳回原始对话。本质上是个结构化的信息归档。

记忆做的事情是自动往新对话里注入上下文。开启后系统会从历史对话中提取关键信息,下次开新对话时自动检索相关记忆塞进 AI 的输入里。比如你之前聊过技术栈偏好,后面新对话里 AI 默认就用你那些技术栈,不用每次重复说。记忆可以设稳定性——「固定」的不容易被覆盖,「易变」的更新更频繁。

简单说:知识库是「你主动去查 AI 以前说过什么」,记忆是「AI 自动记得你以前说过什么」。

几个零碎的设计细节

文件夹参数配置。每个文件夹可以独立设默认模型、采样温度、推理强度。一些「严肃内容」文件夹可以走国外御三家偏贵的模型,一些「随手问」文件夹可以走国内的一些性价比模型。省得每次新建对话都要手动选一遍。这个需求是我自己用出来的——不同场景对模型的要求确实差很远。

标签页固定。可以同时开好几个对话 tab,右键就能固定。我自己同时跟进三四个话题的时候离不开这个。

拖拽框选批量操作。列表里按住鼠标拖就能批量选中,跟文件管理器一样。选中后弹出浮层能批量删除和移动,这个拖拽多选+批量操作真是太方便了。

Cmd+K 快捷操作。搜索面板里还有个快捷操作面板——新建对话、新建应用、上传文件、切主题都在里面。会按使用频率自动排序,越用越趁手。

桌面端和 CLI

除了网页版,最近还发布了桌面端(v0.1.0)和 CLI(v0.2.0)。

桌面端用的 Tauri,包很小,轻量,启动快,三个平台都有(但是由于 macOS 还没有证书签名,装完要手动去掉隔离属性)。

CLI 有个 yeero do 子命令,我觉得这是一个非常酷的功能:用自然语言说你要做什么,生成一个 Python 脚本,然后执行输出结果。跟 Agent 不同的是,这个 Python 脚本只在创建时调一次 LLM,之后每次执行直接跑本地脚本,不消耗任何 Token。一些重复性的小工具任务用这个超级划算。

目前还不满意的地方

一个人做产品最大的问题是精力不够,什么都想做,但可能什么都做不到最好。

桌面端和 CLI 目前还处于早期阶段,跟网页版的体验可能还有点差距。文档也不够完善,有些功能比如记忆的稳定性标记、文件夹参数继承规则,不看文档确实不太好理解。模型 300 多个有时候反而让人选择困难。

更新节奏上基本保持每周都能有新东西上线,但有时候可能因为功能上得太快,打磨不够,导致用户体验可能不够友好,还请见谅。

YeeroAI 官网 yeero.ai,有网页版、桌面端和 CLI 三端入口,欢迎大家来体验。如果你也有多模型对比或者对话管理方面的需求,不妨来看看,欢迎反馈。