开发者 Mike Kasberg 在廉价智能手表上运行本地 Claude,通过终端完成代码编写和文件操作,探索了端侧 AI 编程的可能性。
丈夫。父亲。软件工程师。Ubuntu Linux 用户。
Pine Time 是一款运行开源固件的 27 美元智能手表。这块表我在抽屉里躺了一两年了。当我看到 @steveruizok 关于用 Claude 在 ESP32 设备上编程的推文时,我受到了一些启发,决定把 PineTime 从抽屉里拿出来,看看 Claude 能做些什么!
if you know what a "coding agent" is then go buy this or something very similar (not sponsored but they're on amazon, pi hut, ali, all over) pic.twitter.com/iPvHxBiltf
我知道我想从一个表盘开始,因为手表自带的那个实在太过平淡乏味了。前不久我刚看到 @levelsio 的推文,说他给自己的 Apple Watch 做了一个自定义的卡西欧表盘。
⌚ Made a CASIO watch face for my Apple WatchYou can import the 2nd pic into Widgy to install it to your Apple Watchhttps://t.co/KGWBTBBzRB pic.twitter.com/BBf1iZo9kV
我在想,我能不能也给 PineTime 做一个类似的表盘(靠 Claude 帮点忙)。事实证明,PineTime 确实是一款非常适合用 Claude 来折腾的手表!
它运行开源固件(InfiniTime,或者任何你想要的 RTOS)。
文档非常完善。Claude 在这种环境下如鱼得水。
它有一个很棒的模拟器(InfiniSim)。这让 Claude 在你的电脑上就能获得快速的反馈。
固件很简单,所以你基本上得自己添加想要的功能。
虽然我一直在说"Claude",但实际上我大部分工作是在 OpenCode 上完成的,用的是一些我喜欢的开源权重模型。Kimi K3 和 K2.6,以及 DeepSeek v4 Pro 和 Flash。我先克隆了 InfiniSim 仓库(它有一个指向 InfiniTime 的 git submodule),然后让 Claude 让它跑起来。在 Ubuntu 上又快又简单!然后我就有点野心勃勃了:我把 @levelsio 推文里的照片发给 Claude,让它复刻这个表盘,以现有的 InfiniTime 表盘代码为起点。同时让它按需调度和使用子智能体来完成边界清晰开发任务。
它构建出了一个相当不错的粗略近似版,但确实非常粗糙。它似乎只是在文本大小和定位上猜测,导致元素虽然大致在正确的位置,但相互重叠、无法辨认。不过这仍然是一个很好的起点,我们可以继续迭代。我觉得 Fable 大概能够自己完成工作并在有截图反馈循环的情况下把它做到像素级完美。但由于我在 OpenCode 上用的是开源权重模型,经费有限,所以我决定省一些 token,自己多参与一点,给出具体的反馈和孤立的任务,逐个击破。一次只修一件事——把每个文本元素都调对了再换下一个。
我注意到我们在构建屏幕的一些静态部分上花了很多精力,意识到这可能没有必要。我想知道能否直接做一张全屏背景图,把所有静态部分都放进去,这样我们只需要编程控制屏幕的动态部分。我们试了,在模拟器上跑通了!在往真手表上安装固件之后,我发现我们正在逼近这块小表的极限。通过蓝牙传输这张 240x240 的图片花了大约 10 分钟才安装到设备上,而且每次滑动时刷新整个屏幕需要 1-2 秒。手表没法一次把这张整图全部放在内存里;它得从文件系统里流式读取。但这对于我花了几个小时做出来的表盘来说完全可以接受!以后我可能会回过头来用代码构建更多的背景部分,这样就能即时更新了。但今天来说,我对这个可用的原型很满意!
我把所有代码都推到了 GitHub,你可以直接用,或者如果你想的话用它作为自己项目的起点。我还让 Claude 把我们一路学到的东西总结成了一份 AGENTS.md。如果你也想试试自己的手表,它能帮你快速上手,并避开我踩过的一些坑!
我喜欢和 AI 一起做这个项目!低风险的环境(不是工作里的生产代码)让我觉得自己可以尝试任何想尝试的东西,快速迭代,而且固件开发是为一台我能拿在手里、使用时能真正戴在手腕上的物理设备工作的,这种感觉真的很棒!几年前我买这块 PineTime 的时候,我的时间和动力都用完了,没学会如何在 InfiniTime 代码库里工作,这块表就在抽屉里躺了两年。但今天,我能在几个小时内做出一块新表盘,而且过程很有趣!未来是光明的!
👋 Hi, I'm Mike! I'm a husband, I'm a father, and I'm a staff software engineer at Strava. I use Ubuntu Linux daily at work and at home. And I enjoy writing about Linux, open source, programming, 3D printing, tech, and other random topics. I'd love to have you follow me on X or LinkedIn to show your support and see when I write new content!
If you enjoyed this blog post, I'd love it if you could share it with your network!
I run this blog in my spare time. There's no need to pay to access any of the content on this site, but if you find my content useful and would like to show your support, buying me a coffee is a small gesture to let me know what you like and encourage me to write more great content!
Vibe Coding From My Phone with OpenClaw 20 Mar 2026
Dotfiles Secrets in Chezmoi, Without Password Headaches 31 Jan 2026
My $500 Developer Laptop 09 Sep 2023