📦 Paired — Phone-as-Hardware for OpenClaw — Paired — 为 OpenClaw 提供的手机硬件解决方案
v1.0.0通过Bluetooth和ADB-over-USB,将OpenClaw代理桥接到用户自己的手机。提供SMS接收(MAP/MNS),SMS发送(ADB autosend),以及出局呼叫(HFP...
运行时依赖
安装命令
点击复制技能文档
执行环境 您正在运行一个带有 BlueZ + ofono 的 Linux 主机,并且有一部通过 Bluetooth 配对的手机。38 个底层工具位于 ~/bin/bt-(低级 BlueZ/ofono/ADB 原语)和 ~/bin/paired-(高级包装器,暴露 JSON 清洁接口,设计用于代理调用)。直接通过 bash 运行命令。不要从文档中回答 —— 执行工具并报告它们实际返回的内容。电话身份来自 ~/.config/paired/paired.conf,键为 phone_bt_mac。如果命令需要电话的 MAC 地址,请从配置中读取,而不是询问用户。如果配置缺失,请告诉用户复制 paired.conf.example 并填入 MAC 地址。
最常用的命令 堆栈健康和发现 ~/bin/bt-test # 10 次检查堆栈健康(一次性诊断) ~/bin/bt-adapters # 列出 HCI 适配器 ~/bin/bt-list --paired # 配对设备,包括 CONN/PAIR/TRUST 状态 ~/bin/bt-list --connected # 仅当前连接的设备 ~/bin/bt-list --scan 10 # 10 秒扫描附近的设备 ~/bin/bt-info # 完整设备详细信息(UUID、RSSI、配置文件) ~/bin/bt-recover # USB 重置适配器,如果卡住
配对和连接 ~/bin/bt-pair # 初始化配对(通过 bt-agent 的 passkey) ~/bin/bt-pair --connect # 配对 + 信任 + 连接一步到位 ~/bin/bt-connect # 连接到已配对的设备 ~/bin/bt-disconnect ~/bin/bt-trust | ~/bin/bt-untrust ~/bin/bt-forget # 完全删除配对
电话 —— SMS 接收(仅通过 Bluetooth 读取,大多数手机上可正常工作): ~/bin/paired-sms-watch --status # MNS 推送守护进程是否运行? ~/bin/paired-sms-watch --last 10 # 守护进程捕获的最后 10 条 SMS ~/bin/bt-sms-list --map --max 10 # 显式 MAP 读取最近的 ~/bin/bt-adb-sms-list --limit 10 # 通过 ADB 读取收件箱(即使手机锁定) ~/bin/bt-adb-sms-list --sent --limit 10 # 发送文件夹
发送(通过 ADB-over-USB 自动发送 —— 大多数三星固件上的 Bluetooth MAP 发送被阻止): ~/bin/paired-sms-send "" --json # 传递 --auto-unlock 以使用 ~/.config/paired/pin(0600 强制模式)中的 PIN 解锁锁屏。传递 --relock 以发送后重新锁定。 # 没有 --auto-unlock,工具在手机锁定时返回 error=keyguard_locked。
Telegram 命令快捷方式:当用户在 Telegram 中输入 /sms NUMBER text 时,运行 ~/bin/paired-sms-send NUMBER "text" --json 并报告 JSON 结果。引用整个正文作为一个参数。
电话 —— 通话(通过 ofono 的 HFP) ~/bin/paired-call status --json # 活动通话的结构化形式 ~/bin/paired-call dial # 发起外呼 ~/bin/paired-call answer # 接受来电 ~/bin/paired-call hangup # 结束所有通话 ~/bin/paired-call-and-speak "" # 通过 Tasker TTS 拨打 + 语音(见限制) ~/bin/bt-modems --full # ofono 调制解调器状态,网络注册 ~/bin/paired-call-watch --last 10 # 守护进程捕获的最后 10 个来电 ~/bin/paired-call-watch --status # 来电监视器守护进程是否运行?
实时来电提醒作为 systemd 用户服务运行(paired-call-watch.service)—— 捕获的来电通过 paired-call-watch-tg-hook 发送到用户的 Telegram,包括发送者 + 信任状态信息。
电话 —— Telegram 命令词汇(确定性,绕过 LLM) paired-sms-command-hook.service 解析最新的代理会话 JSONL 并分发识别的命令,而不调用 LLM:
Telegram 命令 操作 信任检查 底层调用 /sms 通过 ADB 发送 SMS 无 paired-sms-send /phone 拨打外呼 无 paired-call dial /phone 通过 Tasker TTS 拨打 + 语音,+ SMS 故障转移 仅限信任 paired-call-and-speak 然后 paired-sms-send /phone attach 拨打 + 语音文件内容 仅限信任 如上 /phone hangup(或 /phone end) 结束所有活跃的通话 无 paired-call hangup /phone status 活动通话状态 无 paired-call status
受信任的列表位于 ~/.config/paired/trusted-numbers.conf —— 通过 ~/bin/paired-trusted add | remove | list 管理。 英国电话号码规范化:+44、0044、44 和 07 格式都匹配同一条目。
为什么 /phone 上的 SMS 故障转移:在某些手机固件(尤其是三星 —— 参见下面的“已知的手机端限制”)上,通话期间的 TTS 被阻止。钩子始终也会触发一条带有相同内容的 SMS,以便确保收件人即使没有听到也能收到消息。 Telegram 回复注释“📨 SMS 故障转移:已送达”以便用户知道。
电话 —— 联系人(PBAP) ~/bin/bt-contacts --max 10 # 列出 10 个联系人 ~/bin/bt-contacts --pull # 将整个电话簿拉取到 ~/Downloads/bluetooth/.vcf ~/bin/bt-contacts --search "name" # 按名称搜索