两个小收获,原来是同一个收获
所属系列
- AI 辅助工程系列 (11 共 15)
今天没发布任何东西。没有新功能,也没有新项目。但两件事改变了我的工作方式,到了晚上,我才意识到它们其实是同一件事,只是换了件外衣。
控制室搬上了画布
我的简历流水线已经用同一种方式运行了一阵子。打开 Ghostty,里面运行 tmux,分成三个窗格:两个 agent 干活,一个服务器生成简历。旁边再放一个浏览器,让我能看到生成的 PDF。我读一遍,形成意见,切回终端,找到正确的窗格,输入反馈,等待,然后再次切到浏览器。
流水线本身没有问题,问题在它外围的反馈循环。
今天,我把整套东西搬进了 Maestri。这是一款围绕无限画布构建的 macOS 应用,终端是可以随意摆放的节点。对我最重要的是它称为 portal 的功能:嵌在画布中的窗口,可以容纳网站、iOS 模拟器或 Android 模拟器。于是,PDF 预览不再待在另一个应用里,而是坐在画布上,就在生成它的 agent 旁边。

全部变化就这些。相同的 agent,相同的流水线,相同的输出。但我不用再把一块屏幕三等分,也不用靠 alt-tab 切去浏览器才能闭合反馈循环。粗略感觉,现在我做的操作只有昨天的三分之一,而省掉的那些操作其实根本不算工作,只是在找路。
我想坦诚说明这个数字:它是感受,不是测量结果。我没有计时。而且这只是使用新工具的第一天,新工具在第一天总比第三十天感觉更好。一个月后再来问我吧。
流水线学会了检查自己的作业
这次收获的另一半更小,也更不显眼,但我怀疑它会更持久。
我的简历必须是两页。不是大约两页,就是两页。这个约束以前只存在于我的脑子里,所以每次生成后,都要由我目测输出,发现它溢到了第三页,再回去告诉流水线删点东西。每一次都这样。
现在,流水线自己检查长度,超出时就自行精简。
有意思的不是检查长度,而是我交出去的任务类型。决定简历里删什么需要判断,而我一直不太愿意把判断交出去。但这件事有一个明确、可检查的成功条件:是两页,还是不是两页。这样的任务值得交出去。不是“把它做好”,而是“让它放得下,这是你判断有没有做到的方法”。
我仍然阅读每个版本,也仍然会否决它的决定。但我不再是那个检测长度的人。
两款听写应用
另外,出于一些没那么深思熟虑的理由,我今天下载了两款本地语音转文字应用:Handy 和 Ghost Pepper。它们都免费、开源,完全在设备上运行。按住一个键,说话,松开,文字就会出现在当前有焦点的输入框里。
Handy 跨平台,而且刻意保持功能专一。Ghost Pepper 仅支持 Mac,使用 WhisperKit,再用本地 LLM 清理一遍,去掉填充词,修正说话时的自我纠正。目前我更喜欢 Ghost Pepper,主要因为这一步清理让输出更像我写的东西,而不是一份逐字转录。
还没解决的是多语言问题。我不断在英语和中文之间切换,有时在一句话里就会切换,目前仍在寻找不会把其中一种语言搅碎的模型配置。Ghost Pepper 默认附带的是偏重英语的模型,还需要调试。Handy 依赖自动语言检测,最后可能反而更合适。尚未决定。
背后的共同结构
我总会回到一个关于创造性工作的三层模型:思考、技艺、机械操作。思考是决定什么东西应该存在,技艺是把它做好的能力,机械操作则是剩下的一切,是从意图走到成品的过程中,用按键、切换窗口、反复解释上下文支付的成本。

今天的收获没有一项涉及思考,也没有一项涉及技艺。三项改进全都在减少机械操作的负担。
画布省去了在窗口间来回移动的成本,长度检查省去了充当人工断言的成本,而当说话更快时,听写省去了打字的成本。
单独看,每项都小得让我不好意思专门写出来。放在一起,它们却决定了晚上九点冒出一个想法时,我会不会真的动手。行动的势头大多取决于阻力,而阻力总是由一堆小事组成的。
所以,两个小收获,其实是同一个收获。