[일주일프/10] 아이폰이 멀어지면 맥북을 잠가주는 스크립트 (feat. 코드-AI-인간 콤비네이션)

슬기로운 보안생활을 돕는 도구와 환경을 직접 만들어봅시다.
💡
'일주일프'나와 내 주변 사람을 위한 유용한 프로그램을 매주 1개씩 만들어서 소셜 미디어에 공유하는 프로젝트입니다. 2026년에 잡은 가장 중요한 목표이기도 합니다.

한줄 요약: AI 시대의 슬기로운 보안생활을 위해, 아이폰이 멀어지면 맥북을 자동으로 잠가주는 스크립트를 만들어 사내에 배포했습니다.

블루투스를 이용해 아이폰과 맥북 사이 거리가 일정 이상 멀어지면 화면을 잠궈주는 HammerSpoon 기반 스크립트 + 설치 프롬프트
블루투스를 이용해 아이폰과 맥북 사이 거리가 일정 이상 멀어지면 화면을 잠궈주는 HammerSpoon 기반 스크립트 + 설치 프롬프트 - INSTALL_PROMPT_ko.md

얼마 전부터 회사에 새로운 규칙이 하나 생겼습니다.

잠금이 안 된 동료의 컴퓨터를 발견하면, 그 동료 대신 슬랙에 "나는 바보입니다"를 쓴다.

이는 지난주 목요일 '보안' 테마로 열렸던 코르카의 3번째 AX Day에서 나온 액션 아이템이었어요. "개발자의 컴퓨터가 가장 먹음직스러우니 보호하자"는 취지였죠.

물론 1차적 해결책은 컴퓨터의 자동 잠금 시간을 확 줄이는 거지만, 그러면 필요 없을 때(회의 중이거나, 긴 글을 읽고 있다거나) 너무 자주 잠기는 문제가 있습니다. 보안 정책은 그 정도가 어떻든 직원을 불편하게 만들 수밖에 없기 때문에, 저는 이런 불편을 조금이라도 줄이는 도구나 환경을 제공하는 것까지가 회사와 리더의 책임이라고 봅니다. 그래야 '슬기로운 보안생활'이 지속 가능하니까요. 게다가 요즘은 AI로 이런 도구를 비교적 쉽게 제작할 수 있고요.

그래서 (CTO님으로부터 아이디어를 듣고) 만들어 사내에 배포했습니다. 오픈소스 MacOS 자동화 프로그램인 Hammerspoon을 이용해, 아이폰과의 거리가 일정 이상 멀어지면 화면을 잠가주는 스크립트입니다. Public Gist에 스크립트와 설치용 프롬프트를 담았습니다.

작동 방식

먼저 확실히 해둘 건, 이 스크립트의 기준이 되는 블루투스 신호(RSSI)는 실제 거리와 1:1로 대응하지 않습니다. 같은 자리에서도 몸 방향, 벽, 가방, 주변 전파 환경 때문에 값이 크게 출렁입니다. 그래서 이건 '믿을 만한 잠금장치'가 아니라 MacOS 기본 자동 잠금에 얹는 가벼운 보조 장치입니다. 그 한계 위에서 쓰면 충분히 쓸 만합니다고 봅니다.

  • 5초마다 페어링된 아이폰의 블루투스 신호를 측정합니다. (애플워치의 블루투스로도 가능합니다만 저는 워치가 고장나서 폰으로 했습니다)
  • 임계치 아래의 신호가 약 20초(5초 × 4회 샘플) 이상 이어지면 화면을 자동으로 잠급니다.
  • 잠금 직후·잠금 해제 직후에는 쿨다운이 걸려, 자리에 다시 앉자마자 또 잠기는 일을 방지합니다.
  • 집 와이파이·개인 핫스팟 같은 '나만 쓰는 네트워크'에서는 자동 잠금을 끌 수 있습니다. 단, 사무실이나 카페 Wi-Fi는 절대 넣지 마세요. 자리 비울 때 안 잠기는 도구가 되어버립니다.
  • 맥북이 잠자기에서 깨어나거나 재시동된 후에도 알아서 다시 동작합니다.
  • 에이전트의 디버깅을 위해 로그를 최대 10MB어치 쌓습니다.
  • 모든 설정은 스크립트 맨 위 한 곳에 모여 있습니다. 코딩 에이전트에게 "더 보수적으로/공격적으로 바꿔줘" 한 줄이면 끝.

