Featured image of post 大神们开始 vibe 家里的电视机了

大神们开始 vibe 家里的电视机了

Gathin23 开源的 cleanyourtv 用电视自带的 ADB 通道,把 Android TV / Google TV 上的广告、遥测和预装应用逐个禁用,再换上一个 250KB 的仿 Apple TV 启动器。不用 root、不用插 USB,也不卸载任何东西,还原脚本一条命令就能全部复原。

大神们开始 vibe 家里的电视机了

前阵子 GitHub 上最火的项目是 REA(Reverse Engineer Anything,github.com/morluto/rea)。它是个 MCP 服务器,把 Ghidra、IDA、Hopper、JADX 这些专业逆向工具包装成一百多个 AI agent 能直接调用的接口。装好之后你对 Claude Code 说一句人话,比如「搞清楚 Windows 计算器的 % 键是什么逻辑,给我看证据」,它就能自己拆二进制、追调用链,最后给出带证据的结论。这项目四月就建仓了,一直不温不火,十月初突然被点燃,十几天冲到 33 万 star、8.4 万 fork,GitHub Trending 第一连占了好几天,HN 上的讨论近千赞。

跟着起来的是「逆向复刻」潮,下手的还都是手边最熟的东西。Windows 计算器里 200 + 10% 为什么等于 220,REA 把 % 键的处理逻辑翻出来,发现加法和乘法走的是两条分支,最后拿微软开源的常量定义一对,分毫不差。Chrome 的小恐龙为什么越跑越快,它直接从正在运行的页面脚本里读出规则:初速 6,每次更新加 0.001,13 封顶,然后照着这条规则重写了一个带速度滑杆的迷你版。中文圈这边更接地气,有人花半小时让 agent 把剪映的字幕、转场、动画摸清楚,搬进自己的项目;最离谱的一位拆了微信小程序的蓝牙协议,半小时给自家智能马桶攒出个遥控器,电脑上点一下,马桶盖真的翻了。胆子再大一点的已经不满足于拆单个功能,直接照着 Adobe 全家桶复刻,Photoshop、Premiere 的免费替代品没几天就冒了出来,“Software is over” 的口号也是那阵子喊起来的。

当小伙伴都在忙着 vibe coding 的时候,这些大神们又开始 vibe 自己家里的电视机了。起因是 Ryan Doyle 发了条推,说用 Claude Code 把自己电视「黑」了,广告全没了。

开发者 Gathin 顺着这个思路,把父母那台打开 Netflix 之前先弹广告的小米电视收拾了一遍:AI 通过 Wi-Fi 找到电视,禁用了 25 个小米系预装包,还顺手写了个新启动器。他把这段提示词连同整个方案开源成 tv-vibehack,推文两百万阅读,仓库现在改名叫 cleanyourtv,刚开源两三天已经 3.5k star。

项目地址 https://github.com/Gathin23/cleanyourtv

cleanyourtv 是什么

cleanyourtv 通过 Wi-Fi 把 Android TV / Google TV 精简一遍,再把广告满天飞的官方桌面换成一个苹果 Apple TV 风格的启动器。

整个过程不用 root,不用插 USB 线,也不卸载任何东西。它只走电视自带的 ADB 调试通道,把要清理的包逐个禁用,系统分区原封不动,一条命令就能全部还原,玩砸了也不慌。

原理不复杂。Android TV 说到底也是安卓,和手机一样带 ADB。电视端在 Settings → Device Preferences → About 里连按 OK 七次解锁开发者选项,打开 USB debugging,同一个 Wi-Fi 下的电脑就能 adb connect 上去。部分小米电视看不到无线调试开关,但 USB debugging 本身就会放开 5555 端口,一样连得上。之后就是 pm disable-user 逐个禁用厂商的遥测、广告服务和内容推荐行,README 里那台小米电视 4A 一共禁了 25 个包,PatchWall、SmartShare、Alexa 桥接都在列。

这个项目我觉得最妙的地方,是它把「怎么让 AI 干这活」也一并开源了。仓库里有一段 PROMPT.md,当初作者就是用这段提示词让 Claude Code 自己识别电视型号、发现冗余应用、写启动器的。你把它连同型号喂给任何有 shell 权限的编码助手,备份、探测、禁用、构建、截图验证它会自己跑完。作者在 X 上的原话是:“it found the tv on wifi, removed 25 Xiaomi packages and wrote a new launcher. Looks like an Apple TV now lol.”

安装

两条路,推荐第一条。

方式一:AI 助手全自动,顺利的话一刻钟:

  1. 电视端:Settings → Device Preferences → About 连按 OK 七次,返回打开 Developer options → USB debugging,有 Network / Wireless debugging 也一并打开。
  2. 电脑端:把仓库里的 PROMPT.md 连同电视型号一起贴给 Claude Code(Codex 等其他助手也行)。
  3. 电视上弹出 “Allow USB debugging?” 点允许,然后回答助手几个清单问题:常用哪些 App、Dock 放哪四个、语音助手 / Chromecast / 系统更新要不要保留。
  4. 剩下的备份、精简、构建安装启动器、截图验证,助手自己走完。作者第一次花了一下午,现在有仓库上下文,普遍反馈 15 分钟左右。

