17 天 50,040 Star:CleanYourTV 把智能电视的广告“禁“掉,凭什么是 GitHub 周榜第一

发布时间:2026/11/4 23:09:31
17 天 50,040 Star:CleanYourTV 把智能电视的广告“禁“掉,凭什么是 GitHub 周榜第一

数据说明:本文所有 Star/Fork 数字均取自 2026 年 11 月 3 日 GitHub API 实测快照,功能与流程描述以 CleanYourTV 仓库 README 原文为准,未作任何虚构。

打开最近的 GitHub 榜单,你会发现一个耐人寻味的现象:涨星最快的不再是新的 AI 框架,而是一批"帮你的电视戒掉广告"的工具。其中最猛的是Gathin23/cleanyourtv——10 月 17 日创建,到 11 月 3 日 Star 已达 50,040,日均涨星约 2,900,拿下 trendshift 10 月 19–25 当周第一,还被 TechCrunch、XDA 等 54 个国家的 412 篇媒体报道。

任何一个买过智能电视的人对它的动机都不会陌生:开机先看十几秒广告,桌面首屏塞着赞助位推荐,内容行里混着推广内容,卸载不掉、关不干净。CleanYourTV 的 README 显示,它已覆盖 416 个电视型号、106 个品牌,正文翻译成近十种语言,还有独立开发者基于它的清理清单做了手机、Mac 和 Windows 上的社区应用。一个 Python 工具仓库,为什么能让全球开发者如此上头?这篇文章把它的原理、命令和工程设计拆开看看,中间有几处值得写脚本的人抄作业。

一、不是孤例:四个"去广告"项目同时在飞

先看数据(均为 2026-11-03 API 快照):

项目语言StarFork创建日期日均涨星(估算)一句话定位
Gathin23/cleanyourtvPython50,0406,2992026-10-17≈2,944Wi-Fi 瘦身安卓/Google TV,附 tvOS 风格桌面
pengchujin/aerial-tvKotlin8,9877642026-10-20≈642参照 tvOS 的开源 Android TV 桌面,无广告开机接管
rddmwmddr/android-ad-cleanerPython5,8805302026-10-24≈588关闭国产安卓手机系统广告,不 root、可还原
simbasjungles/free-my-tvJava5,7269872026-10-19≈382Google TV / webOS / Tizen 的无广告主屏

四个项目诞生时间集中在两周内,诉求高度一致:不 root、不动系统分区、随时可还原。它们瞄准的对象略有分工——cleanyourtv 和 aerial-tv、free-my-tv 主攻电视大屏,android-ad-cleaner 清理手机(HyperOS、ColorOS、OriginOS、MagicOS 都在其支持列表)。而把它们串起来的技术底座只有一个词:adb。

二、原理拆解:adb 直连 +pm disable-user

CleanYourTV 的核心洞察非常朴素:Android TV 和手机用的是同一套调试桥。在电视的开发者选项里打开 USB 调试(网络调试开关也一并打开),电脑与电视处于同一 Wi-Fi,adb 走 5555 端口直连,接下来的操作就是标准 Android 工具链的活了。

整个流程分三步,README 原文给出的对应关系是:

步骤做什么
备份记录当前安装的包列表和系统设置
禁用用pm disable-user停用厂商的遥测、广告服务、内容推荐位和预装垃圾
安装装一个小体积原生启动器(572 KB,支持 31 种语言)并设为默认桌面

最值得注意的设计决策是禁用而非卸载。这里先解释一下 Android 的机制:系统给每个用户建了独立的包状态,pm disable-user --user 0只是把包在主用户下标记为 disabled,APK 本体原封不动留在系统分区里。对比"卸载"路线——卸系统应用需要 root,或用pm uninstall --user 0硬删、失败后难挽回——禁用的好处是天然的:不需要任何提权,随时可以用pm enable恢复,restore 脚本因此能逐条精确撤销。它的本质就是你在手机上敲过的这条命令:

# 连上电视后,本质等价于(包名以工具生成的清单为准)adb shell pm disable-user--user0<广告服务包名>

把 README 里"三步走"背后的通用 adb 操作翻译出来,大致就是下面这张表——理解了这一层,这套思路完全可以迁移到手机、盒子上:

意图通用 adb 命令
网络连接电视adb connect 192.168.1.50:5555
列出全部包adb shell pm list packages
禁用某包adb shell pm disable-user --user 0 <包名>
恢复某包adb shell pm enable <包名>

另外,各品牌电视的臃肿组件不一样,所以工具不会一刀切:按 README 的描述,它先在你的电视上探测实际装了什么,对"你可能要用"的应用会先询问再动手。所谓"臃肿组件"也不只是广告 SDK,还包括遥测上报、首屏内容推荐行这类你现在大概率想关掉的东西。

三、手动实操:五条命令搞定一台电视