설치 및 커스터마이즈

맥북 + 아이폰 조합이라면 아래 프롬프트로 누구나 설치해보실 수 있습니다. 자세한 설명은 프롬프트에 모두 넣어두었으니 에이전트에게 설명받아보세요.

이 링크의 프롬프트를 읽고, 같은 gist의 파일들을 사용해서 이 머신에 맞게 설정 및 설치해주세요. https://gist.github.com/spilist/b5933464f82cc66e856fdb2383fb2ad8#file-install_prompt_ko-md

디버깅은 열심히 했지만, 그래도 만든지 얼마 안 돼서 버그가 있을 수 있습니다. 버그에 부딪치거나, 설정이 너무 민감하거나, 너무 덜 민감하거나 하면 에이전트에게 고쳐달라고 해보시길!

그리고 안드로이드 폰이나 윈도 PC와의 조합은 직접 안 써봤지만, 아래 키워드를 코딩 에이전트에게 던지면 비슷한 결과에 도달할 수 있으리라 믿습니다(물론 디버깅은 오랫동안 하셔야 할 수 있습니다 ㅎㅎ). 이 맥북용 스크립트도 결국 같은 방식으로 만들어졌거든요.

  • 맥북 + 안드로이드: Hammerspoon + Tasker + Bluetooth presence
  • 윈도 + 아이폰: PowerShell/AutoHotkey + iPhone presence + Shortcuts/Home Assistant
  • 윈도 + 안드로이드: PowerShell/AutoHotkey + Tasker/KDE Connect + Bluetooth presence

과정에서 배운 것들

처음엔 'RSSI 읽고 잠그면 끝'인 줄 알았습니다. 그런데 막상 만들어 돌려보니, 맥북이 잠에서 깨어난 직후 Hammerspoon의 폴링 타이머가 조용히 멎는 케이스가 있더군요. 결국 장시간 디버깅 끝에 원인을 규명하고, 여러 겹의 방어선(App Nap 비활성화 + in-process 하트비트 + 외부 watchdog)을 깔고 나서야 안정됐습니다.

이 과정에서 Claude Code의 /loop 스킬이 아주 유용했습니다. /loop로 에이전트가 10분에 한 번씩 자동으로 로그를 훑게 해뒀더니 자연스럽게 세 주체가 맞물리는 구조가 됐어요.

  • 코드: 정해진 규칙대로 돌아가며 최대한 많은 로그를 남기는 스크립트
  • AI: 10분마다 로그를 훑어 이상 현상을 잡아내고 다음 디버깅 가설을 세우는 에이전트
  • 인간: 물리적 세계에서 실제로 몸을 써야 하는 검증(폰 들고 멀리 가기, 화면 잠그기 등)을 맡은 나

코드·AI·인간이 각자의 강점으로 맞물리는 3자간 공생의 힘을 이번에도 체감했습니다.

출처: 웹툰 <덴마>
AI 시대의 협업 전략: 3자간(AI + 코드 + 인간) 협업을 통한 대용량 JS 파일 리팩토링 경험
작년 초에 유명한 트윗이 떠돌았습니다. “AI will not replace you. A person using AI will.” 이제는 여기에 동의하지 않지만, AI와 제대로 협업할 줄 아는 사람들은... 정말로 많은 인간 노동력을 대체할지도 모릅니다.

이러한 에이전트와의 공생은 점차 우리 삶의 뉴노멀이 되어가고 있습니다. 전 국민에게 너무 강력한 도구가 생긴, 신나면서도 불안한 AI 시대에 자기 컴퓨터는 자기가 지켜야죠. 우리 팀을 위한, 나를 위한 보안 도구를 손수 만들어보며 모두 슬기로운 보안생활을 이어나가시길 기원합니다.