惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
SecWiki News
SecWiki News
爱范儿
爱范儿
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
S
SegmentFault 最新的问题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
V
V2EX
博客园 - 司徒正美
WordPress大学
WordPress大学
Y
Y Combinator Blog
B
Blog RSS Feed
H
Help Net Security
C
Check Point Blog
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
Application and Cybersecurity Blog
Application and Cybersecurity Blog
B
Blog
Help Net Security
Help Net Security
罗磊的独立博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Heimdal Security Blog
大猫的无限游戏
大猫的无限游戏
Security Latest
Security Latest
Cisco Talos Blog
Cisco Talos Blog
Blog — PlanetScale
Blog — PlanetScale
A
Arctic Wolf
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
The Register - Security
The Register - Security
F
Fortinet All Blogs
S
Securelist
Microsoft Security Blog
Microsoft Security Blog
O
OpenAI News
P
Privacy & Cybersecurity Law Blog
C
Cybersecurity and Infrastructure Security Agency CISA
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
AWS News Blog
AWS News Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
T
Threat Research - Cisco Blogs
Martin Fowler
Martin Fowler
D
Docker
C
Cisco Blogs
C
CERT Recently Published Vulnerability Notes
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
歪用 HomeKit 让 Siri 更「听话」 - 少数派
2017-06-07 · via 少数派

无论是否常(实)用、不管是虚拟的还是实体的,语音助手,无疑正在成为一股潮流。本次 WWDC 一个看点也是苹果会否推出智能音箱,或是对 Siri 叕一次升级,不过在此之前,我们依然可以做些什么,让 Siri 对你「言听计从」(目前不包括 Mac 上的 Siri,因为没有接入 HomeKit)

这不是一篇详尽的教程,而是想和大家交流一些想法,DIY 玩起来(当然干货也是有的,提供了一个 Homebridge 插件,可以在部署了 Node.js 及 Homebridge 的环境下安装)

先看一个例子

  • 对 Siri 下达「睡眠电脑」,屏幕就会进入睡眠状态

或者复杂一点的

  1. 对 Siri 下达「更新树莓派」,树莓派会执行sudo apt-get update,并且通过 Telegram 推送执行结果,如果有待更新软件包,还会新建一个 Todoist 任务,评论内容为软件包信息
  2. 对 Siri 下达「升级树莓派」,会执行sudo apt-get dist-upgrade,推送成功,并完成 Todoist 任务
Siri 命令与消息通知
Siri 命令与消息通知

Todoist 任务
Todoist 任务

通过 HomeKit 执行 Shell 脚本

熟悉 Homebridge 的朋友当然了解它的强大与灵活,我们可以利用提供的接口编写插件,将原本并不智能的设备纳入到 HomeKit 的管理中,或者做任何想做的事,这个实现也不例外

直观的方案

我们要做的,是扩展 HomeKit 的功能,使之能执行自定义的命令

其实社区不乏这样的实现,我们可以很容易地虚拟一个开关之类的设备,然后打开它的时候去执行预设的 Shell 脚本(能执行 Shell 就约等于能做任何事)

这个方法很直观,但是我们当然不希望每个 Shell 脚本都需要添加一个虚拟开关,并且在使用 Siri 的时候用「打开 / 关闭 xxx」这样的句式来下发命令

转换思路

其实想一下,我们并不是必须靠「开关」来执行命令,我们需要的是改变虚拟设备的状态,就触发相应的脚本,所以接下来就顺理成章了,HomeKit 里智能灯拥有最多的可控状态,1 个智能灯,通过改变亮度(0 - 100)就可以对应约 100 个命令

HomeKit 中智能灯采用 HSV 色彩空间,也就是说除了「亮度 V」,还有「色相 H」、「饱和度 S」可以利用,但是根据 Homebridge 接口的特点,实现各属性的乘数关系比较复杂,简单与直观起见,只用亮度通常就足够了

这样,我们就可以设定亮度为 1 时,执行某个脚本;设定亮度为 2 时,执行另一个脚本等等,极大地减少了添加虚拟设备的数量

