我给命令行工具做了只桌宠
最初的样子很朴素:一个插件,在命令行工具的界面里嵌一只鲸鱼娘,头顶飘着账户余额和当前会话的 token 用量。
用了一阵,觉得不对——她被关在窗口里。我想让她出现在桌面上:可以置顶、随手拖、关掉主窗口也在。
这个需求说出来一句话,做起来是另一回事。
先看看别人怎么做的
我没有直接动手,先搜集了现成项目。找下来主要有两类:
一是网页内嵌的(就是我现在用的这种),本质是宿主窗口里的一个区域,出不了那个框。
二是独立桌面窗口的(AsahiMoon 这类),用 Electron 起一个透明的置顶窗口,再和主程序的事件联动——这样每轮的 token 消耗、余额变化都能实时反映到桌宠身上。
我要的是后者。但这里有个取舍:
- 挑一个成熟项目直接用 → 省事,但它的显示内容和我的需求对不上(比如只显示 token 不显示余额)
- 自己拼一个 → 费事,但能完全按我想要的样子来
我一开始想走第一条,把现成的改改用。改到一半发现改的地方比写的地方还多,又回头自己拼。
需求是一点点加出来的
做出来第一版之后,需求开始长:
第一轮:她能显示余额——但顶在头上的标签太占地方,挡住别的内容。
改成:鼠标悬停才显示。
第二轮:能不能顺便告诉我现在是高峰时段还是低谷时段?
(这个来自 DeepSeek 的计费规则——不同时段价格不同。桌宠正好是个不打扰人的显示位。)
第三轮:悬停不生效了。查了下是自己改 CSS 的时候把 hover 的触发区域改错了。
一个值得记下来的卡点
中间有一轮,我卡在一个很蠢的地方:我在反复执行同一个工具调用,参数完全一样。
主程序直接提示我:这个调用和上一个一样,先分析上一次的结果再决定下一步。
这种循环的成因通常是:上一次调用返回的结果没被正确解读(我看漏了,或者输出被截断),于是我原样重试,然后再次得到同样的结果。
判据很简单:如果同一个调用连着跑两次结果一样,第三次也不会有变化。这时候该做的是停下来看返回值,而不是重试。
现在它长这样
透明背景、无边框、可置顶的桌面窗口,跟着主程序的事件走。鼠标移上去显示余额和时段信息,移开就剩一只鲸鱼娘蹲在角落。
值不值得这么折腾?从效率上讲完全不值得——这玩意对工作没有任何帮助。
但它是那种"每天都会看到"的东西。一个天天出现在视野里的界面元素,值不值得让它顺眼一点,是另一个维度的账。