주요 콘텐츠로 건너뛰기
AI 튜토리얼

macOS Spotlight와 Siri에서 Claude Code 사용하기

Siri용 Claude를 설치하고 인증된 Claude Code 계정에 연결하는 방법을 알아보세요. 실험적 제공업체 검색을 활성화하고 Spotlight를 통해 텍스트 프롬프트를 보내는 방법도 설명합니다. 이 튜토리얼에서는 프로젝트 아키텍처, 보안 제약, 테스트 도구, 문제 해결 단계와 현재 제한 사항도 다룹니다.

macOS Spotlight와 Siri에서 Claude Code 사용하기

Claude for Siri의 기능

Claude for Siri는 로그인된 Claude Code 계정을 macOS Spotlight 및 관련 Siri 인터페이스에서 제공자로 사용할 수 있게 하는 실험적인 macOS 프로젝트입니다. 메뉴 막대 앱은 내장 Swift 브리지를 실행하고, 샌드박스 처리된 제공자 확장 프로그램에서 요청을 받아 로컬 Claude Code CLI를 호출한 다음, 텍스트 응답을 Apple의 기본 응답 인터페이스로 스트리밍합니다.

보안 경고: 이 프로젝트를 사용하려면 시스템 무결성 보호(SIP)와 Apple Mobile File Integrity가 비활성화된 macOS 27이 필요합니다. 이로 인해 macOS의 보안 보호 기능이 크게 약화됩니다. 주 컴퓨터나 프로덕션 컴퓨터 대신 전용 개발용 Mac을 사용하세요. 애플리케이션과 스크립트가 이러한 보호 기능을 대신 비활성화하지는 않습니다.

이 프로젝트는 공식 Apple 또는 Anthropic 통합이 아닌 독립적인 개념 증명입니다. 비공개 베타 전용 API에 의존하며, macOS 27 빌드 26A428 및 Xcode 27 27A266a에서 테스트되었습니다.

주요 기능 및 제한 사항

현재 작동하는 기능

  • Spotlight에서 제공자 검색, 동의 및 호출이 확인되었습니다.
  • Swift 브리지는 인증된 Claude Code 계정을 통해 실제 요청을 완료할 수 있습니다.
  • 응답이 Apple의 기본 응답 UI로 점진적으로 스트리밍됩니다.
  • 각 요청은 새 대화를 시작합니다.
  • 선택한 텍스트에 대한 Writing Tools 지원이 구현되었지만 기본 인터페이스에서는 아직 검증되지 않았습니다.
  • 메뉴 막대 앱에는 연결 테스트, 검색 활성화 및 일반 검색 동작 복원을 위한 제어 기능이 포함되어 있습니다.

중요한 제한 사항

  • 제공자는 텍스트만 처리합니다.
  • 이미지를 생성하거나 첨부 파일을 받을 수 없습니다.
  • 기기 동작을 실행할 수 없습니다.
  • Siri의 메일, 연락처, 메시지 또는 시맨틱 인덱스에 액세스하지 않습니다.
  • 음성 라우팅은 아직 검증되지 않았습니다.
  • 이 확장 프로그램을 시스템 전체의 기본 Ask 제공자로 설정하는 검증된 방법은 없습니다.
  • Spotlight, Siri의 별도 Ask 메뉴 및 시스템 설정에 표시되는 제공자 목록이 서로 다를 수 있습니다.

Apple의 일반 온보딩 인터페이스에 이미지 생성이 언급되거나 자리 표시자 아이콘이 표시될 수 있습니다. 이러한 요소는 이 프로젝트가 제공하는 기능을 의미하지 않습니다. 신뢰할 수 있는 라우팅 방법은 각 Spotlight 요청에서 Ask… → 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에 배치한 다음 실행합니다. 해당 경로를 다른 애플리케이션이 이미 사용 중이면 설치가 중지됩니다. /Applications/Claude.app에 있는 Anthropic의 애플리케이션은 별개이며 사용자 로컬 설치 경로와 충돌하지 않습니다.

빌드에는 xcode-select로 선택된 Xcode가 사용됩니다. 잘못된 개발자 디렉터리가 활성화되어 있다면 Xcode를 명시적으로 지정하세요.

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

3. Claude Code 연결 테스트

설치된 Claude 애플리케이션을 열고 Test Connection을 클릭합니다. 애플리케이션은 일반적인 위치에서 Claude CLI를 찾습니다. 올바른 실행 파일을 찾지 못하면 Choose Claude CLI…를 사용해 수동으로 선택하세요.

4. 제공자 검색 활성화

Enable in Spotlight…를 클릭하고 macOS 관리자 대화 상자에서 인증합니다. 애플리케이션은 macOS가 사용자 지정 확장 프로그램을 찾을 수 있도록 Siri와 Spotlight를 확장된 제공자 검색 모드로 일시적으로 다시 시작합니다.

이 메커니즘은 일시적입니다. Mac을 재시동하거나 Siri 서비스를 다시 시작한 후에는 Enable in Spotlight…를 다시 클릭해야 할 수 있습니다. 일시적인 프로세스 재정의를 제거하려면 Restore Normal Discovery를 사용하세요.

첫 번째 프롬프트 보내기

  1. Claude 메뉴 막대 애플리케이션을 실행한 상태로 둡니다.
  2. ⌘Space를 눌러 Spotlight를 엽니다.
  3. Spotlight 입력 필드를 마우스 오른쪽 버튼으로 클릭합니다.
  4. Ask… → Claude를 선택합니다.
  5. 텍스트 프롬프트를 입력하고 제출합니다.
  6. macOS에 Apple의 동의 인터페이스가 표시되면 Turn On 절차를 완료합니다.

예를 들어 다음과 같이 질문할 수 있습니다.

