躺着指挥 AI 写代码,批准时看不见代码

Hello,我是飞飞。
你要是也天天在终端里给 AI agent 按批准,这条新闻值得看一眼。一个中国学生,把 99 块钱的小米蓝牙遥控器 2 Pro,改成了 Mac 的控制台。项目开头写的主打场景就一句话:躺在沙发上指挥 AI 写代码。我刷到的时候,愣了得有十秒。遥控器我家里就有一个,它这辈子的工作是换台。
方向键翻 agent 的结果,按住语音键说话,字直接落进终端。最绝的是它专门给批准做了一层:OK 键等于回车,就是批准;返回键等于 Esc,就是拒绝。批准这个在终端里按到手麻的动作,长出了自己的实体键。
项目叫 godarrenw/mi_remote_control。先交代底:我没装过它。这篇是我把 README、设计文档、源码注释一路啃下来的解读,里面所有「跑通了」「延迟如何」的说法都是作者口径。你当方向看,别当实测看。但有一句话我看完就想说:批准的本钱是看得见,躺到沙发上,这笔本钱正好花掉了。
一个学生和 99 块的遥控器
这地方挑得准。遥控器本身是小米电视的配件,官方定价 99 元,蓝牙 5.4,带麦克风。蓝牙链路上,按键和语音还是两条独立的通道,刚好都能被 Mac 接管。
项目这边更说明问题。7 月 19 号首发,放出的是 v0.1.0 公开预览版,没做 Apple 公证,每次升级要重新授权一回,一个学生的课余项目,就这条件,截至今天攒了 233 个 star。痛是真的:批准按到手麻这件事,憋着一群人呢。作者 GitHub 简介写着 from china, a normal student,粉丝 2 个。
遥控器怎么接管 Mac
拆开是两条链路。按键这条:遥控器 13 个键走标准 HID,说白了,就是键盘通用的那套协议,Mac 配对完直接把它当蓝牙键盘。麻烦在 macOS 不许程序抢蓝牙键盘。作者的绕法是先用系统自带的 hidutil,把一部分键改绑到 F14 到 F18。改绑之后,你按遥控器上那几颗键,在 macOS 眼里就等于按了一下 F15。这几个键系统从来不用,没有默认动作,也没人跟程序抢。再让程序用系统级的按键监听盯住它们,反查出你按的是遥控器上哪一颗。状态机判断完单击长按双击,再合成回车、切窗口这些真动作。退出时映射清空,恢复原样。
语音那条更绕。按住语音键,声音不走普通蓝牙音频,走一条叫 ATVV 的私有通道。这是 Google 给 Android TV 电视盒子定的语音协议,小米是采用方。Mac 系统不认识这条通道,也就不去抢,程序就能独家接管。声音被压成 ADPCM 格式传过来,程序解开,喂给 BlackHole。这是个免费的虚拟声卡,装上等于系统里多了个假麦克风。豆包输入法把假麦克风当录音源,识别出字,打进你光标所在的框。识别环节整个是现成的,项目自己没碰任何 AI 模型。
看到这我笑了。我自己做语音记账 App 的时候,走的是同一条路。按住说话记一笔账,端上规则解析是主力。它的翻车不报错,就两个暗号:金额认不出来,字段里躺着 0;类别认不出来,躺着 -1。程序就盯这两个数,逮到了把这句异步丢给后端的 LLM 再解析一回,2 秒不回来,降级用规则的结果凑合。识别这种又重又成熟的活,说真的,别自己造,把搬运和兜底做好就行。一个学生跟我想到了一处,这大概是工程判断的公约数。
真正戳我的是那颗 OK 键
打开 Presets.swift,批准层的绑定写得清清楚楚:OK 等于 Enter,批准;返回等于 Esc,拒绝或者中断;上下键在选项里挪;音量加减键是切 agent 标签页;菜单键等于 Shift+Tab,切自动模式。连逃生通道都想好了,长按菜单键 1.5 秒,强制清空所有模式。作者在代码注释里写,五家 AI CLI,就是终端里那批 AI 编程工具,审批界面高度一致,一套层能全部复用。这是作者口径,我没逐家核过。但 Enter 确认、Esc 中断、Shift+Tab 切模式这几条,在我天天用的 Claude Code 里属实。
配套还有个提醒子系统:往 Claude Code 的 settings.json 注入三条 hooks,agent 等你批准的时候,遥控器那头会知道。你人躺在沙发上,提示来了,拇指往 OK 上按下去,agent 接着跑。
这颗键的分量在这儿:批准这件事,高频到了值得单独长出硬件的地步。Claude Code 的权限弹窗借用的是键盘回车和 Esc。官方仓库里挂着 issue,说弹窗抢走按键导致误批准、误拒绝。Zed 社区专门开过讨论,要给批准弹窗配专属快捷键。有位开发者说得更直白:真正把 Claude Code 用户搞垮的,是点批准这个动作,一次又一次。
痛点是真的,痛到有人给它配了颗实体键。
沙发上批的是看不见的活
但我得说别扭的地方。我审 agent 的活靠三样:git diff 逐行过,测试跑没跑通,输出对不对。全是看结果,判断从来发生在看见之后。这是我那套土办法的根。
遥控器没屏幕。
你躺在沙发上,提示音响了,屏幕上有什么你看不清,手边只有一颗 OK 键。楼下按门铃,老式对讲机没有画面,你听个动静就按了开门。搁 agent 这儿,门里站着的是要跑命令的它。
公道话得说:项目自己没吹过头。提醒子系统只管提醒,批准还是靠映射键发 Enter 和 Esc。它不替你审内容,文档里也没承诺你不用看。问题出在姿势上。批准的本钱是看得见,遥控器把按键搬到了你手边,把屏幕留在了你眼睛够不着的地方。
我现在的办法是 Claude Code 后台 agents 那块看板,在跑、等你、干完了三栏。空格偷看一眼,回车钻进去接管。接管时它跑在单独的 worktree 里,弄不坏我的目录。这套的前提是我坐在电脑前。遥控器把入口搬到了沙发上,看板还留在原地。
五月我写 Codex 进手机那篇,留过一句话:误审批怎么回滚、危险命令怎么二次确认,两家都没拿出完整方案。三个月过去,官方没交卷,民间先把批准做成了硬件。这个速度差,比遥控器本身有意思。
它自己就像 agent 造的
啃文档的时候我越看越眼熟。仓库根上有 CLAUDE.md。测试计划文件 59KB,还带自检命令。commit 记录里有「终审收口」「双评审并集修复」这种话术,还有以 Merge branch ‘worktree-agent’ 开头的合并记录。设计文档的触发模型枚举里嵌着八个字,「我要测试一下说话」。前后还有异常的空行,像是听写时留下的。
作者没说过这项目是怎么开发出来的。上面这些全是公开可查的仓库事实,我只能摆到这,不下结论。有一条倒可以说:就算真是流水线造的,质量做得像模像样,CI、自检、实机验收清单一样不缺。这跟「AI 造的等于糙」那个老印象,对不上。
我自己这篇稿子就是这么产出来的,搜料、初稿全跑在 Claude Code 上。一个学生用 agent 造出一个管 agent 的工具,我一点不稀奇,我只是没想到它偏偏长成一个遥控器。
批准该顺手还是该消失
还有一层更根本的分歧。Anthropic 在 8 月 14 号把 auto mode 设成了新会话默认。官方工程博客的说法是,让一个跑在 Sonnet 4.6 上的分类器在动作执行前逐条评估,当人类审批者的替身。说人话就是,官方的正式答案是把批准变少,这个民间项目的答案是让批准变顺手。两条路同时开着,谁对?
要承认的是,auto mode 那条路有人抢着走。权限弹窗按到手麻是真的,放手让它自己跑心里没底也是真的,两边都有人在排队。
分开看就有答案了。改坏了能 reset 回来的活,auto mode 替你把批准变少,这是省时间,这份便宜我领。越不敢松手的活,越说明那一步判断值钱,值钱的判断就该配一颗看得见内容的键。遥控器没偷走判断,它只是把判断挪到了你看不见的地方。
我先把加购物车这件事按住了。等我真把它装上,亲手在沙发上批一回,再来写一篇讲讲手感和后怕。你呢,agent 等你批准的时候,你是在键盘前坐得笔直,还是也恨不得躺下?