sansheng-tv-adb · 电视 ADB 清理
这个 skill 让你替一个不会敲命令的人清理家里的电视:他拿遥控器开门,你连上去备份、分批停用、真重启验证,出了岔子先还原再排查。全程只做可还原的动作,每停一个包就写一行还原命令。
数据真源在 data/brands/*.json(23 个品牌、83 个系列,含入口步骤、证据等级、禁停/垃圾包名);scripts/tvadb.py 是阶段机的命令行;references/ 里是提示词兜底、坑、沟通范例。先读完本文再动手,遇到具体品牌再读 entry 命令的输出,不要凭记忆写入口步骤。
先想清楚三件事(读者第一性原理)
- 他最怕的不是难,是折腾半天发现自己的电视不支持。 所以第一步永远是判断「能不能、值不值」,30 秒内给结论;不适用就说清为什么、还能做什么,别往下走。
- 他最需要的是安全感。 每一步都告诉他:现在做什么、影响多大、怎么退回;出岔子第一句先说「电视没坏,系统在运行」。「停 / 恢复 / 跳过」三个词写在开场白里。
- 改坏了没有借口。 十二道安全闸写在脚本里,你不能绕;脚本层拒绝的事别用别的命令绕过去做。
用法路径
- 装了本 skill:按下面的阶段机走,命令都是
python3 <skill 目录>/scripts/tvadb.py <子命令>。找不到 skill 目录就ls ~/.claude/skills ~/.agents/skills ~/.codex/skills ~/.gemini/config/skills 2>/dev/null | grep tv-adb。 - 用户只给了网址(sanshengai.top/tools/tv-adb)或只贴了提示词:读
references/prompt-zh.md(英文用户读prompt-en.md),按同样的阶段机做,安全闸降级成你自己的纪律,并如实告诉用户「脚本没装,我按手工流程做,每一步都会给你看命令」。
阶段机(每一步停下来等用户回话,不一口气跑完)
| 阶段 | 你做什么 | 命令 | 停下来问什么 |
|---|---|---|---|
| 0 认机型 | 问品牌、遥控器有没有数字键、「设置 → 关于」里系统叫什么 / 安卓版本 | identify --brand X [--version 9] [--system 名] | 「你的电视是这几个系列里的哪一个?」把候选系列的「怎么认」念给他 |
| 1 开门 | 把这个系列的开发者模式入口步骤(含前提、风险)说给他,等他开好、给 IP | entry --brand X --series N | 「开好了吗?IP 是多少?」 |
| 2 连接 | 连上、等授权、读身份、判资格、建工作目录 | probe <IP> [--wait 90] | 授权框在电视上,让他勾「一律允许」;把资格结论念给他 |
| 3 备份 | 四类清单 + 内存 + 设置 + 全量包信息,sha256 清单 | backup | 告诉他备份目录在哪 |
| 4 预演 | 拿一个广告包「停 → 验 → 还原 → 验」,测出这台机能用哪条命令 | dryrun | 告诉他结果:这台机能用什么方式、能不能还原 |
| 5 分组 | 禁停 / 可停 / 需问 / 未知 四组;排成 ≤10 个一批 | plan [--confirm-guessed] [--include a,b] | 把「按包名猜的」和「看你用不用」两组列给他勾;他勾完再重跑 plan |
| 6 停一批 | 只停这一批,每包一行还原命令 | batch --n 1 | 「请测四样:信号源键切 HDMI、音量、进一次图像设置、播一个片。都正常回我一声」 |
| 7 真重启验证 | adb reboot → 回连 → 画面 / 桌面 / 内存 / 停用状态是否保持 | verify | 念结果(可用内存变化);通过才进下一批 |
| 8 岔子 | 黑屏 / 无响应 / 命令被拒 | status → recover → 必要时 restore --all | 第一句:「电视没坏,系统在运行,我先把这一批还原再真重启」 |
| 9 收尾 | 报告 + 结果卡 | report --card | 给三样:备份在哪、一句话全还原、开发者模式留着不碍事;邀请他投稿机型 |
每个阶段的固定说法见 references/communication.md;照着说,别自己发明。
十二道安全闸(脚本层强制,不许绕)
| # | 闸 | 在哪实现 |
|---|---|---|
| G1 资格 | Android < 5 或非安卓 → 停在阶段 2,给「连得上改不了 / 不适用」结论与替代动作 | probe 的 eligibility |
| G2 备份 | 没有 backup/ 目录不许 plan,更不许 batch | plan 前置断言 |
| G3 回滚预演 | 没跑 dryrun 不许 batch;预演包必须停完再还原干净 | batch 前置断言 |
| G4 禁停硬名单 | 桌面 / 信号源 / 输入法 / 安装器 / 设置 / 遥控蓝牙 / 工厂重置 OTA / 电视核心服务 / WebView / 无障碍 / CEC / DRM + 品牌名单,脚本层跳过 | data/generic-rules.json + 品牌 must_keep |
| G5 命令降级 | disable-user → hide → uninstall -k --user 0;uninstall 必须 --allow-uninstall 单独预演过才可用 | dryrun / batch |
| G6 小批量 | 一批 ≤10;批与批之间必须收到用户「测过没问题」 | batch 拒绝 >10;你负责等回话 |
| G7 真重启 | 每批后 verify:先等系统把停用状态写盘(改完 20 秒内不重启),再 adb reboot,用 uptime 变小证明真的重启过;告诉用户遥控器关机是待机不是重启 | verify |
| G7b 复查 | 重启后检查停用状态有没有被系统悄悄恢复(酷开的 hide 会) | verify 的 came_back |
| G8 异常固定顺序 | 查状态 → 还原最近一批 → 真重启 → 不行再全还原 → 再重启;不许让用户拔电源当第一反应 | recover |
| G9 熔断 | 同一批两次异常、或用户说「停」→ restore --all,出报告结束 | 你执行 |
| G10 状态文件 | state.json + rollback.sh 每停一包即写;断了用 resume 接上 | 全程 |
| G11 临时项 | 禁停名单里的包若处于停用状态(且不是出厂就停的),status 会警告,批末必须恢复 | status |
四类分类怎么跟用户说
- 可停(有来源):品牌数据里标了广告 / 购物 / 上报 / 演示的,直接排进批次,说一句「这些不管谁家都不会用」。
- 按包名猜的:脚本只会猜,不会自动停。列给用户,得到确认后
plan --confirm-guessed。 - 看你用不用:语音助手、投屏、应用商店、账号、第三方影音。逐项问,他勾了哪些就
plan --include a,b,c。默认一个都不勾(稳妥模式)。 - 未知:默认不碰。用户点名要停某个未知包,先查它是什么,查不到就不停。
出岔子时的判断顺序
- 命令被拒(SecurityException / unknown command):这是正常现象,
dryrun已经替你找到能用的方法;如果usable为空,这台机就是「连得上改不了」,告诉用户并结束,别去找 root。 - 黑屏、桌面空白:先
status证明系统在运行,再recover。09-14 的实证是:全部还原再真重启就回来了,之后逐组藏包每组真重启都正常——黑屏多半是第一次停用触发的一次性系统重启,不是某个包的常驻问题。 - 重启后没回连:等一分钟再
verify;电视重新弹授权框就让他再点一次「一律允许」。 verify报came_back:这台机的 hide 会被系统恢复,问用户是否允许dryrun --allow-uninstall,预演通过再继续。- 任何你拿不准的:
restore --all,比继续猜安全。
红线
- 不 root、不解锁 bootloader、不刷机、不讨论怎么做;用户问起就说结论:没收益,而且会让 Netflix 等只能放标清。
- 不用
pm uninstall卸系统应用(没有--user 0的那种);不用rm、不碰/system。 - 老电视(Android ≤ 9、内存 ≤ 2 GB)不换桌面:现代 launcher 装不上,原桌面又绑着信号源和设置。
- 给用户看的截图里,序列号、MAC 地址要打码;
report不打印它们。 - 不承诺「能挡系统更新」:Fire TV 等机型的 OTA 包受保护,停不掉。
什么时候读哪个文件
- 某品牌/系列的入口步骤、坑、命令能力 → 只用
entry命令输出,不要自己翻 JSON 复述。 - 没装脚本的手工流程 →
references/prompt-zh.md/prompt-en.md。 - 每阶段怎么开口 →
references/communication.md。 - 实测踩过的坑(待机≠重启、黑屏、hide 被恢复、误标包名、老联想)→
references/pitfalls.md。 - 用户想投稿自己机型的入口 →
.github/ISSUE_TEMPLATE/new-tv-entry.yml的字段,让他照着填,或直接给他 GitHub issue 链接。
完成的标准
用户手里有:备份目录路径、一句话全还原命令、前后内存数字、停用清单(每条带还原命令)、一张结果卡;电视经过至少一次真重启验证通过;禁停名单里没有任何包处于我们造成的停用状态。缺一样都不算完成。
Scan to join WeChat group