Hotdry.
web

Firefox AI 杀手开关工程实现:隐藏 about:config 配置、持久默认启用与 UX 陷阱

剖析 Firefox 148+ AI kill switch 的工程细节,包括官方 UI、隐藏 prefs 清单、user.js 持久化策略,以及默认 Available 状态带来的 opt-in 工程挑战,提供完整禁用参数与监控要点。

Firefox 在 148 版本引入了 AI Controls 设置页面,提供了一个 “Block AI enhancements” 主开关,用于禁用所有当前和未来的内置 AI 功能,如网页翻译、PDF 图像 alt 文本生成、AI 增强标签分组、链接预览以及侧边栏 AI 聊天机器人。[Mozilla 官方博客指出,这一开关会隐藏 AI UI 入口点,并阻止模型下载与提示。] 该设计旨在实现 opt-in,但实际工程实现中存在隐藏配置、持久默认启用以及 UX 摩擦点,导致用户需额外工程干预才能彻底禁用。

官方 UI 层面的 kill switch 机制

在 Settings > AI Controls 中,每个 AI 功能有三种状态:Available(默认,可见但未激活模型)、Enabled(用户主动使用后启用)和 Blocked(隐藏,无法使用)。主开关 “Block AI enhancements” 一次性将所有功能设为 Blocked,并持久化跨版本更新。这依赖于 prefs.js 中的 browser.ai.control.* 系列配置,例如 browser.ai.control.translations、browser.ai.control.pdfjsAltText 等,值为 “blocked” 时生效。

工程落地参数:

  • 路径:Menu > Settings > AI Controls。
  • 主开关:启用后,自动清理本地模型,停止资源消耗。
  • 监控点:观察 prefs.js 中 browser.ai.control.default = "blocked";若更新后重置,需脚本自动化检查。

尽管 UI 友好,但默认 Available 状态会让 AI 选项在上下文菜单、侧边栏等处浮现,用户需先发现设置页面,这构成了 opt-in 难度:AI 表面化前置,用户被动暴露。

隐藏的 about:config prefs:底层 ML 引擎控制

官方 UI 未覆盖所有底层 ML 组件,需通过 about:config 访问隐藏 prefs。这些 prefs 以 browser.ml.* 和 extensions.ml.* 开头,是 Firefox ML 引擎的核心开关。搜索 “.ml.” 可列出全部。

关键禁用清单(设为 false):

  • browser.ml.enable:ML 引擎全局开关,虽非完美覆盖,但禁用大部分。
  • browser.ml.chat.enabled:侧边栏聊天机器人(Claude、ChatGPT 等)。
  • browser.ml.linkPreview.enabled:链接悬停预览总结。
  • browser.ml.pageAssist.enabled:页面辅助分析。
  • browser.ml.smartAssist.enabled:智能助手(未来侧边栏)。
  • extensions.ml.enabled:扩展 AI API。
  • browser.tabs.groups.smart.enabled:AI 标签分组建议。
  • browser.search.visualSearch.featureGate:图像 Google Lens 搜索。
  • browser.urlbar.quicksuggest.mlEnabled:地址栏 AI 建议。
  • pdfjs.enableAltText:PDF alt 文本生成。
  • places.semanticHistory.featureGate:语义历史搜索。
  • sidebar.revamp:重设计侧边栏(含 AI)。

这些 prefs 在 about:config 双击 Toggle 或编辑值为 false。风险:版本迭代可能新增 prefs,未及时禁用将导致漏网。

持久化策略:user.js 工程模板

UI 和 about:config 修改易被更新覆盖。为工程化持久禁用,使用 user.js 文件:Firefox 启动时自动加载,覆盖 prefs.js。

创建 profile/user.js(about:support 打开 profile 文件夹):

user_pref("browser.ml.enable", false);
user_pref("browser.ml.chat.enabled", false);
user_pref("browser.ml.linkPreview.enabled", false);
user_pref("browser.ml.pageAssist.enabled", false);
user_pref("browser.ml.smartAssist.enabled", false);
user_pref("extensions.ml.enabled", false);
user_pref("browser.tabs.groups.smart.enabled", false);
user_pref("browser.search.visualSearch.featureGate", false);
user_pref("browser.urlbar.quicksuggest.mlEnabled", false);
user_pref("pdfjs.enableAltText", false);
user_pref("places.semanticHistory.featureGate", false);
user_pref("sidebar.revamp", false);
user_pref("browser.ai.control.default", "blocked");
user_pref("browser.ai.control.linkPreviewKeyPoints", "blocked");
user_pref("browser.ai.control.pdfjsAltText", "blocked");
user_pref("browser.ai.control.sidebarChatbot", "blocked");
user_pref("browser.ai.control.smartTabGroups", "blocked");
user_pref("browser.ai.control.translations", "blocked");

部署清单

  1. 生成 user.js 模板,Git 版本控制。
  2. 批量分发至多机:脚本复制至 % APPDATA%\Mozilla\Firefox\Profiles\xxx.default-release\user.js。
  3. 回滚:删除 user.js 或设为 true/blocked 反向。
  4. 监控:启动脚本 diff prefs.js 与模板,警报偏差。

此策略确保 “零触碰” 持久性,适用于企业 / DevOps 环境。

UX 陷阱与工程缓解

默认 Available 虽不下载模型,但 UI 泛滥(右键菜单、侧边栏按钮)制造 “AI 已启用” 错觉,迫使用户 hunt 设置。扩展 AI(如第三方聊天)不受 kill switch 管辖,需额外审计 about:addons。

缓解参数:

  • 阈值:若 prefs > 5 个 .ml. 为 true,触发告警。
  • 清单:定期搜索 “.ml.” 或 “browser.ai.”,新增设 false。
  • 替代:容器扩展隔离 AI,或政策组策略(Windows)锁定 prefs。

风险与回滚

  • 风险:未来 Firefox 可能强化默认,user.js 被弃用(低概率);性能:禁用后标签分组 / 翻译退化。
  • 回滚策略:备份原 prefs.js,重命名 user.js 为 bak,重启生效。
  • 测试:Nightly 验证 prefs 兼容。

总体,Firefox AI kill switch 工程上注重用户控制,但默认与隐藏性要求主动配置。结合 UI + user.js,实现可靠 “AI-free” 浏览器。

资料来源

查看归档