SwiftUI 테스트용 5개 병렬 코딩 에이전트: 11GB에서 150MB RAM으로, 22초에서 2초로 단축 (iOS 시뮬레이터 미사용, 오픈소스)
5 parallel coding agents testing SwiftUI: 11 GB → 150 MB RAM, 22 s → 2 s per check. No iOS Simulator (open source)
핵심 요약
iOS 시뮬레이터 없이 앱을 네이티브로 실행해 코딩 에이전트의 테스트 속도와 리소스 효율을 획기적으로 개선한 'simless' 도구 소개.
- 성능 최적화 — 시뮬레이터 대신 헤드리스 호스트를 사용하여 테스트 속도를 22초에서 2초로 단축함
- 리소스 절감 — 메모리 사용량을 11GB에서 150MB로 줄이고 프로세스 부하를 대폭 낮춤
- 에이전트 연동 — Claude Code 및 기타 에이전트에서 쉽게 설치하고 사용할 수 있도록 설계됨
- 자동화된 검증 — 접근성 트리 기반의 화면 분석과 UI 이슈 자동 탐지 기능을 제공함
코딩 에이전트한테 iOS 앱 맡겨본 적 있냐? 얘네들 UI 변경 사항 확인할 때마다 빌드하고, 시뮬레이터 띄우고, 설치하고, 실행하고, 스크린샷 찍는 식으로 존나 느리게 일한다. 우리 프로덕션 앱(Swift 파일 약 280개, 대형 Swift 패키지 몇 개, M2 Pro / 32GB 기준)으로 돌려보면 확인 한 번에 ~22초 걸리고, 시뮬레이터 하나 띄울 때마다 램 2.2GB랑 프로세스 210개씩 처먹음. 에이전트 5개 동시에 돌리면 내 맥 로드 에버리지 1,000 찍으면서 컴퓨터가 그냥 맛이 가버린다.
그래서 simless를 만들었다. 이거는 네 진짜 앱 타겟을 Apple Silicon에서 "Designed for iPad" 슬라이스로 네이티브하게, 눈에 안 보이는 헤드리스 호스트로 돌리는 거다. 깃 워크트리당 호스트 하나씩 할당되니까 에이전트마다 자기만의 환경을 가질 수 있음. 시뮬레이터도 없고, 창도 안 뜨고, 작업하는데 포커스 뺏어가는 짓도 안 한다.
에이전트 루프는 대충 이렇게 생김
$ simless reload --render Welcome.sheet
reloaded (live) in 1.9s: compile 1.7s + apply 0.2s
Welcome.sheet · light · iphone 402×874 · 25 ms
header "Welcome to Notes" #welcome.title
text "Your notes stay on this device and sync with iCloud."
button "Get Started" #welcome.start @24,779.5 354×36.5
issues (1):
⚠ button "Get Started" tap target 354×36 is smaller than 44×44
-
수정한 파일만 컴파일해서 실행 중인 호스트에 핫패치로 박아버림 (~2초 컷)
-
스크린샷 대신 **~150 토큰짜리 접근성 트리(accessibility tree)**를 뱉어주니까 비전 토큰 낭비할 일 없음
-
라벨 없는 컨트롤, 너무 작은 탭 타겟, 화면 밖으로 나간 요소나 겹치는 요소 같은 문제점들은 알아서 다 잡아냄
-
--matrix쓰면 라이트/다크 모드랑 아이폰/작은 아이폰/아이패드 조합을 한 번에 다 체크 가능 -
진짜 픽셀 데이터가 필요할 땐
--png옵션 쓰면 됨 -
simless test치면 시뮬레이터 없이 맥에서 바로 유닛 테스트 돌릴 수 있음
수치 비교 (시뮬레이터 루프 = 에이전트당 시뮬레이터 하나, 체크할 때마다 증분 xcodebuild + 설치 + 실행 + 스크린샷)
| Simulator loop | simless |
|---|---|
| Edit → verified screen, 1 agent | 21.9 s |
| Edit → verified screen, 5 agents | 37.4 s |
| Memory held by 5 agents | 11.2 GB / 1,071 procs |
