随心记(Vibetaking)
打开即写的 iOS 速记应用,配套 macOS 菜单栏接收端:手机上写,文字实时出现在 Mac 的任意输入框里。
为什么做
想法转瞬即逝,而多数笔记产品以「回顾」为中心:打开先看列表,想记东西要先选笔记本、点新建、等界面就位。每一步都在消耗那个还没写下来的念头。我要的是把入口放回记录本身——打开应用的瞬间就能打字,其余的整理工作放到写完之后。
它是什么
随心记的 iOS 端启动后直接进入空白编辑页,光标就绪,零选择、零导航。写完的内容交给可配置的 Workflow 流水线处理:ai_process(AI 处理)、copy(复制)、http_post(HTTP 推送)、save(保存)四种节点自由编排。一段临时输入可以一键变成润色后的文本、剪贴板片段,或一条带标签的记录。
数据格式是开放的:Markdown 加 front matter 落盘,经 iCloud 同步,支持 ZIP 导入导出。哪天不用这个应用了,笔记就是一目录纯文本文件,不需要导出迁移。AI 处理对接兼容 OpenAI 接口的网关,模型可选、提示词可自定义,API Key 存放在 Keychain。语音输入依赖系统听写或外部工具,应用本身不做语音识别。
macOS 端 vibe-taking-desktop 是一个菜单栏应用,职责单一:HTTP 接口收文本,自动粘贴进当前活跃的输入框。curl -X POST http://localhost:7788 -d '文本' 一条命令就能完成注入,任何脚本和工具都能把它当输出端用。
两端合起来是一个跨设备输入方案:手机端写,Mac 端出现在任意应用的输入框里——不局限于某个特定编辑器。
技术要点与设计决策
产品设计上是四个「快」的取舍:入口快(无列表页拦路)、启动快、输入快、整理快(整理交给 Workflow,不占用记录时的注意力)。README 里的设计理念一节就是按这四条组织的。
手机与 Mac 的配对协议有一个反直觉的决定:手机端草稿一变化就实时 HTTP 推送,不做防抖。早期版本有 300ms 防抖,实际使用中被去掉了——这个场景要的是「我在手机上打字,Mac 上同步出现」的即时感,防抖省下的那点请求不值得用延迟换。
Mac 端的交互是两段式:「开始输入」先清空并持续镜像手机输入,「粘贴/发送」在有草稿时执行粘贴;无草稿时同一入口变为 Send,模拟回车键。还有一处细节:短时间内二次触发时,合并为 Cmd+Return 且不先发 Return——聊天应用里连续发送时,这能避免把一条消息拆成两条。
粘贴的实现顺序也有讲究:先激活目标应用、等它真正回到前台,优先触发目标应用自己的 Paste 菜单项,失败再回退到模拟 Cmd+V。直接无脑模拟键盘在焦点未就绪时会把文字打进错误的地方。
标签推荐算法综合四个信号:候选标签集、历史打标样例、文本相似度和时间衰减,让「写完顺手打标」这个动作大多数时候只需要确认而不需要输入。
macOS 端整个应用零第三方依赖:BSD socket 加 GCD 手写 HTTP server,CGEventPost 模拟键盘,NSBezierPath 程序化绘制菜单栏图标并自适配深浅色。一个功能如此单一的常驻工具,引入依赖管理的复杂度不划算。
当前状态
iOS 端 2026 年 1 月创建(由更早的个人原型演进而来),以 MIT 协议开源;macOS 端 2026 年 2 月创建,同样开源。两端都在活跃维护,这套组合是我日常记录工作流的主干。