最近让我愣住的一幕:「为什么我都没有自己登录,也没有告诉他用户名和密码,他就能从系统钥匙串自己找,自己完成整套动作,甚至都不需要按 Touch ID」。在 Mac 上,按一下指纹的意思是“人在场,人同意”,agent 接手之后,这个前提悄悄失效了。「但是 Claude 本身不像 Elpass 之类的密码管理器那样有密码锁呀」。
所以我的判断是:「假如成为常态了的话,似乎 Touch ID 和 Face ID 之类的认证方式要重新设计」。难处在于两头都得顾:「但是未来需不需要发展到检测屏幕面前是不是那个人,同时不能像 UAC 一样频繁弹窗」。
6 月我拿 Vista 的 UAC 吐槽 agent 提权太烦,那时我站在要一路点“允许”的那一边。现在 agent 连“允许”都不用点了,我反而开始担心那颗指纹按钮形同虚设。
这周我发了一篇笔记,标题叫 Aqua is back,副题是「留意观察 macOS 27 beta 6 的红绿灯」。窗口左上角那三颗按钮换了样子,让我想起 Mac OS X 的 Aqua:beta 6 里按钮从扁平圆点变回带立体高光的样子。「Aqua 是水,Liquid 也是水」,林檎绕了二十多年,又回到水上。
AI System 6 原本只有一个年代,现在我想让它多住几个:「所以我也打算涵盖多一点主题,AI System 6、9、10.2、10.6、10.10 和 26」。难度不是平均分布的,坑在中间:「中间 Mac OS X 的,得认真设计,512 x 512 的图标诶」。Aqua 那几代的图标走写实路线,尺寸一下子大了很多,没法糊弄。
所以我得先给自己设一条线:「我觉得我需要先收口,假如今天还是想不到办法的话,停在 Mac OS 9 的 Platinum 算了」。两天后,对外的说法也定了:「假如明天要发布的话,只能提供 Classic、Platinum 和 Liquid Glass,其他几个还需要更多时间」。首尾两端加一个中间点,先把能交付的交出去,Aqua 那几代慢慢画。
关于系统命名,我给出了新的判断:「个人判断是,像 Golden Gate 这样的具体名字会消失,但是系统本身仍叫 macOS,尊重每款设备不同平台特性」。这跟两个月前的我不太一样,WWDC 那周我还在起哄「回归 System 27 吧如何」。现在我只保留了一半:数字统一,城市名退场,平台名不会被合并掉。
说到 System x.x,我自己的项目倒是用上了这个名字。被问到为什么没有 System 5,我的回答是「System 6 是最后一个黑白界面的 Classic Mac OS」,名字里的数字选的是一个时代的终点。这条预测记为待定,下一次 WWDC 的系统名,会告诉我城市名还在不在。
说完我自己愣了一下:「之所以提起这两个应用,我意识到我也在做同样的蠢事」。6 月我开始复刻经典 Mac OS 的 WindowShade,初衷是「我个人对 WindowShade 的想法是可以隐藏掉 Dock 栏,节省笔记本电脑的纵向空间」。想法我到现在都觉得没错,可它跟 shiftscreen、Lok Board 面对的是同一道门槛:做得出来,不等于有人愿意换。
万物皆可 CLI。agent 都住在终端里,我的反应是反讽:「快进到 macOS 28 把 Finder 革命成 Terminal」,顺便宣布「Macintosh Desktop Experience 是旧时代的糟粕,不要了」。历史其实这样走过一回,只是方向相反:「让我想到以前 Windows 是要敲击“win”命令才能进去的」。后来桌面赢了,命令行退到幕后;现在 agent 又把它请回台前。
我自己的选择恰好跟潮流反着来。5 月我给 AI System 6 定的是一套桌面隐喻:「以及我为 AI System 6 设计的隐喻,模型对应 CPU,上下文窗口对应 RAM,RAG 对应硬盘和软盘,最终交付成果对应光盘」。在我看来 AI 才是那台真正的“电脑”。Finder 会不会真的变成 Terminal 我不知道,我这边先把桌面留着。
这一幕有点眼熟。去年夏天我说「macOS Tahoe 是 Vista」,到了 iPadOS 26.2 真的借鉴了 Vista 的滑块;今年的说法顺势变成:「如果说 Tahoe 是 Vista 的话,那么 Golden Gate 就是 7 了」。只是我个人一直觉得,Windows Vista 比 Windows 7 好看。
OS 27 这一代,iOS、iPadOS、macOS 之间的界线越来越模糊。我的提议是:「回归 System 27 吧如何」。本来 Mac OS 这个名字,是因为当时有 OEM 的 Macintosh,才需要把系统和机器分开叫。如今兜兜转转,「从 System → Mac OS → Mac OS X → OS X → macOS → OS,也算是一种轮回?」
原理是这样的:所有登录同一个 Apple ID 的设备共用一份 CloudKit 数据,网络不畅时可能错乱。所以我在 Mac 上的步骤是,先用 ckksctl status 确认处于 logged in 状态,再用 ckksctl fetch 强制同步一次,接着 ckksctl reset 用云端覆盖本地;确认本地数据完好之后,再用 ckksctl reset-cloudkit 反过来用本地覆盖云端。我当时特别提醒,「keychain-2.db 通常只有几十 MB」,可以用它的大小判断本地数据是否完好。
桌面小组件是个好例子。Sonoma 把小组件放上桌面,Windows 11 有小组件面板,再往前是 Vista 的边栏小工具、Tiger 的 Dashboard。但源头还要更早:「就 Windows 桌面小组件这个案例而言,最早可以追溯到 Windows 95 w/ IE 4.0(Windows Desktop Update)的 Active Desktop」。那时候的做法是把网页直接嵌进桌面,浏览器引擎就是小组件的引擎。
翻完 Apple Intelligence 的系统 prompt,我冒出一个念头:「怎么感觉自己写一个 automator 的 text services,调用本地部署的第三方模型来使用这些 prompt,会比苹果自家的 foundation models 表现更好?」prompt 是现成的,缺的只是一个更大的模型,比如本地跑的 14B,挂在右键菜单的“服务”里。
Apple Intelligence 的 prompt 就躺在系统的 AssetsV2 模型资源目录里,翻了一圈,最大的感受是朴素。写作工具的“改写”就是「很直接,rewrite this text,然后旁边那个“校对”是用的 proofread」,没有什么魔法咒语。
防幻觉的办法也很人类:「Do not hallucinate any value in the response, the value should be either be present or can be inferred from the provided text.」林檎对自家 3B 小模型的脾气,心里有数。
关 SIP 容易,开回来却卡住了。在 recoveryOS 里敲 csrutil enable,确认把安全级别升回完整安全性,输完密码得到一句:「Can’t continue because you are not connected to the Internet」。
换 bputil -f 硬来,开场白先劝退:「This utility is not meant for normal users or even sysadmins.」,接着报的还是同一个错,提示类型是 NetworkRequired。Apple silicon Mac 的启动安全策略要找林檎的服务器做一次个性化签名,离线就过不了这一步。
Intel Mac 时代,一台机器装好系统就是你的。Apple silicon Mac 不一样,它的启动链里有一环握在林檎手上。我去年底梳理过这个顺序:「降低安全性是读取 LocalPolicy 之后的步骤,所以要先解决没有有效的 LocalPolicy 的问题,也就是说新安装系统、第一次开机,是必须经过苹果服务器的」。