不借助编码助手也能全手动完成。前置环境:Python 3(任意 3.x)跑工具脚本;JDK 17–22 加 Android SDK platform 34、build-tools 34 用于编译启动器——注意 README 特意提醒JDK 23 及以上版本会卡死 Gradle 8.9,平台必须是 34,更新的平台不能替代它。没有这些环境还有docker-build.sh,Docker 里构建(内置 JDK 17 + SDK 34),本机只需要 Docker。

gitclone https://github.com/Gathin23/cleanyourtv&&cdcleanyourtv python3-mvenv tools/venv&&tools/venv/bin/pipinstall-rtools/requirements.txtexportTV_HOST=192.168.1.50# 电视的 IPtools/venv/bin/python-Itools/tv.py--probe# 探测型号、安卓版本、固件tools/venv/bin/python-Itools/tv.py'pm list packages'# 列出电视上的包tools/disable.sh examples/xiaomi-mi-tv-4a/debloat.txt# 按清单禁用(以你的型号清单为准)tools/restore.sh examples/xiaomi-mi-tv-4a/debloat.txt# 一行还原,恢复原生桌面

几个实现细节很见功力:tools/tv.py是一个纯 Python 实现的 ADB 客户端(shell、批量命令、push/pull、截图都支持),在系统 adb 二进制被限制的环境里照样能跑;Chromecast with Google TV 这类强制加密配对的设备,先用官方 adb 配对再adb tcpip 5555即可接入;往电视传 APK 的b64push.py用 base64 分块上传并校验,绕开了直传的限制。官方口径下,配合编码助手走完整个流程约 15 分钟。

四、可回滚性是它的工程灵魂

这项目最值得开发者学的不是 adb 技巧,而是它把"撤销"做成了头等公民:

  • 动手前先记录:disable.sh改任何东西之前,先把电视的原状写进~/.cleanyourtv/;
  • 还原是重放记录:restore.sh按记录逐条恢复,你自己手动禁用的包不会被误启用,桌面回到原来归属的组件;
  • 固件升级后的漂移检测:OTA 会把禁用的包原样装回来、桌面被厂商抢回去,还会冒出新预装。这时check.py对比当前状态与清单,--fix一键修正——这就是基础设施领域常见的 drift detection 思路,被搬到了客厅设备上。

对写运维脚本的人来说,这三件套(备份记录 → 幂等执行 → 漂移检测修复)几乎可以直接套用到任何批量变更场景。它背后其实是两条朴素原则:其一,任何批量变更都应该是幂等的——同一份清单跑一遍和跑十遍,结果应当一致,这决定了--fix可以放心地反复执行;其二,外部环境是会漂移的——固件升级、配置变更、他人操作都会把系统状态拉离你的预期,与其假设"设过一次就永远生效",不如像监控证书过期那样,把"复查差异"做成周期性动作。README 甚至专门写了固件升级的故障恢复文档,把"什么时候会失效、怎么发现、怎么修复"讲在前面,这种坦诚在工具类项目里并不多见。

五、给开发者的可操作建议

  1. 网络 adb 是被严重低估的万能口。电视、盒子、手机、部分车机都暴露这套接口,无需 root 就能做禁用、备份、截屏等大量操作。下次面对"设备上不好删的东西",先想想 adb。
  2. 写自动化脚本先回答"怎么撤销"。备份先行、disable优于delete、操作记录落盘到用户目录——CleanYourTV 的 star 数证明,"随时能全身而退"是用户敢用的前提。
  3. 学它的 PROMPT.md 范式。这个仓库本身不是 AI 项目,却把 vibe-coding 玩得很规范:让编码助手复用仓库现成的disable.sh、build-and-install.sh,而不是让 AI 现场发挥写一套。把仓库当上下文、把工具脚本当接口,是眼下用 AI 做一次性运维任务的可靠姿势。
  4. 风险要有预期。一是固件升级会"翻旧账",需要定期跑check.py;二是给电视开 USB 调试属于官方开发者功能,但部分厂商的保修条款未必友好,动手前自行确认;三是清理清单要过目,别把自己在用的应用禁掉。
  5. 顺手把隐私也收回来。被禁用的不只是广告位,还有厂商的遥测上报服务。对隐私敏感的用户来说,这可能比去掉开机广告更有价值。另外,三星、LG、Roku、Vizio 和 Hisense VIDAA 这类非安卓系统跑不了这套方案,但 CleanYourTV 官网给出了对应机型用遥控器关闭跟踪设置的指引,同样值得一读。

六、结语

50,040 Star、两周内四个同类项目同时起飞,说明"买回来的硬件被广告围剿"是真实的全球性痛点,也说明开发者社区完全有能力用标准工具链给出体面的答案。CleanYourTV 没有任何黑科技,它的成功公式是:一个所有人都会的协议(adb)+ 一份克制的工程纪律(可禁用、可备份、可还原、可检测漂移)。如果你的智能电视还在开机推送广告,不妨按上面五条命令试试;如果你在写自动化工具,不妨把"可回滚"三个字钉在显示器边上。本文数据为 2026-11-03 快照,Star 数会继续变化,工具用法请以仓库最新 README 为准。