TouchGrass: 사용을 중단할 때 성공하는 OpenAI 에이전트
요약
TouchGrass는 사용자가 화면에 몰두하는 대신, 실제 세계의 물리적 행동을 유도하여 성공하는 OpenAI 기반 에이전트 플랫폼입니다. 이 시스템은 Gemma 2를 활용해 야외 활동, 친절 실천 등 9가지 카테고리에서 맞춤형 미션을 생성합니다. 사용자 경험을 '끌어당김-방출-보상'의 리듬으로 설계하여 디지털 디톡스를 목표로 합니다.
핵심 포인트
- 사용 중단 시 성공하는 역발상 플랫폼입니다.
- Gemma 2를 활용해 실제 세계 행동 기반 미션을 제공합니다.
- 미션은 야외, 친절, 커뮤니티 등 9가지 카테고리로 분류됩니다.
- UX는 '유인(Attract) → 방출(Release) → 보상(Reward)' 리듬을 따릅니다.
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
제가 만든 것 (What I Built)
대부분의 현대 소비자 소프트웨어는 단일하고 착취적인 깔때기(funnel)를 중심으로 구축되어 있습니다:
$$\text{주의 집중} \longrightarrow \text{화면 사용 시간} \longrightarrow \text{알고리즘 피드} \longrightarrow \text{광고 노출}$$
심지어 현대 AI 도구들조차도 사용자가 채팅 창에 영원히 타이핑하도록 최적화하는 경우가 많습니다.
TouchGrass는 이 방정식을 역전시킵니다.
TouchGrass는 다음과 같은 원칙을 기반으로 구축된 open-AI 기반의 실제 세계 도전 플랫폼입니다:
사용자가 사용을 중단할 때 애플리케이션이 성공한다.
TouchGrass는 화면에서 소비할 텍스트를 출력하는 대신, 주요 결과물은 실제 세계의 물리적 행동입니다.
이 시스템은 open-weight Gemma 2 에이전트 오케스트레이터를 사용하여 사용자의 개인적인 맥락, 난이도 수준, 그리고 이력을 이해하고, 다음 9가지 실제 세계 카테고리에 걸쳐 맞춤형 미션을 생성합니다:
- 야외 (Outdoor): 지평선 산책, 태양 및 그림자 추적, 역순 루프 동네 산책.
- 자연 (Nature): 식물 질감 탐험, 야생 씨앗 육성, 조류 노래 식별.
- 친절 (Kindness): 익명 문 잡아주기, 이웃 장보기 돕기, 진심 어린 칭찬.
- 행복 (Happiness): 낮 시간 리셋(Daylight resets), 파문 미소(ripple smiling).
- 인간 연결 (Human Connection): 화면 없는 커피 타임, 나이 많은 이웃 경청.
- 커뮤니티 (Community): 보도 블리스틱 청소, 지역 도서관 기여.
- 건강 (Health): 파워 워킹, 맨발 잔디 접지(grounding), 야외 이동성 스트레칭.
- 창의력 (Creativity): 도시 질감 발견.
- 탐험 (Exploration): 탐험되지 않은 골목길로 들어가기.
행동 리듬: 끌어당김(Attract) ➔ 방출(Release) ➔ 보상(Reward)**
- State A — Attract (유인): XP 보상과 ElevenLabs 음성 나레이션이 포함된 명료하고 영감을 주는 미션 브리핑으로 시작합니다.
- State B — Release (Zen Mode, 평온 모드): 수락하는 순간, UI는 최소한의 주변 호흡 원형(ambient breathing circle) 속으로 시각적으로 사라집니다: > 당신은 밖에 있습니다. 가서 하세요. 이 화면이 필요 없습니다. 타이머가 사용자의 야외 활동 시간을 기록하며 휴대폰은 주머니에 그대로 있습니다.
- State C — Reward (보상): 돌아와서 자신의 성찰(예: "옆집 할머니의 장을 옮기는 것을 도왔어요")을 말하면, Gemma Evaluator가 진정성을 평가하고 보너스 XP를 수여하며, 레벨업 축하 이벤트를 발생시키고 새로운 기능을 잠금 해제합니다.
데모 (Demo)
- 실시간 웹 애플리케이션 (Render에 호스팅): https://touchgrass-agent.onrender.com
- GitHub 저장소: https://github.com/aiwithrajan/touchgrass
- YouTube 비디오 워크스루 (Neural AI 음성으로 전체 1080p): YouTube에서 시청하기
- UI 및 워크플로우 아키텍처 가이드 (PDF):
TOUCHGRASS_UI_AND_WORKFLOW_GUIDE.pdf - 로컬에서 사용해 보기:
./run.sh를 실행하거나http://localhost:8000에 접속하여 3단계 루프, TabPFN 미기후 예측(microclimate forecasting), 오프라인 트레일 모드(Offline Trail Mode)를 경험해 보세요.
코드 및 배포 (Code & Deployment)
전체 코드는 GitHub에서 MIT 라이선스에 따라 100% 오픈 소스로 공개되어 있습니다:
👉 github.com/aiwithrajan/touchgrass
- 호스팅 및 런타임 (Render): Render에서 통합 웹 서비스로 배포되어 FastAPI 에이전트 백엔드와 고성능 React SPA를 모두 제공합니다.
- 백엔드: FastAPI + Gemma 2 에이전트 오케스트레이터 + 안전 및 다양성 정책 엔진 + 로컬 우선 메모리 스토어.
- Microclimate AI: 최적의 실외 창문 및 활력 점수를 위한 TabPFN Tabular Foundation Model (Prior Labs).
- 프론트엔드: React 19 + TypeScript + Tailwind CSS v4 (차분하고 방해받지 않는 플랫 에디토리얼 UI 시스템).
- 음성: 온디바이스 Web Speech API 폴백을 갖춘 ElevenLabs API.
- 관측 가능성 (Observability): Sentry Agent Tracing 계측기(instrumentation).
구축 과정 (How I Built It)
1. Gemma 2 오픈 가중치 에이전트 오케스트레이터
TouchGrass의 핵심은 폐쇄 루프 실세계 에이전트입니다. 임무를 요청하면, Gemma는 사용자의 레벨, 최근 카테고리 이력, 그리고 시간 제약을 고려합니다.
LLM이 흔히 저지르는 같은 작업을 반복하는 함정("산책하러 가세요, 산책하러 가세요, 산책하러 가세요")을 방지하기 위해, 에이전트 파이프라인은 **정책 엔진(Policy Engine)**으로 연결됩니다:
- 안전 정책 (Safety Policy): 후보 임무에서 위험한 활동, 무단 침입, 위험한 기동, 또는 대립 상황을 스캔합니다.
- 다양성 정책 (Diversity Policy): 자연 다음에 친절함이 오고, 그다음 커뮤니티가 오며, 그다음 창의성이 오는 등 카테고리 순환을 강제합니다.
- 진행 정책 (Progression Policy): 사용자가 레벨 1~3에서 개인적인 기반(personal grounding)을 확립할 때까지 고급 인간/커뮤니티 도전을 차단합니다.
2. 음성 레이어 (The Voice Layer)
ElevenLabs(Web Speech API 폴백 포함)를 사용하여 Gemma의 임무가 차분하고 격려하는 운율로 소리 내어 전달됩니다:
_"안녕하세요. 오늘의 도전은 간단합니다. 밖에 나가서 위를 바라보고, 세 사람에게 진심으로 미소 지어주세요. 돌아올 때 뵙겠습니다."
이를 통해 헤드폰이나 스피커로 임무를 흡수하고 즉시 휴대폰을 주머니에 넣을 수 있습니다.
3. 음성 반추 및 Gemma 평가자 (Voice Reflection & Gemma Evaluator)
돌아올 때 마이크를 터치하고 자신의 성찰을 말합니다. Gemma Evaluator가 야외 활동의 진정성과 깊이를 분석하여 보너스 XP(+10에서 +50 XP)를 부여합니다.
4. 진행 및 마일스톤 (Progression & Milestones)
- 레벨 5: 소셜 모드 잠금 해제: 다른 인증된 사용자들이 야외에서 무엇을 했는지 보여주는 개인 정보 보호 중심의 커뮤니티 보드입니다 (대략적인 도시 지역만 표시되며, GPS 추적은 없습니다).
- 레벨 10: 여정 공유 잠금 해제: 실제 경험한 성과를 내보내고 공유할 수 있는 캔버스/SVG 카드입니다.
5. TabPFN 미기후 활력 예측기 (Microclimate Vitality Forecaster)
야외 활동은 최적의 자연광 및 편안함과 동기화될 때 가장 효과적입니다. **TabPFN(Prior Labs Tabular Foundation Model)**을 사용하여 TouchGrass는 시간별 태양 고도, 온도 변화, 주변 습도, UV 레벨을 분석하여 다음을 예측합니다:
- 최적 야외 시간대 (Optimal Outdoor Window): 자연적인 일주기성 광(circadian daylight)을 극대화하고 강한 한낮의 UV 눈부심은 피할 수 있는 정확한 시간을 계산합니다 (예: 오늘 오전 10시 30분).
- 활력 점수 (Vitality Score, 0–100): 대기의 신선도, 빛 스펙트럼, 계절적 조건을 균형 있게 평가하는 연속적인 등급입니다.
- 오프라인 복원력 (Offline Resilient): 100% 온디바이스 테이블 형식의 사전 엔진으로 작동하여 셀 타워가 수 마일 떨어진 백컨트리에서도 기능을 보장합니다.
오픈 혁신(Open Innovation)이 중요한 이유?
이것은 1주차의 핵심 질문이었으며, TouchGrass가 구상된 정확한 이유입니다:
1. 백컨트리의 무신호 (오프라인 트레일 기능)
능선길을 하이킹하거나, 국립공원을 걷거나, 숲에 들어갈 때 셀룰러 인터넷은 사라집니다. 폐쇄적이고 독점적인 API(상업용 OpenAI 또는 Anthropic 엔드포인트와 같은)는 인터넷 연결 없이는 즉시 실패합니다. Gemma와 TabPFN이 로컬 온디바이스에서 실행되기 때문에, TouchGrass는 휴대폰을 비행기 모드로 설정해도 미기후를 계속 예측하고, 도전을 생성하며, 성찰을 평가할 수 있습니다.
2. 완전한 위치 및 행동 프라이버시
매일의 개인적인 성찰, 야외 활동 루틴, 신체 습관을 추적하는 것이 자신의 인생 일기를 제3자 광고 네트워크에 보내야 하는 것을 의미해서는 안 됩니다. 오픈 웨이트 AI와 로컬 퍼스트 스토리지를 사용하면 당신의 생각과 습관이 완전히 기기에 머무릅니다.
3. 운영 비용 $0
반복적인 토큰 구독료나 속도 제한(rate limits)이 없습니다. 엔트리 레벨 노트북이나 스마트폰만 있으면 누구나 이 엔진을 영원히 구동할 수 있습니다.
수상 부문 (Prize Categories)
- 최우수상 (Overall Grand Prize, $250): Gemma 2를 핵심으로 하는 오픈 웨이트 AI가 화면 중독을 물리적 현실 세계의 존재감으로 되돌립니다.
- Render 활용 최우수 ($200): FastAPI 백엔드와 React SPA 모두에 서비스를 제공하며 자동화된 무정지 빌드를 통해 Render에 통합 풀스택 AI 에이전트 런타임으로 호스팅되었습니다.
- TabPFN 활용 최우수 ($200): 마이크로 기후 테이블 데이터로부터 최적의 15분 야외 시간대와 활력 점수를 예측하는 Prior Labs Tabular Foundation Model입니다.
- ElevenLabs 활용 최우수 ($200): 차분하게 말하는 목소리의 임무 브리핑과 오디오 재생을 통해 화면 없는 몰입감을 가능하게 합니다.
- Sentry 활용 최우수 ($200): Gemma 생성, TabPFN 테이블 예측 구간, 정책 검사를 계측(instrumenting)하는 포괄적인 에이전트 추적 도구입니다.
현장 테스트 (Field Test)
저는 TouchGrass를 오후 산책 코스에서 사용해 보았습니다. 이 에이전트는 저에게 다음과 같은 임무를 주었습니다:
"조류 노래 추적기(Avian Song Tracker): 최소 두 마리의 지저귀는 새의 물리적인 위치를 정확히 찾아낼 때까지 조용히 밖에 앉아 계세요. 사진을 찍지 않고 그들의 비행 경로를 관찰하세요."
저는 이를 수락했고, 화면은 완전히 검게 변하며 Zen 모드로 전환되었고, 저는 휴대폰을 재킷 주머니에 넣었습니다. 저는 참나무 아래에서 22분을 보내며 청설모와 두 마리의 스패로우 소리를 들었고, 한 번도 휴대폰을 만지지 않았습니다.
집에 돌아와 앱을 열어 저의 성찰 메모를 개인 여정(Journey) 일기에 저장하고, 7일간의 활동 추적기가 하루가 완료되었음을 표시하는 것을 지켜보았습니다.
실제 생활 > 화면 시간.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기