博客

不预告没做的功能。版本说明只写已经进公证包的点,和 版本记录 同一份清单。订阅(RSS)

我的故事

做支付出身、在美国、说中文夹英文——为什么是我来做这个东西。

  1. 我为什么做 Xtype · 一个说中文夹英文的人,受够了语音输入把「真机」听成「增肌」,于是自己做了一个。这是 Xtype 的来历。

产品与版本

每一版背后的起因、取舍和边界,以及出过的事故。

  1. 转化中,刚才那句话又没了 · 已经写过「说过的话永远不丢」。松手之后、字还没出来的那几秒,录音仍可能从历史上消失。0.1.123 把这个洞补上。
  2. 我需要的是「银联收单」,不是「银联」 · 纠正业务术语时,真正值得学习的是完整的错词关系。只保存变化的两个字,既丢掉业务含义,也可能制造危险替换。
  3. 我说的是 Kozen,为什么 Xtype 没学会「科然 → Kozen」 · 英文名字可能被语音识别写成中文音译。要让系统越用越准,保存的不能只有正确词,还要保留它和误识别写法之间的关系。
  4. 词典本来要帮我,为什么突然替我说了一长串话 · 我在讲密钥灌注,结果 Xtype 把词典里的硬件、支付和 AI 英文名连续写进了正文。问题不在词典本身,而在它进入处理流程的时机。
  5. 同一句话,不该只有一种“正确结果” · 语音识别之后,究竟应该保留原话、清理口头语、整理成条理,还是直接回答?以前 Xtype 替用户决定,现在把四种结果交还给用户。
  6. 它不认识我的公司,于是判我拼错了 · 昨天刚上线的拼写复核,今天就劝我把自家产品名改回识别错的那个词。而那个产品名,早就在我的词库里躺着。
  7. 别让人回忆,让人听 · 两个自家品牌读音接近,事后看文字分不出当时说的哪个。我本来想做一个弹窗让人选——查完接口才发现,那条路从一开始就走不通。
  8. 我让它整理,它替我写了一封信 · 口述 64 字,整理返回 258 字——一封格式工整、条理清晰、凭空发明了业务流程的邮件。失败会被发现,"编得很好"不会。
  9. 越用越准,不是换一个更强的模型 · Grok 的识别能力不由 Xtype 控制。真正属于用户和产品的,是每一次纠正留下的私有语言偏好,以及它如何回到下一次整理。
  10. 打开天窗:374 句口述、1493 个词、1 条别名 · 上一篇讲了学习流程,这一篇把 James 自己机器上的原始数据摊开——包括数据里我们自己的毛病。让大家参与进来,一起挑。
  11. 0.1.100 的故事:验收时抓到的两个「差一步」 · 登录成功了,名额却要退出页面再进来才显示;到期日一直空着,因为一个毫秒。两个小修的来历。
  12. 0.1.94 的故事:有些坏法是死路 · 一个功能坏了,用户能重试、能绕开;但有几种坏法怎么点都没用,也不知道该做什么。这一版专门收拾这种。
  13. 0.1.96 的故事:把「错的那一半」也留下来 · 词库只记住正确写法,所以同一个词一错再错。真正有用的信息,其实一直在你的纠正记录里被扔掉。
  14. 0.1.95 的故事:一条回来的路 · 我们把每次改动的起因和取舍都写在官网上,但装完 App 的人再也没回去过。这一版只做了一件小事。
  15. 0.1.97 的故事:一个不认人的软件,怎么开始认人 · Xtype 从第一天就不认人——不上传、不登录、零操作。这是它最像样的地方,也是它换台电脑就归零的原因。这一版我给它加了账号,同时撞见两处「假装成功」。
  16. 0.1.98 的故事:邀请制,和两个 AI 互相挑刺的三个回合 · 「官方代付」从点一下就给,变成凭邀请码开通。这一版的服务端是两个 AI 对抗式互审出来的——竞态、安全洞、隐私语义,来回三轮才定稿。
  17. 0.1.99 的故事:钥匙串从来没写成功过,而我们今天才知道 · 一个被兜底机制掩盖了整整两个版本的失败:正式包的钥匙串写入从第一天起就在静默失败。删掉兜底的那一刻,它才现形。
  18. 听写胶囊为什么从不抢焦点 · 从开麦到出字,你的光标始终留在原地。Xtype 不激活自己、不弹窗口,插入用系统级键盘事件逐字打进去。
  19. 想说多久说多久:一分钟截断的正确解法 · 长口述不再被一分钟切断。每 60 秒自动切一段后台转写、麦克风不停;文字按序拼接。为什么是分段,而不是加长单段。
  20. 你其实已经在写日记了 · 时间戳、原声、全文可检索,全在本机——Xtype 的历史记录长着日记的骨架。我们暂时不做日记功能,但地基已经打好。
  21. 为什么 Cursor 里有时显示「已尝试输入,无法验证」 · 往 Electron 输入框里打字,成功与否有时根本读不到。Xtype 用四种状态诚实记账,而不是假装都成功。
  22. 「真机」为什么被听成「增肌」 · 中英混说与专有名词是语音识别的重灾区。Xtype 的解法:本机个人词库,说错一次、教一次、以后都对。
  23. 先存后用:说过的话永远不丢 · 每次听写的原始录音先落盘本机,转写成败都不丢;录音中每分钟存一次,App 崩了也能找回。历史里可播放、可重新转写。
  24. 复盘:我们是怎么把一段 5.9 分钟的话弄丢的 · 一次真实事故的完整复盘:音频明明存下来了,转写却只出了 11 个字。根因、救援和三重加固。
  25. 0.1.93 的故事:先存,再出字 · 话已经识别出来了,插进光标之前的那零点几秒里,如果程序崩了会怎样?这一版把顺序调过来了。
  26. 给我们提需求,请直接开口说 · 新增「AI 提需求」:点一下、说一段话,转成文字确认后直达官方收件箱。每一条我们都当天读、认真 triage。
  27. 纠正一次,以后都对 · 识别错了不用忍。历史里改对一次,错的词自动进个人词库;英文默认全选、中文按需点选。这台 Mac 越用越懂你。
  28. 研究笔记:Typeless 的用户到底最爱它什么 · 把竞品的公开评价读了一遍。答案不是识别准,而是「整理而不变味」;留存靠的不是功能,是习惯。以及这对 Xtype 意味着什么。
  29. 历史记录为什么缺省永久保留 · 你的口述是资产,不是缓存。Xtype 缺省不删任何历史和录音;要自动清理,得你亲手打开开关。
  30. 云端失败后,诚实地改用本机 · Xtype 先尝试 Grok;符合条件的失败才改用 macOS 26 本机 Speech。说明白哪一步可能已经出网,也不拿苹果云冒充本机。
  31. 0.1.68:按住说话,每天 50 次 · 按住右侧 Option 松开出字;点按切换仍可用。免费额度每天 50 次。
  32. 0.1.69:到点先停麦,没网才走本机 · 1 分钟到点松开 Option 再出字;断网时 macOS 26 已装的听写语言可本机转。Xtype 不代下语言包。
  33. 护城河不在云端存语音 · Xtype 把方向写上官网:本机越用越准,不采屏幕。现在做工具,瞄准开发者品牌,基础设施是以后的事。
  34. 什么时候 Xtype 什么都不做 · 密码框不听写,不是功能没做完。有些场面,停住才是安全。

AI 编程

一个不看代码的人,用 Claude Code、Cursor、Codex 和 ChatGPT 把产品做出来。

  1. 我不看代码,但这个 App 是我做的 · 一个做支付的人,用 Claude Code、Cursor、Codex 和 ChatGPT,七天做出一个签名公证、能给陌生人下载的 Mac App。这是第一篇,先说清楚我是怎么"审"我看不懂的东西。