이 글은 Hacktoberfest Open-Source AI Challenge Week 1: 풀 밟기에 제출하는 내용입니다.
제가 만든 것
만약 YouTube의 비밀번호가 PIN이 아니라, 바깥에서 하는 작은 모험이라면 어떨까요?
ESCAPE — 세상 자체가 당신의 비밀번호 🌱
저는 끝없이 스크롤하는 자신을 발견하는 사람들을 위해 실험적인 Android 앱인 ESCAPE를 만들었습니다. 또 다른 화면 사용 시간 차트를 보여주는 대신, ESCAPE는 사용자에게 밖에 나가서 걷고, 풀을 밟고, 자연을 재발견하도록 장려합니다.
아이디어는 간단합니다: 실제 세상이 당신의 비밀번호가 됩니다!
모든 야외 탐험은 세 단계로 이루어집니다:
- 움직이기 🚶 — 휴대폰의 걸음 센서와 타이머를 사용하여 밖에 나가 걷기 목표를 완료합니다.
- 발견하기 🌳 — 자연 속에서 흥미로운 것을 찾습니다: 풀, 아름다운 나무, 꽃, 또는 물에 비친 반영물.
- 캡처하기 📸 — 발견한 것을 사진으로 찍고, 이미지를 미리 보고 **분석(Analyze)**을 누릅니다. ESCAPE는 현지에서 증거를 확인합니다.
탐험을 완료하면 제한된 시간 동안 소셜 미디어 접근 권한을 얻게 됩니다!
ESCAPE outdoor quest
하지만 걷는 것에서 그칠까요?
주말에는 ESCAPE가 자전거 모험도 장려하고, 근처 공원, 녹지, 자전거 경로를 발견하는 데 도움을 줍니다.
오후 6시 이전에는 활동이 야외 활동에 초점을 맞춥니다. 오후 6시 이후에는 사용자가 야외 탐험과 실내 자연 영감 기반 도전 과제 중 하나를 선택할 수 있습니다. 이미 진행 중인 활동은 초기화되지 않고 계속됩니다.
데모
🎬 ESCAPE 작동 모습 보기
▶ YouTube에서 실제 Android 데모 시청하기
이 영상은 실제 Android 휴대폰에서 ESCAPE 경험을 보여줍니다: YouTube 차단, 걷기 탐험 추적, 자연 사진 캡처 및 미리 보기, 그리고 증거 승인까지의 과정입니다.
YouTube blocked
Offline photo verification
제가 가장 흥미로웠던 점은 다음과 같습니다: 인터넷이 연결되지 않은 상태에서 휴대폰으로 이미지 분석을 테스트했는데도 ESCAPE가 자연 사진을 승인했습니다!
녹화된 영상에는 승인 결과가 나와 있지만, 네트워크가 분리되었다는 것을 독립적으로 보여주지는 않습니다. 시연에서는 걷기 요구 사항을 줄이기 위해 가속화된 데모 모드를 사용합니다.
🌐 ESCAPE 프로젝트 쇼케이스 방문하기
코드
💻 ESCAPE — GitHub 저장소
ESCAPE는 Flutter와 Kotlin을 사용하여 구축된 오픈 소스 Android 프로토타입입니다. 앱은 아직 Google Play에 게시되지 않았지만, 소스 코드는 공개적으로 이용 가능합니다.
제작 방법
ESCAPE는 오픈 가중치(open-weight) AI를 Android의 네이티브 기능과 결합했습니다:
- Gemma 3 1B IT + LiteRT-LM: 휴대폰에서 창의적인 자연 기반 미션을 생성합니다. 알림을 위해 모델을 반복적으로 실행하는 것을 방지하기 위해 미션은 캐시됩니다.
- Flutter + Kotlin: 사용자 인터페이스, 앱 모니터링, 차단 오버레이 및 미션 관리를 제공합니다.
- Android 센서: 걷는 시간, 걸음 수, 선택적 GPS 기반 사이클링 진행 상황을 추적합니다.
- Google ML Kit: 나무, 식물, 물과 같은 광범위한 자연 주제를 확인하며 포착된 사진을 온디바이스(on-device)에서 완전히 분석합니다.
- OpenStreetMap/Overpass: 인터넷 연결이 가능한 경우 주변 공원 및 자전거 인프라를 발견하며, 나중에 오프라인으로 사용하기 위해 결과가 캐시됩니다.
한 가지 중요한 차이점: Gemma 3 1B는 텍스트 모델입니다. 이 모델은 창의적인 미션을 생성하고, ML Kit가 이미지 인식을 담당합니다.
저는 또한 창의성과 검증을 분리했습니다:
AI가 모험을 만들고. Android가 진행 상황을 추적하며. 로컬 이미지 인식이 증거를 평가합니다.
이렇게 하면 AI 응답이 달라지더라도 잠금 해제 규칙이 예측 가능하게 유지됩니다.
Open Innovation은 왜 중요할까요?
모바일 데이터 없이 공원을 걷는 것을 상상해 보세요. AI 기반의 야외 동반자가 작동을 멈춰야 할까요?
저는 그렇지 않다고 생각합니다.
온디바이스 추론(on-device inference)이 가능한 오픈 웨이트 Gemma를 사용하면 ESCAPE가 클라우드 API에 지속적으로 연결할 필요 없이 새로운 미션 아이디어를 만들 수 있습니다. 사진 분석 또한 서버에 이미지를 업로드하지 않고 로컬에서 이루어집니다.
초기 설정 후에는 핵심적인 모험 경험이 오프라인으로 작동할 수 있습니다. 모델을 다운로드하거나 주변의 새로운 장소를 발견하는 것은 여전히 인터넷 연결을 필요로 합니다.
저에게 가장 흥미로운 부분은 역설입니다:
저는 궁극적인 목표가 사람들이 휴대폰 사용 시간을 줄이도록 만드는 AI 애플리케이션을 만들었습니다.
때로는 기술의 가장 좋은 활용법은 우리에게 기술 너머의 무언가를 경험하도록 장려하는 것입니다.
나의 에이전트 세션
저는 개발 과정에서 미션 검증 및 보상 규칙을 검사하고, 테스트 커버리지를 개선하며, 자동화된 Flutter 유효성 검사를 추가하기 위해 GitHub Copilot CLI를 사용했습니다.
DevRelay 에이전트 세션 임베드는 캡처하지 못했지만, Copilot CLI 개발 작업의 증거는 다음과 같습니다:
GitHub Copilot CLI validation
GitHub Actions workflow에서도 검사할 수 있습니다.
경품 부문
Gemma 활용 최우수작(Best Use of Gemma)
Gemma 3 1B는 LiteRT-LM을 통해 로컬에서 실행되어, 지속적인 인터넷 연결 없이 창의적인 야외 미션을 생성합니다.
GitHub Copilot 활용 최우수작(Best Use of GitHub Copilot)
GitHub Copilot CLI는 테스트 및 CI 워크플로우 개발을 통해 프로젝트의 안정성을 향상시키는 데 도움을 주었습니다.
ESCAPE — 스크롤링은 줄이고, 산책(strolling)을 늘리세요. 풀밭에 가보세요! 🌿