news 2026/11/5 2:54:55

拆解 RemoveMacAI 的配置档案:restriction 键、MCX 强制设置与把模型下载指向 127.0.0.1 的拦截技巧

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
拆解 RemoveMacAI 的配置档案:restriction 键、MCX 强制设置与把模型下载指向 127.0.0.1 的拦截技巧

拆解 RemoveMacAI 的配置档案:restriction 键、MCX 强制设置与把模型下载指向 127.0.0.1 的拦截技巧

【免费下载链接】RemoveMacAITurn off Apple Intelligence on macOS 27 and get its disk space back. One command, fully reversible.项目地址: https://gitcode.com/gh_mirrors/re/RemoveMacAI

macOS 27 取消了 Apple Intelligence 的总开关,关掉功能后十几 GB 的模型文件仍然留在磁盘上。开源工具RemoveMacAI用一条命令就能关闭功能、删除模型,并阻止 macOS 再次下载,而且全程可逆。这篇文章拆解它的核心产物——一个 配置档案(configuration profile):restriction键如何关掉有官方开关的设置、MCX 强制设置如何接管没有开关的设置,以及把模型下载指向 127.0.0.1 的拦截技巧到底是怎么回事。

为什么选择"配置档案"而不是改注册表

macOS 27 不再有单个总开关,如果只去关各个功能,系统需要时又会把模型悄悄下载回来;直接删文件又不稳定,还可能触碰系统保护边界。

RemoveMacAI 选择的是 Apple 自己的MDM 配置档案机制:工具生成一个标准的.mobileconfig文件,引导用户在"系统设置 > 配置文件"中批准(这一下点击是 macOS 的硬性要求,见 Commands.swift)。档案装上是系统级生效的,macOS 更新不会把它冲掉;而把档案删掉,所有改动原样恢复——这就是"完全可逆"的来源。

整个档案只有一个Configuration类型的主 payload,里面装了三类子 payload,各管一件事:

子 payload类型负责的事
① restriction 键com.apple.applicationaccess关掉所有有官方开关键的功能
② MCX 强制设置com.apple.ManagedClient.preferences接管没有开关键的设置项
③ 下载拦截com.apple.ManagedClient.preferences把模型下载地址指向本机死地址

三类 payload 的生成代码集中在 Profile.swift 的data(keeping:)里,不到 40 行。

第一层:restriction 键——给官方开关上锁

com.apple.applicationaccess是 Apple 经典的"限制"payload(企业设备管理里用它锁 App Store、锁蓝牙等)。它的每个键对应一个官方命名的功能开关:

  • 关 Siri:allowAssistant = false
  • 关写作工具:allowWritingTools = false
  • 关 Genmoji:allowGenmoji = false
  • 关邮件摘要:allowMailSummary = false

工具遍历"要关闭的功能列表",把每个功能对应的键全部写成false(Profile.swift)。"哪个功能对应哪些键"的完整映射在 Catalog.swift 的features目录里——从 Siri、写作工具、Genmoji、Image Playground,到邮件/信息/Safari/备忘录的摘要,共 13 项。

这种"上锁"的可见效果:设置页面对应的开关会被系统锁定,用户点不回去。removemacai status里那些绿色的off (locked)就是读到了这些被强制的键(判定逻辑见 System.swift)。

第二层:MCX 强制设置——没有开关的设置怎么办

有些设置根本不在applicationaccess的键表里:Siri 菜单栏图标(StatusMenuVisible)、语音唤醒(VoiceTriggerUserEnabled)、通知摘要(summarize_previews)、行内文本预测(NSAutomaticInlinePredictionEnabled)……这些没有"官方开关键",restriction 层管不到。

RemoveMacAI 用第二个 payload 类型com.apple.ManagedClient.preferences补上,也就是 macOS 的MCX(Managed Client)偏好强制机制:每个偏好域(如com.apple.Siri、group.com.apple.mail、.GlobalPreferences)单独生成一个 payload,内容统一是Forced→mcx_preference_settings结构(Profile.swift)。

"哪个域、哪个键、强制成什么值"由目录里的ForcedPreference描述(Catalog.swift)。比如通知摘要这条功能没有任何 restriction 键,靠的正是group.com.apple.usernoted域里summarize_previews = false这一个强制项(Catalog.swift)。

两层合起来的原则很简单:有官方键的用 restriction 上锁,没有的用 MCX 兜底,确保每个被关的功能都处于"用户改不回来"的状态。

第三层:把模型下载指向 127.0.0.1——最精巧的一步

删掉模型只是上半场:macOS 在功能需要时会自动把模型重新下载回来,磁盘空间又没了。

RemoveMacAI 的拦截技巧(源自先行工具 pared):Apple 的资产服务(Asset Service)支持按资产类型覆盖下载服务器地址。工具在com.apple.MobileAsset域下,为每一个被删除的模型集强制一个键:

DownloadServerBaseURLOverride-<资产类型> = https://127.0.0.1:9/removemacai-blocked/

关键点:127.0.0.1是本机回环地址,端口9(discard 端口)上没有任何服务在监听。于是 macOS 每次尝试下载模型都会立刻失败——不是慢,是秒失败,磁盘永远不会被重新占满。这个地址定义在 Profile.swift。