不同的亮度对应不同的脚本
不同的亮度对应不同的脚本

滑动操作的缺点

前面我们设计通过改变智能灯的亮度来执行 Shell 脚本,但是你一定不想在 UI 上滑动亮度条,鬼知道「沿途」会触发多少目标之外的脚本,而且每个亮度对应的脚本具体是什么也不容易记忆,这时候「场景」就派上用场了

场景与命令映射

我们可以设定多个场景,每个场景中智能灯的亮度不同,进而对应不同的脚本,这样去点按场景就很方便了,而且与「给每个命令都映射一个开关」的方法相比,虚拟一个设备而设定多个场景的方式显得更「优雅」一些

场景与命令映射
场景与命令映射

用语音去设定场景,就好像在「执行语音命令」

自然地,我们会给这些场景起一些有含义的名字,比如上面的例子。至此,我们「执行语音命令」的目标其实就已经达成了

最初想到可以这样做是缘于一次搞怪:

当 HomeKit 接入了一些设备,比如智能灯(真正的),我们自然会想要捉弄下 Siri,于是我说:要有光。不出意外,Siri 没那么「聪明」。不过如果这样设置,我们对《最后的问题》的致敬就可以完成:

要有光
要有光

显然,Siri 对场景名称是敏感的。正如系统建议的「出门」、「到家」、「晚安」、「早上好」那几个场景一样,我们只要用想要执行的命令名称(或任何话,只要 Siri 能正确「听写」)来创建场景,比如「睡眠电脑」、「关闭电脑」等等,然后去编写对应的 Shell 脚本就好

刚设置好的场景,可能要等一会儿 Siri 才能正确索引和识别

几个体验上的问题 & 细节

原理很简单,交流几个应该考虑的问题:

  • 屏蔽误触。毕竟是添加了一个设备,有时会不小心开关它,我们可以编写一些策略来屏蔽它,比如响应「开 / 关」操作时,异步还原它原本的开关状态;只有「修改亮度」操作才真正进行处理,同时将开关状态置为「开」
  • 忽略模糊指令。同样,毕竟是添加了一个「灯」,如果对 Siri 下达类似这样的指令:「将灯亮度调到 x」,这会改变所有智能灯的亮度,而如果 x 恰好对应了一个 Shell 的话……这一定不是我们期望的。这个问题解决起来麻烦一些,一个可行的方案是再添加一个虚拟灯,如果我们发现这两个灯「同时」收到命令的话(实际上是两条并发的命令,但中间会有一点时间差),就可以认为该命令是模糊指令,然后忽略它

插件使用说明

需要先行配置好 Node.js 及 Homebridge,请参考相关教程

下面是我写的一个 Homebridge 插件,仅供参考。安装命令:

npm install -g homebridge-command-bulb

插件配置

默认不需要配置。如果想要修改 Shell 脚本存放路径,或者需要 Telegram 推送功能,Homebridge 配置如下(如果有其它插件配置,注意合并):

{
    "platforms": [
        {
            "platform": "CommandPlatform",
            "directory": "~/.homebridge/commands",
            "tg_token": "",
            "tg_chat_id": "",
            "proxy": "http://localhost:8888"
        }
    ]
}
  • 需要自己创建 Shell 脚本目录,默认为~/.homebridge/commands
  • Telegram token 需要通过 @BotFather 申请;chat id 可以通过 @get_id_bot 获取
  • 插件连接 Telegram 通常需要 proxy,请科学解决。如果是 socks proxy 的话可以用 privoxy 转换为 http proxy

重启 Homebridge 后会添加两个灯,「Command Bulb」和「Probe Bulb」,前者用于执行命令,后者用于排除模糊指令干扰(没有其它用处,请无视它的存在)

脚本规则

