跳到主要内容
AI教程

在 macOS 聚焦搜索和 Siri 中使用 Claude Code

了解如何安装适用于 Siri 的 Claude,将其连接到已通过身份验证的 Claude Code 账户,启用实验性提供商发现功能,并通过聚焦搜索发送文本提示。本教程还将介绍项目架构、安全限制、测试工具、故障排除步骤以及当前局限。

在 macOS 聚焦搜索和 Siri 中使用 Claude Code

Claude for Siri 的功能

Claude for Siri 是一个实验性的 macOS 项目,可将已登录的 Claude Code 账户作为提供方,接入 macOS 聚焦搜索及相关 Siri 界面。其菜单栏应用运行内置的 Swift 桥接程序,接收来自沙盒化提供方扩展的请求,调用本地 Claude Code CLI,并将文本响应流式传输到 Apple 的原生响应界面。

安全警告:该项目要求 macOS 27,并禁用系统完整性保护(SIP)和 Apple Mobile File Integrity(AMFI)。这会大幅降低 macOS 的安全防护能力。请使用专用开发 Mac,而非主要使用或生产机器。应用及其脚本不会替你禁用这些保护。

这是一个独立的概念验证项目,并非 Apple 或 Anthropic 的官方集成。它依赖私有的、特定于测试版的 API,并已在 macOS 27 build 26A428 和 Xcode 27 27A266a 上测试。

主要功能与限制

目前可用的功能

  • 已在聚焦搜索中验证提供方发现、授权和调用流程。
  • Swift 桥接程序可以通过已认证的 Claude Code 账户完成实时请求。
  • 响应会逐步流式传输到 Apple 的原生响应界面。
  • 每个请求都会开启新的对话。
  • 已为选中文本实现写作工具支持,但尚未在原生界面中验证。
  • 菜单栏应用包含测试连接、启用发现功能以及恢复正常发现行为的控制项。

重要限制

  • 该提供方仅处理文本。
  • 无法生成图像,也不接受附件。
  • 无法执行设备操作。
  • 无法访问 Siri 的邮件、联系人、信息或语义索引。
  • 语音路由尚未验证。
  • 目前没有经过验证的方法可将此扩展设为系统范围的默认“询问”提供方。
  • 聚焦搜索、Siri 独立的“询问”菜单和系统设置中显示的提供方列表可能不同。

Apple 的通用引导界面可能会提到图像生成或显示占位图标。这些元素并不代表本项目提供的功能。可靠的路由方式是在每次聚焦搜索请求中明确选择 询问… → Claude。

前置条件

安装项目之前,请准备好满足软件和配置要求的开发 Mac:

  • 已禁用 SIP 和 AMFI 的 macOS 27。
  • Xcode 27,包括已接受的许可协议和首次启动所需组件的完成安装。
  • 用于安装 XcodeGen 的 Homebrew。
  • XcodeGen。
  • 已安装并登录的 Claude Code。
  • Git 和终端访问权限。

使用 Homebrew 安装 XcodeGen:

brew install xcodegen

验证 Claude Code:

claude auth login

继续之前,可以确认账户状态:

claude auth status

安装 Claude for Siri

1. 克隆代码仓库

git clone https://github.com/mpociot/claude-siri-ai.git
cd claude-siri-ai

2. 构建并安装应用

./scripts/install.sh

安装程序会构建应用,将其放置在 ~/Applications/Claude.app,然后打开应用。如果其他应用已经占用该确切路径,安装会停止。Anthropic 位于 /Applications/Claude.app 的应用是独立的,不会与用户本地安装路径冲突。

构建过程使用 xcode-select 所选的 Xcode。如果当前启用的是错误的开发者目录,请明确指定 Xcode:

DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer ./scripts/install.sh

3. 测试 Claude Code 连接

打开已安装的 Claude 应用并点击 测试连接。应用会在常见位置搜索 Claude CLI。如果找不到正确的可执行文件,请使用 选择 Claude CLI… 并手动选择。

4. 启用提供方发现

点击 在聚焦搜索中启用…,然后在 macOS 管理员对话框中完成身份验证。应用会临时重启 Siri 和聚焦搜索,并启用扩展提供方发现,以便 macOS 找到自定义扩展。

此机制是临时的。重启 Mac 或重启 Siri 服务后,可能需要再次点击 在聚焦搜索中启用…。使用 恢复正常发现 可移除临时进程覆盖设置。

发送你的第一个提示

  1. 保持 Claude 菜单栏应用运行。
  2. 按下 ⌘Space 打开聚焦搜索。
  3. 右键点击聚焦搜索输入框。
  4. 选择 询问… → Claude。
  5. 输入文本提示并提交。
  6. 如果 macOS 显示 Apple 的授权界面,请完成 开启 流程。

例如,你可以询问:

用三段简短的文字解释异步编程与并行编程的区别。

响应应会流式显示在 Apple 的原生界面中。由于每个请求都会开启新的对话,不要假设 Claude 会记住之前通过聚焦搜索提交的提示。

关闭应用的设置窗口不会停止桥接程序;它仍会通过菜单栏保持可用。如果希望应用自动启动,请启用 登录时打开,但此选项并非必需。

集成的工作原理

Spotlight / Siri
  → 受沙盒限制的 ClaudeProvider.appex
  → 在 127.0.0.1:17839 上进行经过身份验证的 HTTP/NDJSON 通信
  → Claude.app 内的 Swift 桥接层
  → 已登录的 Claude Code CLI
  → 流式文本
  → 原生 Siri 响应