哪些模型集会被拦截?只拦截"不再被任何人需要"的集合。判定函数 setsToRemove 的规则是:一个模型集若仍被某个"保留功能"需要,就不删、也不拦。这正是off --keep writing-tools能保住写作工具及其依赖模型的原因——保留项会自动传导到模型层。

可逆性是怎么做到的

  • 稳定 UUID:每个 payload 的 UUID 由标识符经 SHA-1 生成(version 5 风格),永远不变。重新安装新档案时是"覆盖"而非"新增",不会留一堆残留(Profile.swift)。
  • 自标记 payload:档案里额外写了一个以工具自身标识符为域的 payload(installed: true+ 保留的功能清单),status命令靠它判断档案是否在生效(Profile.swift)。
  • 允许移除:主 payload 显式设置PayloadRemovalDisallowed: false,用户随时可自行删除。
  • revert 就是删档案:removemacai revert会打开配置文件页面引导你点"移除"(Commands.swift)。移除后,你原来的设置全部回来,macOS 需要时也会重新下载模型。

不碰系统就能先自检

removemacai selftest在不改动系统任何东西的情况下,把配置档案的生成逻辑重新跑一遍并验证:restriction 值是否正确、每个待删模型集是否都有127.0.0.1:9的拦截键、保留功能是否未被误伤、UUID 是否唯一且稳定(SelfTest.swift)。想动手前心里有底,可以先跑这个。

试一试

仓库是只读的,克隆一份即可用 Swift 构建(需 Apple 芯片的 Mac):

git clone https://gitcode.com/gh_mirrors/re/RemoveMacAI cd RemoveMacAI swift build -c release

也可以用项目自带的 install.sh 一键下载最新 release(会校验 SHA-256)。

关键文件速查

想了解什么看哪里
配置档案怎么拼出来的Sources/removemacai/Profile.swift
功能 ↔ 开关键 / 模型集映射Sources/removemacai/Catalog.swift
"off (locked)" 状态怎么判定Sources/removemacai/System.swift
两步走:装档案 → 删模型Sources/removemacai/Commands.swift
一键自检Sources/removemacai/SelfTest.swift
版本记录(0.2.3 修复了模型大小统计)CHANGELOG.md

📌一句话总结:RemoveMacAI 把"关功能、删模型、防下载"三件事全部装进一个标准配置档案——restriction 键上锁官方开关、MCX 强制设置兜底无键设置、DownloadServerBaseURLOverride把下载指向 127.0.0.1 的死端口。看懂这一个.mobileconfig,就看懂了整个工具。

【免费下载链接】RemoveMacAITurn off Apple Intelligence on macOS 27 and get its disk space back. One command, fully reversible.项目地址: https://gitcode.com/gh_mirrors/re/RemoveMacAI

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/30 16:19:51

eBay 多店管理浏览器?团队协作权限如何划分

eBay 店一多&#xff0c;最容易乱的是人&#xff0c;谁管哪家、权限多少、离职了怎么交接&#xff0c;稍不注意就出错。 eBay多店管理浏览器&#xff1f;就是把店铺、权限、人员、交接收进一套体系&#xff0c;让每项操作有迹可循。怎么分、怎么接&#xff0c;往下看。 一、eBa…

作者头像 李华
网站建设 2026/10/26 9:34:11

UVA 10559 Blocks 方块消除:区间DP状态设计与k维解析

1. 题目本质与核心解题思路1.1 原题描述与样例跑一遍UVA 10559 Blocks&#xff0c;老牌题目&#xff0c;俗称“方块消除”&#xff0c;在算法竞赛圈子里的地位几乎等同于区间 DP 的入门必修课。题目本身并不花哨&#xff1a;给一行方块&#xff0c;每个方块有颜色&#xff0c;你…

作者头像 李华
网站建设 2026/10/26 11:21:35

FPGA SerDes设计实战:从GT Transceiver架构到高速接口调试全流程

1. 写在前面&#xff1a;为什么SerDes是FPGA工程师绕不过去的一道坎很多刚接触FPGA的朋友都会遇到这样一个场景&#xff1a;芯片选型的时候明明看中了高速接口能力&#xff0c;等真正拿到板卡准备调的时候&#xff0c;却发现所谓GTX、GTH、Transceiver这些名词一个个都认识&…

作者头像 李华
网站建设 2026/10/30 21:45:03

Unity3D游戏AI开发:从状态机到NavMesh的完整实战指南

简介&#xff1a;一份广东工业大学硕士学位论文《基于Unity3D游戏人工智能的研究与应用》&#xff0c;面向游戏开发者、AI研究者及Unity3D学习者&#xff0c;探讨如何提升游戏NPC的智能性与灵活性。针对有限状态机与行为树可控但灵活性不足的问题&#xff0c;研究将行为树与机器…

作者头像 李华
网站建设 2026/11/3 2:08:18

串口通信为何仍是IIoT基石?从RS-485到Modbus的工程实践

1. 一块比很多工程师年龄都大的“老接口”&#xff0c;凭什么是IIoT的基石&#xff1f;先说个有意思的现象&#xff1a;最近整理工控柜&#xff0c;翻出一台2003年产的温控仪表&#xff0c;面板上印着RS-485&#xff0c;拨码开关、Modbus地址、波特率跳线一个不少。接了USB转串…

作者头像 李华