脚本应具有可执行权限,约定先于配置,脚本前缀、后缀采用如下规则

  • 前缀(前两位,01 - 99)用于映射亮度,比如「01」对应亮度为 1,此外,所有前缀为「01」的脚本都会被执行,可以一次执行多个独立脚本。预留了亮度为 0 和 100 两个值用于标识「成功 / 失败」,所以不要用「00」作为前缀
  • 后缀用于辅助功能,目前是用于 Telegram 推送消息(在配置了相关参数的情况下)
    • 「.ok」表示执行结果为成功时推送「Command: xxx OK!」消息。注意,默认情况下,执行过程中存在 stderr 不会被认为是失败
    • 「.out」表示推送 stdout
    • 「.err」表示推送 stderr,并且执行过程中存在 stderr 会被认为是失败
    • 如果失败,总是会推送「Command: xxx Failed!」消息,无需后缀
    • 多个后缀可组合,如「.ok.out」,会推送成功和标准输出两条消息
    • 其它未定义的及「.sh」可有可无,会忽略

一些使用建议

  • 不要将两个虚拟灯加入个人收藏,最好新建一个房间来摆放它们,尽量减少直接操作它们的机会
独立房间
独立房间
  • 新建两个场景「成功」、「失败」(「成功」对应于「Command Bulb」关闭状态,「失败」对应于其亮度为 100 的状态),用于标识执行结果,可以添加到个人收藏充当信号灯;而其他命令的场景最好不要添加到个人收藏(太多会显得乱,而且我们倾向于用 Siri 来触发而不是点按)
成功 / 失败场景作为信号灯
成功 / 失败场景作为信号灯
  • 有一个家庭中枢会方便很多,同时也使得外出时 HomeKit 依然可用。如果用闲置的 iPad 作为中枢,将「自动锁定」关闭可以保持 HomeKit 总是可用,亮度可以调到最低

控制 Mac 的方法

通过 SSH 控制 Mac 执行命令

原理是在运行 Homebridge 及插件的服务器上,通过 SSH 连接 Mac 执行命令,类似这样:

ssh user@ip 'shell 命令'

所以需要在 Mac 打开系统偏好设置 -> 共享 -> 远程登录

其中 user 为 Mac 的用户名(在终端中运行whoami即是),ip 为 Mac 的地址,可以在路由器中绑定,或者用共享设置页面显示的类似 xxx.local 的地址,更加灵活

设置 Mac SSH 免密登录

在服务器上 SSH 到 Mac 还需要输入密码,所以要设置免密登录(只对该服务器有效)

在服务器上运行ssh-keygen -t rsa,一路回车,会在服务器的 ~/.ssh 目录下生成两个文件,把其中 id_rsa.pub 中的内容粘贴到 Mac 的 ~/.ssh/authorized_keys 文件中即可

示例

  • 睡眠电脑(屏幕)
    ssh user@ip 'pmset displaysleepnow'
    
  • 关闭电脑
    ssh user@ip 'osascript <<EOF
    tell application "Finder" to shut down
    EOF'
    

    it works 还是 it just works

整个方案是可行的,对原本 HomeKit 的「侵入性」相对比较小,就我个人体验来说还不错,不过当然也有无法克服的缺点:

  • 需要自己编写 Shell 脚本
  • 终究是显式地引入了虚拟设备,也为此不得不考虑容错机制。不过增加的设备也可以成为功能的扩展点
  • 语音与命令终究是静态映射,不能动态解析和响应,所以需要手动设定较多场景
  • 受制于 HomeKit 接口的开放 / 破解程度,未来可能会失效
  • Siri 对场景的名称并不总能正确解读。比如设置了一个「关闭电脑」命令,因为包含了 Siri 指令系统的关键字「关闭」,它就不干(不过如果说「请关闭电脑」,却能正确识别,迷之傲娇)
要有礼貌
要有礼貌

采用这个方案,我们实际上并没有让 Siri 更「聪明」,而是用一种比较 tricky 的方式,让 Siri 更「听话」,有一说一,说一不二,说二就听不懂了

这自然不是最佳的体验,不管是语音助手,还是智能家居,都应该有更加直观的界面、更加动态的实现。期待本次 WWDC 能给我们带来更多「it just works」的特性,也期待被收购的 Workflow 能早日加入 Siri 的支持