async 프로그래밍과 병렬 프로그래밍의 차이를 짧은 세 문단으로 설명해 주세요.

응답이 Apple의 기본 인터페이스로 스트리밍되어야 합니다. 각 요청이 새 대화를 시작하므로 Spotlight를 통해 이전에 제출한 프롬프트를 Claude가 기억한다고 가정하지 마세요.

애플리케이션의 설정 창을 닫아도 브리지가 중지되지는 않으며, 메뉴 막대를 통해 계속 사용할 수 있습니다. 애플리케이션을 자동으로 시작하려면 Open at login을 활성화하세요. 단, 이 옵션은 필수가 아닙니다.

통합 작동 방식

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 및 프로바이더 프로세스에서 일시적으로, 제한된 범위로 실행되는 런타임 심을 사용합니다. Apple 바이너리, launch plist, 부트 인자, 자격 부여 확인 또는 프로바이더 동의 절차를 수정하지 않습니다. 프로바이더는 여전히 Apple의 기본 동의 절차를 통해 승인해야 합니다.

빌드 및 개발 명령

설치하지 않고 빌드

./scripts/build.sh

기존 빌드 설치

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

XcodeGen이 프로젝트를 생성합니다. 호스트와 확장 모두 비공개 com.apple.developer.model-delegation 자격을 사용하며 애드혹 서명됩니다. 이 설정으로 배포 가능한 Apple 자격이 부여되지는 않습니다.

설치 후 애플리케이션에는 브리지, 검색 스크립트 및 컴파일된 검색 심이 포함됩니다. 따라서 설치된 애플리케이션은 런타임에 저장소 체크아웃, Xcode 또는 Python을 필요로 하지 않습니다. Claude Code는 계속 설치되어 있고 인증된 상태여야 합니다. 검색 세션 중에는 설치된 애플리케이션을 현재 경로에서 이동하지 마세요.

명령줄에서 검색 제어

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

첫 번째 명령은 임시 검색 세션을 시작합니다. 두 번째 명령은 일반적인 검색 동작을 복원합니다.

프로젝트 테스트

Swift 테스트 모음 실행

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

네이티브 Swift 테스트에는 Claude 계정이 필요하지 않습니다. 10개의 테스트가 HTTP 인증 및 요청 검증, 증분 텍스트 전달, 완료 및 오류 처리, 프로세스 시간 초과 및 취소, 가짜 CLI를 통한 실제 localhost 왕복을 다룹니다.

실시간 브리지 요청 실행

./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를 사용 중인지 확인하세요. 이 포트에서는 의도한 브리지만 수신 대기해야 합니다.

Ask 메뉴에 Claude가 표시되지 않음

애플리케이션을 열고 Spotlight에서 활성화…를 다시 실행하세요. 표시되는 macOS 동의 요청을 모두 완료하세요. 재부팅하거나 Siri 서비스를 다시 시작한 후에는 검색을 반복해야 할 수 있습니다.

Claude CLI가 감지되지 않음

Claude Code가 설치되어 있고 claude auth status로 인증되어 있는지 확인하세요. 그런 다음 애플리케이션에서 Claude CLI 선택…을 사용해 실행 파일을 수동으로 선택하세요.

Spotlight와 시스템 설정의 정보가 다름

이는 실험적인 프로바이더 검색 경로로 인해 알려진 결과입니다. Spotlight, Siri의 별도 Ask 메뉴 및 시스템 설정에는 서로 다른 프로바이더 목록이 표시될 수 있습니다. 한 인터페이스에 프로바이더가 표시된다고 해서 모든 인터페이스에 표시된다는 보장은 없습니다.

Claude가 자동으로 사용되지 않음

이 프로젝트는 검증된 기본 프로바이더 설정을 제공하지 않습니다. 이전 대화에서 Claude를 선택했더라도 새로운 Spotlight 요청을 열 때마다 Ask… → Claude를 선택하세요. 애플리케이션은 검증되지 않은 기본값으로 설정 컨트롤을 의도적으로 제공하지 않습니다.

고급 사용 및 안전 팁

  • SIP와 AMFI를 비활성화하면 운영 체제의 핵심 보호 기능이 약화되므로 별도의 개발용 컴퓨터를 사용하세요.
  • 검색 세션이 활성화된 동안 설치된 애플리케이션을 ~/Applications/Claude.app에 유지하세요.
  • 실험적 검색이 더 이상 필요하지 않으면 일반 검색 복원 또는 ./scripts/discovery-session.sh stop을 사용하세요.
  • 로컬에서 빌드한 번들을 배포하지 마세요. 해당 번들에는 설정에 맞게 생성된 전달자 토큰이 포함되어 있습니다.
  • 브리지 인증, 스트리밍, 시간 초과 또는 취소 동작을 변경하기 전에 Swift 테스트를 실행하세요.
  • 스모크 테스트를 사용해 브리지 또는 계정 문제와 Spotlight 검색 문제를 구분하세요.
  • 지속적인 대화가 아니라 독립적인 요청 방식으로 동작한다고 예상하세요.
  • 별도의 네이티브 테스트를 수행하지 않고 Writing Tools, 음성 라우팅 또는 기본 제공업체 동작에 의존하지 마세요.

결론

Claude for Siri는 샌드박스 macOS 제공업체 확장, 로컬 인증 Swift 브리지, Claude Code를 결합해 텍스트 응답을 Spotlight의 네이티브 Ask 인터페이스로 스트리밍하는 방법을 보여 줍니다. 이 프로젝트는 실험과 개발에는 유용하지만, 비공개 API, 축소된 시스템 보호 기능, 임시 검색 메커니즘, 검증되지 않은 Siri 동작으로 인해 일반적인 프로덕션 용도에는 적합하지 않습니다.