TL;DR
Hunch는 MCP 서버와 Python SDK를 결합해 Claude나 OpenAI Codex 같은 LLM agent가 사용자의 Mac 앱, 파일, 브라우저를 화면 포커스 없이 제어하도록 합니다. OS API, AppleScript, CDP, Accessibility tree를 직접성 순서로 사용하고, 화면을 빼앗는 좌표 입력은 접근성 정보가 없을 때만 승인과 함께 실행합니다. mac-agent-bench에서 15개 작업을 모두 성공시키며 비용 $1.52, cursor 0회, focus 1회를 기록했고, 기본 승인 게이트와 Keychain 도메인 바인딩으로 위험 동작과 자격 증명 입력을 제한합니다. 프로젝트는 개인 유지 오픈소스이며 실제 앱과 로그인 세션을 제어하므로 소스 검토와 최소 권한 설정이 필요합니다.
섹션별 상세
pipx install hunch-sdk # or: pip install hunch-sdk
pip install 'hunch-sdk[subscription]' # + the agent loop on Claude (provider="claude")
pip install --pre 'hunch-sdk[codex]' # + the agent loop on OpenAI Codex (provider="codex")Hunch SDK와 Claude 또는 OpenAI Codex용 선택적 agent loop를 설치하는 명령입니다.
from hunch import Hunch
mac = Hunch() # your machine, your logged-in apps
print(mac.snapshot("Mail")) # accessibility tree, focus-free
mac.act([{"action": "click", "ref": "e12"}])
mac.web.open(url="https://github.com") # real persistent Chrome profile over CDP
print(mac.web.snapshot())
mac.files.trash(["~/Downloads/old.zip"]) # reversible delete, no Finder
mac.applescript('tell application "Music" to play')LLM 없이도 Accessibility, CDP, 파일 API, AppleScript를 Python 코드에서 결정적으로 호출하는 예시입니다.
from hunch import Hunch
mac = Hunch(provider="claude") # or Hunch(provider="codex")
result = mac.agent.run("reply to Sarah's latest email, but don't send it")
print(result.text) # the model's final summary
print(result.turns, result.usage)선택한 LLM provider가 Hunch의 도구를 사용해 자연어 작업을 수행하도록 agent loop를 실행합니다.
from hunch import Hunch, ConsentRequest, OAuthToken
mac = Hunch(
provider="claude",
app_id="com.acme.mailbot",
app_name="Acme Mailbot",
confirm=my_consent_callback,
notify=my_toast_handler,
policy={"gates": {"shell": True}},
auth=OAuthToken(token),
can_use_tool=my_approver,
)내장 앱이 자체 동의 UI, 인증 토큰, 정책, 알림 처리기를 사용하도록 Hunch 인스턴스를 구성하는 예시입니다.
용어 해설
- Model Context Protocol
- — Model Context Protocol은 LLM 호스트가 외부 도구와 데이터에 표준 방식으로 연결되도록 하는 프로토콜입니다. Hunch에서는 MCP 서버가 호스트 프로세스의 자식으로 실행되고 stdin·stdout 기반 JSON-RPC로 도구 호출을 주고받습니다. 별도 HTTP 서버 없이 로컬 Mac의 앱과 파일을 연결하는 기반으로 쓰입니다.
- Accessibility API
- — Accessibility API는 운영체제가 앱의 UI 요소 트리와 상호작용 기능을 외부 프로그램에 제공하는 인터페이스입니다. Hunch는 pyobjc를 통해 이 트리를 읽고 화면에 포커스를 빼앗지 않은 채 요소 참조로 클릭·선택·입력을 수행합니다. macOS에서는 서버를 실행하는 호스트 앱에 접근성 권한을 부여해야 합니다.
- Chrome DevTools Protocol
- — Chrome DevTools Protocol은 Chrome의 디버깅 포트에 연결해 브라우저 탭과 웹 페이지를 프로그래밍 방식으로 제어하는 인터페이스입니다. Hunch는 127.0.0.1의 로컬 WebSocket을 통해 별도 Chrome 프로필을 열고 페이지를 읽거나 로그인·입력을 수행합니다. Chrome 136 이상에서는 기본 프로필의 CDP 포트 제약 때문에 Hunch 전용 프로필을 사용합니다.
- MCP 서버(MCP server)
- — MCP 서버는 LLM 호스트가 호출할 수 있는 도구와 실행 지침을 제공하는 로컬 또는 원격 프로세스입니다. Hunch의 서버는 Claude Desktop, Cursor 같은 호스트가 자식 프로세스로 실행하며 OS API, AppleScript, CDP, Accessibility 기능을 도구로 노출합니다. 서버가 종료되면 별도 데몬이나 네트워크 엔드포인트 없이 함께 사라집니다.
- AppleScript
- — AppleScript는 macOS 앱의 스크립팅 인터페이스를 통해 Mail, Music, Finder, Safari 같은 앱의 동작을 자동화하는 언어입니다. Hunch는 osascript를 호출해 스크립트 가능한 앱을 직접 제어하고, 셸 실행이나 삭제·전송 같은 위험한 동작에는 별도 승인 게이트를 적용합니다. 앱별 Automation 권한은 처음 제어할 때 macOS가 요청합니다.
기술
- MCP
- Python
- pyobjc
- Accessibility framework
- AppleScript
- osascript
- Chrome DevTools Protocol
- WebSocket
- Claude
- OpenAI Codex
- macOS Keychain
- Chrome
활용 사례
- 로그인된 Mail에서 특정 이메일에 답장을 작성하되 전송하지 않는 작업
- Mail, Messages, Notes, Calendar, Music, Finder, Safari 같은 native 앱의 background 제어
- Chrome 또는 Electron 앱에서 웹 페이지를 읽고 폼을 채우는 자동화
- 다운로드 폴더의 파일을 Finder를 열지 않고 휴지통으로 보내는 작업
- cron job과 테스트 harness에서 LLM 없이 Mac 제어 primitive를 실행하는 자동화
- Keychain에 저장한 GitHub 자격 증명을 지정된 도메인에만 입력하는 로그인 흐름
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.