提供程序扩展受沙盒限制,并通过 IPv4 回环地址与宿主应用通信。宿主应用位于沙盒之外,因此可以启动 Claude Code CLI。

对于每个请求,CLI 都会在私有临时目录中运行,并禁用工具、不使用 MCP 服务器、启用安全模式、禁用 Chrome 集成,且不保留对话。执行完成后会删除临时提示输入。根据项目文档,桥接层不会记录提示、响应或凭据。

本地服务器会对每个请求进行身份验证,并拒绝浏览器 Origin 标头和含义不明确的 HTTP 帧。它还会限制请求正文大小、开放连接数、并发 Claude 进程数和执行时间。

了解本地令牌

构建过程会在 .local/bridge.json 中创建一次随机持有者令牌,并将其打包到宿主应用和扩展目标中。重新构建会保留该令牌。请勿分发包含本地令牌的已编译应用程序包。

该令牌有助于防止意外访问或基于浏览器的访问,但对于能够读取应用程序包的其他本地进程而言,它并不是安全边界。

了解发现机制

提供程序发现会在 Apple 现有的 Siri 和提供程序进程中,使用临时且范围严格受限的运行时 shim。它不会修改 Apple 二进制文件、启动 plist、启动参数、权利检查或提供程序许可。你仍必须通过 Apple 的原生许可流程批准该提供程序。

构建与开发命令

构建但不安装

./scripts/build.sh

安装现有构建

./scripts/install.sh --skip-build

XcodeGen 会生成项目。宿主应用和扩展都使用私有的 com.apple.developer.model-delegation 权利,并采用临时签名。此设置不会授予可分发的 Apple 权利。

安装后,应用程序会嵌入桥接层、发现脚本和已编译的发现 shim。因此,已安装的应用程序在运行时不需要仓库检出目录、Xcode 或 Python。Claude Code 必须保持已安装并完成身份验证。在发现会话期间,请勿将已安装的应用程序移出当前位置。

从命令行控制发现

./scripts/discovery-session.sh start
./scripts/discovery-session.sh stop

第一个命令会启动临时发现会话。第二个命令会恢复正常的发现行为。

测试项目

运行 Swift 测试套件

swift test --scratch-path .local/swift-build

原生 Swift 测试不需要 Claude 账户。十项测试涵盖 HTTP 身份验证和请求验证、增量文本传输、完成和错误处理、进程超时与取消,以及通过虚假 CLI 进行的一次真实本地主机往返测试。

运行实时桥接请求

./scripts/smoke.sh

此命令会通过正在运行的应用程序和你已完成身份验证的 Claude 账户发送一个实时请求。文档中记录的成功响应为 Claude bridge works。

检查扩展和应用程序签名

pluginkit -m -A -D -v -i dev.goldengate.Claude.Provider
codesign --verify --deep --strict "$HOME/Applications/Claude.app"

第一个命令检查 macOS 是否已注册提供程序扩展。第二个命令验证已安装应用程序的代码签名。

故障排除

桥接层无法启动

退出 Claude for Siri 的重复副本,并检查是否有其他进程正在使用 TCP 端口 17839。只有目标桥接层应监听此端口。

Claude 未出现在“询问”菜单中

打开应用程序,再次运行在 Spotlight 中启用……。完成出现的任何 macOS 许可提示。重启或 Siri 服务重启后,可能需要再次执行发现。

未检测到 Claude CLI

使用 claude auth status 确认 Claude Code 已安装并完成身份验证。然后在应用程序中使用选择 Claude CLI……手动选择可执行文件。

Spotlight 与“系统设置”显示不一致

这是实验性提供程序发现路径已知的结果。Spotlight、Siri 独立的“询问”菜单和“系统设置”可能会报告不同的提供程序列表。提供程序出现在某个界面中,并不保证它会出现在所有界面中。

Claude 不会自动使用

本项目不提供经过验证的默认提供程序设置。即使 Claude 在较早的对话中被选中,也请通过询问…… → Claude打开每个新的 Spotlight 请求。应用程序会有意避免提供未经验证的设为默认控件。

高级用法与安全提示

  • 请使用单独的开发机器,因为停用 SIP 和 AMFI 会削弱操作系统的核心保护机制。
  • 在发现会话处于活动状态期间,请将已安装的应用保留在 ~/Applications/Claude.app。
  • 不再需要实验性发现功能时,请使用 Restore Normal Discovery 或运行 ./scripts/discovery-session.sh stop。
  • 不要分发本地构建的软件包,因为其中包含为你的配置生成的 bearer token。
  • 在更改桥接认证、流式传输、超时或取消行为之前,请先运行 Swift 测试。
  • 使用冒烟测试区分桥接或账户问题与 Spotlight 发现问题。
  • 请按独立请求而非持久对话来预期其行为。
  • 在未执行单独的原生测试之前,不要依赖写作工具、语音路由或默认提供商行为。

结论

Claude for Siri 展示了沙盒化的 macOS 提供程序扩展、本地经过身份验证的 Swift 桥接程序以及 Claude Code 如何将文本响应流式传输到 Spotlight 的原生“询问”界面。该项目适合实验和开发,但其私有 API、降低的系统保护、临时发现机制以及未经验证的 Siri 行为,使其不适合用于常规生产环境。