微信扫码
添加专属顾问
闲置Kindle变身AI桌宠第二屏,让旧设备在桌角焕发新生。 核心内容: 1. 闲置Kindle的独特价值:e-ink常显、低干扰特性如何适配新场景 2. 从虚拟桌宠到实体屏:将AI运行状态可视化的设计思路与实现 3. 旧设备改造哲学:赋予单一、轻量任务,重新发现实用价值
这件事的起点其实特别简单:我桌上有一台 Kindle Paperwhite,吃灰很久了。
扔了舍不得,继续放抽屉里又有点浪费。它屏幕不大,性能也不强,但 e-ink 常显、不刺眼、耗电低,这几个特点放在今天反而挺稀缺。
前阵子我刚折腾过 Codex 桌面宠物:AI不再只躲在终端里:我把Floeva戒指孵成了会卖萌的Codex桌宠,让一个小宠物在电脑里显示 Agent 的运行状态。那篇里我写过一句话,桌面宠物不是装饰品,它更像一个轻量状态层。
于是我很自然地想到:
一开始真没想做什么严肃的监控系统,只是想把这台 Kindle 用起来,让它在桌面上有点存在感。
后来才发现,Claude Code 和 Codex 的状态刚好很适合放上去:谁在跑,谁闲着,在哪个项目里,抬头看一眼就知道。
实拍:Kindle 上单独显示 Codex 当前状态和最近任务。
所以这篇不是“我为了效率发明了一个看板”的故事。
更准确地说,是:我想让一台吃灰 Kindle 重新回到桌面上,顺手把它做成了 AI 桌宠的第二块屏。
Kindle 最尴尬的地方是:它还挺好,但你就是不怎么用。
看书有手机、iPad、微信读书;拿来当主力屏幕又太慢。它很难再成为一个“中心设备”。
但如果换个思路,不让它当中心,只让它承担一个很窄的任务:常显、低干扰、放在桌角。
这时候 Kindle 反而很合适。
它不像第二屏那样不断吸引你点开消息,也不像手机那样一亮就把注意力拽走。它慢,黑白,刷新也不频繁,天然适合做那种“不急,但一直有用”的信息展示。
这和我之前做桌面宠物的思路其实是一脉相承的。
桌面宠物不是为了多一个可爱的东西,而是把 Agent 的状态从日志里拿出来,变成一个余光就能感知到的小反馈。Kindle 只是把这个状态层从电脑屏幕里拿出来,放到了一块真实的 e-ink 屏上。
既然起点是“桌宠的延伸”,第一版设计我就不想做成那种枯燥的监控面板:一堆数字、一堆进度条、再配几条日志。
Kindle 的纸质感屏幕,适合放点更轻、更有陪伴感的东西。
最后我定下来:两只像素小宠物,一只代表 Claude,一只代表 Codex。
实拍:Claude 和 Codex 两只像素宠物,加上下面的系统状态。
它们头顶各有一个小气泡:
in zzz...后来发现这俩工具的社区里本来就有很适合像素化的形象:
/pet 命令召唤我从社区项目 rullerzhou-afk/clawd-on-desk 里拿到了两套官方风格的 GIF,再用 Python + Pillow 自动转成 32x32 黑白像素图,直接喂给前端。
这一步比想象中重要。
如果只是写“Claude running / Codex idle”,你看两天就会腻。但换成两个小宠物之后,这块屏幕突然有了点桌面摆件的感觉。它不是强提醒,不制造压力,只是在那里安静地告诉你:谁还醒着,谁已经睡了。
我原本以为,现在的 Kindle 浏览器再差,也应该是个能用的现代浏览器。
结果真机一跑才发现:它基本像 2014 年左右的 WebKit。JavaScript 很多时候跑不动,CSS Grid 不支持,连一些继承样式都不稳定。
给 Kindle 做前端,最重要的心法是:
第一版宠物是用 SVG 一个个像素拼出来的,需要 JS 在客户端循环渲染。在 Mac 浏览器里看完美,推到 Kindle 上,一片空白。
解决办法很朴素:服务端直接生成 PNG。
我用 Pillow 把 32x32 sprite 用 Image.NEAREST 放大到 256x256,Flask 通过 /pet/claude.png 直接返回图片字节。Kindle 只需要会 标签就行。
期望的布局是两只宠物左右并排。我一开始用了 display: grid,Mac 上看好端端的。Kindle 上,两只宠物纵向堆成一列,每只占满整行。
第一反应是退回
我知道,2010 年之后还用 table 做布局多少有点逆时代。但在 Kindle 浏览器上,table 一度是唯一能保证横排的方案。
修完前两个坑之后,又发现宠物卡片的右边和下面 SYSTEM 卡片的右边对不齐,差了 17 像素。
debug 半天才发现:
最后的解法是彻底放弃 table,改用
float:left + box-sizing:border-box。两个宠物 div 各占 50% 宽,中间共享一根边框,反而最稳。这事也挺讽刺:你以为你在做一个 AI 状态看板,最后真正让你破防的是老浏览器布局。
我没有调用 Claude Code 或 Codex 的 API,也没有从 CLI 里硬解析输出。
原因很简单:状态看板要稳定,依赖越少越好。
Claude Code 和 Codex 本来就会把会话写到本地 JSONL:
~/.claude/projects/~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl我直接读这些文件:
cwd 字段的事件,取 basename唯一没做的是“Claude Code / Codex 使用额度”。
这个我一开始其实很想放上去,毕竟如果 Kindle 上能直接看到还剩多少额度,会很实用。
但折腾了一圈发现,Claude Code 和 Codex 的 CLI 目前都没有稳定接口可以直接拿到这个数字。Claude Code 里的 /usage 更像 CLI 内部能力,不是一个适合被外部服务长期依赖的公开接口;Codex 这边也没有我能放心写进常驻服务的额度 API。
所以 v1 只能放弃额度显示。
对这块屏幕来说,核心问题不是“我还能跑多久”,而是“它们现在有没有在跑”。
宠物显示完之后,Kindle 屏幕下半部还有一大块空白。索性把 Mac 的系统状态也放上去:
psutil.cpu_percent() | |
psutil.virtual_memory().percent | |
(total - free) / total | |
smctemp -c | |
psutil.net_io_counters() | |
time.time() - psutil.boot_time() |
这里也踩了两个很典型的 macOS 坑。
psutil.disk_usage("/").percent 在我的 Mac 上一直显示 63%。但我自己 df -h 看是 97%。
原因是 macOS 用 APFS,根 / 是只读 System 卷,用户数据在 /System/Volumes/Data。psutil 报告的 used 只是 System 卷自己的文件,并没有把 Data 卷算进去。
解决办法是不直接用 du.used,而是自己算 total - free。同一个 APFS 容器里所有卷共享 free space,这个减法在 APFS 和传统单卷文件系统上都更符合直觉。
最先尝试的是 Homebrew 上的 osx-cpu-temp,装完一跑返回 0.0°C。
后来才发现,这个包主要是给 Intel Mac 写的,读的 SMC 键在 Apple Silicon 上不存在。
最后我从 narugit/smctemp 源码 make 了一份,装到 ~/.local/bin/。smctemp -c 在 M 系列上能正确返回温度。
最后一步是让服务开机自动起,崩了自动拉。
macOS 上原生方案就是 launchd。我写了一个 ~/Library/LaunchAgents/com.luojian.kindle-ai-monitor.plist:
加载:
之后这服务就跟系统里的其他后台进程一样,我平时几乎感觉不到它的存在。
直到我抬头看一眼 Kindle。
现在 Kindle 就斜立在键盘右上方,屏幕常显,每 30 秒自动刷新一次。
看视屏看到半路,余光扫一眼:
kindle-ai-monitor 项目里,已活跃 14 分钟,没卡。shiguang-huimou 项目里,闲了 7 分钟,该回去看下进度。少切几次 terminal,当然是有用的。
但对我来说,更爽的地方是:这台本来躺在抽屉里的 Kindle,终于又成了桌面工作流的一部分。
它不抢注意力。普通第二屏会不断诱惑你看消息、看网页、看各种动效;Kindle 的 e-ink 屏很慢,反而天然克制。它只适合显示那些“不急,但一直有用”的信息。
这也是我做完之后最大的感受:
这个小工具目前没有开源,也不打算做成一个需要维护的开源项目。
一方面它非常依赖我自己的本地路径、设备摆放和使用习惯;另一方面,真正有复用价值的其实不是代码,而是这套思路。
如果你也有台吃灰的 Kindle,或者别的旧平板、旧手机、小屏设备,最值得抄的是这个方向:
E-ink 屏除了看书,真的还能干点别的。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-08-18
AI办公大战,最可能的赢家会是谁?
2026-08-06
GitHub 开源 MimiClaw:5.6k Star,$5 的 ESP32 芯片跑完整 AI 助手——没有 Linux,全用 C 写的
2026-08-05
ESP32-S3 为什么能听懂“你好小智”?一篇讲清离线语音识别原理
2026-08-05
不用跳出聊天框,长按键盘就能让AI直接干活了
2026-08-02
小小树莓派,正在成为 AI Agent 的身体!
2026-07-28
为了省一支麦克风,我踩了两条 Apple Watch 语音输入的坑
2026-07-26
做了10多款硬件后,我开始警惕产品里的“全都要”
2026-07-23
深度|把千亿参数模型搬到本地,这家“隐身”公司在赌什么?
2026-06-22
2026-05-31
2026-06-30
2026-07-05
2026-07-16
2026-07-14
2026-07-20
2026-07-20
2026-06-24
2026-07-04
2026-08-18
2026-07-23
2026-04-12
2026-03-19
2026-03-17
2026-02-17
2026-01-29
2026-01-22
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。