맥북, AI 작업 중엔 덮개 닫아도 안 잠든다!
AI 에이전트 작업 시 맥북이 절전 모드로 전환되는 문제를 해결하는 'Adrafinil' 앱 출시
덮개 닫힘(Lid-closed) 상태에서도 절전 방지 기능 제공, 기존 앱과 차별화
AI 에이전트 활동 감지 시에만 작동하며, 작업 완료 시 정상 절전 모드 전환
오픈 소스(MIT 라이선스)로 제공되며, 루트 권한(Root Privileges)은 최소화하여 보안 강화
클램쉘 모드(Clamshell Mode) 절전 제어의 복잡성
커뮤니티에서는 맥북의 클램쉘 모드(Clamshell Mode), 즉 덮개를 닫았을 때의 절전 동작을 제어하는 것이 복잡하다는 점을 지적합니다. 기존 솔루션인 `caffeinate`나 `Amphetamine`은 항상 절전을 막지만, Adrafinil은 AI 에이전트의 활동을 감지(Agent Activity Detection)하여 필요한 시점에만 `pmset disablesleep 1` 명령을 사용하고, 작업 완료 시 `pmset disablesleep 0`으로 되돌리는 세밀한 제어 로직을 구현했습니다. 이는 데이터 격리 아키텍처(Data Isolation Architecture)와 유사하게, 특정 조건에서만 동작하도록 설계된 점이 특징입니다.
루트 권한(Root Privileges) 관리 및 보안
Adrafinil은 덮개 닫힘 상태에서의 절전 방지를 위해 루트 권한(Root Privileges)이 필요한 `pmset` 명령을 사용합니다. 하지만 앱은 이를 별도의 루트 헬퍼(Root Helper)로 분리하고, XPC(Inter-Process Communication)를 통해 통신하도록 설계했습니다. 모든 정책 로직은 일반 사용자 권한으로 실행되는 데몬에 위치하며, 루트 헬퍼는 오직 `setSleepBlocked(Bool)` 호출만 노출합니다. 이는 최소 권한 원칙(Principle of Least Privilege)을 준수하여 보안 감사(Auditing)를 용이하게 합니다.
기존 솔루션과의 비교 및 커뮤니티 반응
일부 사용자는 `tmux`나 `Amphetamine` 같은 기존 솔루션이 이미 존재한다고 지적하지만, Adrafinil은 AI 에이전트의 특정 작업 완료 시점까지 절전을 방지한다는 점에서 차별화됩니다. 'Amphetamine'의 앱 종료 시 절전 옵션과 비교하며, Adrafinil의 에이전트별 훅(Agent-specific Hooks) 통합 및 활동 기반 제어(Activity-based Control)가 더 정교하다는 의견이 있습니다. 또한, 앱 명칭의 유래(Modafinil 유도체)에 대한 언급도 있었습니다.
발열 및 하드웨어 영향에 대한 우려
맥북을 덮개 닫힘 상태로 계속 작동시킬 경우 발열 문제(Thermal Performance)가 발생할 수 있다는 의견이 제기되었습니다. 덮개를 닫으면 열 방출 면적이 줄어들지만, 디스플레이 렌더링을 하지 않아 발열이 줄어든다는 상반된 주장도 있습니다. Adrafinil은 이러한 문제를 인지하고 과열 시 자동으로 절전 모드로 전환하는 써멀 컷아웃(Thermal Cutout) 기능을 포함하여 하드웨어 손상을 방지합니다.
오픈 소스 및 빌드 과정
Adrafinil은 MIT 라이선스 하에 완전한 오픈 소스(Fully Open Source)로 제공됩니다. 소스 코드는 GitHub에서 확인할 수 있으며, Xcode를 통해 직접 빌드할 수 있습니다. 빌드 과정에서 Swift 6의 엄격한 동시성(Strict Concurrency) 기능이 활용되며, 코드 서명(Code Signing)을 위한 개발자 계정이 필요합니다. 이는 투명성을 높이고 사용자가 앱의 동작 방식을 검증할 수 있게 합니다.