方式二:完全手动,环境只要 Python 3,脚本同时给了 .sh 和 .ps1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
python3 -m venv tools/venv && tools/venv/bin/pip install -r tools/requirements.txt
export TV_HOST=192.168.1.50

# 探测电视、执行任意 adb 命令
tools/venv/bin/python -I tools/tv.py --probe
tools/venv/bin/python -I tools/tv.py 'pm list packages'

# 应用 / 撤销 debloat 列表(每个型号一份,放在 examples/ 下)
tools/disable.sh examples/xiaomi-mi-tv-4a/debloat.txt
tools/restore.sh examples/xiaomi-mi-tv-4a/debloat.txt

# 构建并安装启动器,安装后约 250 KB
TV_HOST=192.168.1.50 launcher/build-and-install.sh

使用

装完之后电视的开机界面就换了一块。纯黑底,常用 App 收在底部四个圆角胶囊里,Inputs、Wi-Fi、Settings 三个磨砂按钮压在最下面,顶上是一个慢慢漂移的时钟屏保,并且最重要的是没有推荐位也没有广告位。

启动器本身也挺讲究:包名 com.gathin.tvhome,纯 Java 加 AndroidX RecyclerView,没有重量级依赖,针对 1GB 内存的低端电视做过优化,没有模糊、没有视频、没有网络请求、没有后台服务。主题不用重编译 APK,推一个 config.json 到电视就能换颜色、壁纸、dock 布局和网格列数;其他 TV 应用还可以向启动器申请模块卡片,但必须用户明确授权。界面跟随电视语言,简体中文在列。

想还原也简单。恢复脚本会重新启用列表里的包、把原启动器设回 Home、重置动画缩放,但不会自动卸载新装的启动器,需要手动禁用:

1
2
3
4
5
# Android TV
TV_HOST=192.168.1.50 tools/restore.sh examples/<your tv>/debloat.txt

# Google TV 需要额外指定原启动器包名
TV_HOST=192.168.1.50 tools/restore.sh examples/<your tv>/debloat.txt com.google.android.apps.tv.launcherx

支持范围和坑

支持面比想象中广:所有 Android TV / Google TV 设备理论上都行,examples/ 下已经有约 30 个型号的实测清单,小米 8 款、TCL 7 款、索尼 2 款,还有 NVIDIA Shield、Chromecast with Google TV 4K、Hisense、Philips 这些。型号不在列表也不用慌,PROMPT.md 会自动发现那台机器上的冗余应用,清理完欢迎把列表贡献回仓库。

不支持的也说清楚:三星 Tizen、LG webOS 是另一套系统,ADB 这套玩不转;Fire TV 只能做去广告那一半,Fire OS 不允许第三方启动器接管桌面,类似需求可以看看 dumbtv;部分中国版 TCL 会拒绝安装任何启动器。

几个实操上的坑,从 README 和社区反馈里攒的:

  • 顺序不能反:必须先装好新启动器,再禁用原启动器,否则 Home 键会落到工厂测试应用上。
  • Google TV 多一步:包名 com.google.android.tungsten.setupwraith 要一并禁用,不然设置向导会在原启动器被禁后抢占 Home,搞出崩溃循环。
  • 别为禁而禁:广告和遥测尽管清,但 HDMI 输入、键盘这类要想清楚;厂商更新服务禁掉就意味着收不到安全补丁,权衡一下。
  • 干完关调试:回开发者选项把 USB debugging 关掉,谁也不想自家网络上常开着一个 ADB 端口。
  • macOS 连不上:adb connect 报 “No route to host” 是本地网络隐私策略,换仓库自带的 tools/tv.py 就行。

写在最后

这个项目最打动我的地方,不是那个仿 Apple TV 的界面,是「禁错了还能退回去」。刷机、root 那套之所以劝退,就是因为一步走错电视就变砖;cleanyourtv 只是把包禁用掉,restore.sh 一跑就复原,试错成本低到可以放心折腾。仓库里那些按型号整理好的 debloat.txt,价值其实不比启动器低。

所以要不要试,先看电视是不是 Android TV 或 Google TV,再看你愿不愿意花半小时陪 AI 折腾一台家电。两个都占,就值得试。动手时别贪,第一遍只清广告和遥测,系统更新、HDMI 输入先留着,用一周没问题再往下走;三星、LG 和国行 TCL 就别硬来了。

电视大概只是个开头。同一套「让 AI 拆开设备、把不要的东西关掉」的玩法,放到路由器、音箱、车机上多半也成立,只是还没人把提示词写出来。等有人写了,我估计还会再折腾一次。

本博客所有内容无特殊标注均为大卷学长原创内容,复制请保留原文出处。
Built with Hugo
Theme Stack designed by Jimmy