把吃灰的 Kindle 变成 Claude Code 的状态屏。
灵感来自字节笔记本 2026-05 的「把盖泡面的 Kindle 变成 Claude Code 的监视屏」一文,独立实现 + 工程化。
/kindle-claude-monitorClaude Code 在长任务里会停下来等用户确认(PermissionRequest / Notification),如果不盯终端容易卡很久没人管。这个 skill 把所有 hook 事件转发到本地 HTTP server,渲染成大字号 HTML,让任何带浏览器的二屏(Kindle / 旧手机 / iPad / 桌面副屏)都能远远扫一眼看到状态。
text
Claude Code (Mac)
├─ hook (PreToolUse / PostToolUse / Notification / Stop / ...)
│ ↓
├─ ~/.claude/kindle-monitor/notify.sh (透传 stdin + 后台 POST)
│ ↓
├─ Python HTTP server (port 8787, launchd 守护)
│ ↓
└─ HTML (meta refresh 每 3s) ← Kindle 浏览器
状态触发事件视觉就绪SessionStart / SessionEnd白底大字思考中UserPromptSubmit / PostToolUse白底大字执行中PreToolUse白底大字 + 工具名 + 输入摘要请 确 认Notification反白震动 + 项目名 + 消息框已完成Stop白底大字
单 session 监控容易被多 session 干扰:A 在等确认时,B 跑了一个 PreToolUse 直接把 banner 冲掉。本 skill 引入 waiting_session 字段——一旦某 session 进入 waiting, 其他 session 的事件只追加到事件流(带 ~ 前缀)但不抢 banner。
/reset 端点手动重置notify.sh 用 printf '%s' "$INPUT" 把 stdin 原样吐到 stdout,POST 走后台 + curl 1s 超时——hook 失败永远不会拖慢 Claude Code。
配 KeepAlive=true,进程崩了自动重启;开机自启。
bash
# 1. 克隆
git clone https://github.com/heavenchenggong/kindle-claude-monitor.git \
~/.claude/skills/kindle-claude-monitor
# 2. 跑安装脚本
bash ~/.claude/skills/kindle-claude-monitor/install.sh
install.sh 会做这些事:
server.py / notify.sh 拷到 ~/.claude/kindle-monitor/~/Library/LaunchAgents/ 并启动~/.claude/settings.json 的 hooks 里 append 7 个 kindle 钩子(不动既有 hooks)http://<Mac-IP>:8787/路径用途/仪表盘(meta refresh 3s)/raw.json原始 state JSON(debug)/healthz健康检查/reset紧急清空所有状态(包括卡死的 waiting 锁)/event (POST)hook 调用入口
变量默认说明KINDLE_MONITOR_PORT8787HTTP server 端口KINDLE_MONITOR_REFRESH3meta refresh 秒数KINDLE_MONITOR_WAITING_TIMEOUT300waiting 锁超时秒数
改了之后改 plist 里的 EnvironmentVariables 块,然后 launchctl unload && launchctl load 一次。
bash
bash ~/.claude/skills/kindle-claude-monitor/uninstall.sh
会停 launchd、删 LaunchAgents plist、从 settings.json 移除 7 个 kindle 钩子(保留其他不动)。
现象原因修法Kindle 转圈连不上macOS stealth mode 把 LAN 包丢了sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode off浏览器都连不上server 没起来launchctl list | grep kindle-monitor 看是否 running,看 ~/.claude/kindle-monitor/launchd.err.logMac 端能开 localhost 但 Kindle 连不上Mac IP 变了ipconfig getifaddr en0 拿新 IP,路由器后台给 Mac 设静态 DHCP 租约一劳永逸显示一直停在「请确认」但没在等虚拟 session 锁死浏览器开 http://<Mac-IP>:8787/reset,或等 5 分钟事件流里看到 ~PreToolUse来自其他 session 的事件被锁住时只追加不抢 banner这是设计行为,不是 bug
字节笔记本《把盖泡面的 Kindle 变成 Claude Code 的监视屏》(公众号 2026-05-26)—— 提供了核心 idea。本实现独立完成,加了多 session 粘性锁、超时兜底、reset 端点、launchd 守护这些工程化细节。