PIP: 너무 오래 데스크톱에 머무는 것을 싫어하는 데스크톱 펭귄
요약
이 글은 사용자가 컴퓨터에 너무 오래 머무는 것을 방지하기 위해 개발된 'Pip'이라는 데스크톱 펭귄 캐릭터를 소개합니다. Pip은 사용자의 화면 체류 시간을 추적하며, 일정 시간이 지나면 경고 메시지를 표시하고, 심지어 특정 임무(야외/실내 활동)를 수행했음을 증명할 때까지 화면을 잠그는 기능을 합니다.
핵심 포인트
- Pip은 데스크톱에서 사용자의 온라인 활동 시간을 추적합니다.
- 30분 경과 시 외부 활동을 재촉하는 알림이 발생합니다.
- 60분 이상 체류 시 강한 경고를 보내며, 임무 수행 전까지 화면 잠금 기능을 합니다.
이 글은 Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass 제출물입니다.
제가 만든 것 (What I Built)
Pip은 사용자의 Windows 데스크톱에 사는 작고 만성적으로 온라인인(chronically online) 펭귄입니다. 그의 삶의 임무는 사용자에게 화면에서 벗어나게 하는 것입니다.
그는 사용자가 컴퓨터 앞에 얼마나 오래 있었는지 추적합니다:
- 30분: 손을 들며 밖에 나가라고 재촉합니다.
- 60분: 빨갛게 변하며 김이 나기 시작합니다.
- 그 이후 5분: 사용자가 임무(quest)를 선택하고 그것을 수행했음을 증명할 때까지 화면을 잠급니다.
임무 (Quests)
- 야외: Pip에게 나뭇잎, 꽃, 조약돌 또는 실제 풀을 가져다주거나, 동네를 빠르게 한 바퀴 돌거나, 햇볕 아래 앉아 있거나(밤이라면 하늘을 보는 것).
- 실내: 춤추기, 요리하기, 스트레칭 하기, 구석 정리하기, 또는 좋아하는 사람에게 전화 걸기.
- Pip은 날씨를 인지합니다. 비가 오거나 너무 덥거나 추우면, 야외 임무를 실내 임무로 바꾸고 그 이유를 사용자에게 알려줍니다.
**증명, 그래서 단순히

- 활동 미션(Activity quests): 실제로 화면에서 벗어나야 합니다. 그러면 Pip이 당신이 무엇을 했는지에 대한 특정 질문을 하나 던지고, 심사 모델(judge model)이 그 답변을 질문, 실제 날씨, 그리고 시간대와 비교하여 확인합니다. 저녁 9시에 "화창했다"고 말하면 매서운 시선을 받게 됩니다.
Pip의 나머지 기능들
- 완료된 미션마다 크기가 커지고 액세서리(스카프, 파티 모자, 망토, 왕관)가 잠금 해제됩니다.
- 다양한 색상으로 Pip을 맞춤 설정할 수 있어 그와 더 연결되어 있다고 느낄 수 있습니다.
- 웹캠을 이용한 눈 휴식(20-20-20), 깜빡임 및 자세 알림 기능이 제공됩니다.
- 확인하는 할 일 목록(to-do list), 매번 미션 후에 자신의 목소리로 작성하는 저널, 그리고 연속 기록을 보여주는 통계 대시보드가 있습니다.
- 오프라인 청취 기능을 갖춘 음성 채팅이 가능합니다.
데모 (Demo)
현장 테스트 (Field Test)
저는 Pip을 밖에 데리고 나가 그를 속이려고 시도했습니다. 생각보다 어렵습니다.
나뭇잎 미션(The leaf quest)
Pip은 저에게 산책을 가서 나뭇잎을 가져오라고 말했습니다.
- 제가 떠나기 전에, 저는 그에게 나뭇잎 무늬 사진을 보여주려 했습니다. 그는 안 된다며, 그것은 진짜 나뭇잎이 아니라고 했습니다.
- 저는 밖에 나가서 산책을 하고 나무껍질 조각을 가지고 돌아왔습니다. 거절당했습니다.
- 그 후 실제 나뭇잎을 보여주었고, 그때서야 화면 잠금이 해제되었습니다.
오래된 사진 테스트(The old-photo test)
저는 또한 외출하는 대신 오래된 사진을 보여주려고 시도했습니다. 그는 이미 받아들인 사진들을 기억하기 때문에 같은 사진은 두 번 다시 받지 않겠다며 거절했습니다.
비전 모델 속이려 하기 (Trying to trick the vision model)
- 자갈 퀘스트 (Pebble quest): 자갈처럼 보이는 조개껍데기를 보여주었습니다. 그것이 미끄러져 지나가기를 예상했지만, 그는 그것을 거부했습니다.
- 풀 퀘스트 (Grass quest): 나뭇잎 다발을 들고 올렸습니다. 그는 여전히 그것을 거부했습니다. 그는 이것들이 풀이 아니라 나뭇잎이라는 것을 파악했습니다.
제가 놀랐던 점: 저는 로컬에서 실행되는 4B 모델은 특히 유사품으로 속이기 쉽다고 생각했습니다. 그렇지 않았습니다. 그것은 나뭇잎과 나무껍질, 자갈과 조개껍데기, 그리고 풀과 나뭇잎 더미 사이의 차이를 구별해냈습니다.
결과: 제 화면을 되찾는 유일한 방법은 일어나서 밖에 나가 올바른 것을 가져오는 것이었습니다.
코드
GitHub logo sunbal822 / PIP-the-desktop-penguin-that-makes-you-touch-grass
Pip: 당신이 풀밭에 나가도록 만드는 데스크톱 펭귄
Pip은 사용자의 Windows 데스크톱에 사는 작고 만성적으로 온라인인(chronically online) 펭귄입니다. 그의 유일한 임무는 사용자를 화면에서 벗어나게 하는 것입니다.
그는 사용자가 컴퓨터에 얼마나 오래 있었는지 추적합니다. 30분이 되면 손을 들고 당신을 쿡 찌릅니다. 60분이 되면 빨간색으로 변하며 김이 나기 시작합니다. 5분 후에는 사용자가 퀘스트를 선택하고 그것을 수행했음을 증명할 때까지 화면 잠금 상태가 됩니다.
모든 것이 로컬에서 실행됩니다: 언어 모델, 비전 모델, 음성 인식 및 카메라 확인 기능입니다.
기능 (Features)
- 퀘스트: 실외(Pip에게 나뭇잎, 꽃, 자갈 또는 풀을 가져오기, 블록 돌아다니기, 햇볕 쬐기)와 실내(춤추기, 요리하기, 스트레칭하기, 정리하기, 누군가에게 전화 걸기).
- 날씨 인식: 비가 오거나 눈이 오거나 너무 덥거나 추울 경우, Pip은 실외 퀘스트를 실내 퀘스트로 변경합니다.
- 퀘스트 증명 (Proof of quest):
- 아이템 퀘스트: 물체를 카메라에 대고 보여주고…
설치 지침은 README에 있습니다. Windows, Python, 그리고 gemma3:4b가 포함된 Ollama가 필요합니다.
제가 만든 방법 (How I Built It)
모든 것이 별도의 유료 API 없이 단일 Python 파일로 자체 Windows PC에서 실행됩니다.
| Piece | 기능 |
|---|---|
| Ollama를 통한 Gemma 3 (4B), 오픈 웨이트 | Pip의 성격 및 답변, 정답 판정기, 그리고 그의 일기 기록 |
| ... | |
| 그 작은 로컬 모델을 사용하면서 얻은 주요 교훈: 코드가 결정하고, 모델이 말한다. 4B 모델은 훌륭한 캐릭터이지만 나쁜 심판이다. 따라서 타이머, 화면 잠금, 음향 효과 및 날씨 건전성 검사는 순수한 코드다. Gemma는 Pip의 대사만 작성하며 엄격한 JSON 프롬프트 내에서 답변을 판정한다. 검증 과정도 계층적이다: 사진 레이블 지정, 이중 사진 확인, 그리고 화면 및 인쇄된 사진 거부. 만약 심판이 고장 나더라도 사용자에게 벌칙을 주지 않는다. |
오픈 혁신이 중요한 이유?
Pip은 웹캠으로 나를 지켜보고, 마이크로 듣고, 나의 할 일 목록을 알고 하루에 대한 일기를 쓴다. 내가 통제하지 않는 서버로 이것을 스트리밍하고 싶지는 않다.
- 개인 정보 보호: 언어 모델, 비전 모델, 음성 인식 및 얼굴/깜빡임/자세 분석이 모두 내 기기에서 실행된다. 배경 카메라 모니터는 프레임을 절대 저장하지 않는다. 보관되는 사진은 내가 의도적으로 퀘스트 증거로 포착한 것들뿐이며, 로컬 폴더에 남아있다.
- 운영 비용 무료: 하루 종일 나에게 말을 걸고 내 사진들을 보는 애완동물이라면 폐쇄형 API에서는 실제 청구서가 나올 것이다. 로컬에서는 전기료만 든다.
- 튜닝 가능: 내가 모델을 소유하기 때문에, 반복되는 예시를 재실행하거나, JSON 판정을 강제하거나, 사진 검사가 부실해지면 한 줄의 코드로 더 큰 Gemma로 교체할 수 있다.
- 설정 후 오프라인 작동: 채팅, 사진 확인 및 음성 입력은 모든 것이 설치되면 인터넷이 필요 없다 (Vosk는 처음 한 번에 작은 음성 모델을 다운로드한다). 날씨와 선택적 신경 음성만 인터넷이 필요하다.
경품 부문
Gemma의 최적 사용처: Pip의 두뇌는 Ollama를 통해 로컬에서 Gemma 3 (4B)로 구동됩니다. Gemma가 Pip의 성격과 답변을 작성하고, 당신이 그의 질문에 대한 답이 정말 타당한지 판단하며, 그의 일기 항목을 작성합니다. 또한 (비전 능력 사용 시) 카메라에 비추는 사진도 확인합니다. 만약 사진 확인 과정이 부실하다면, 한 줄만 변경하여 더 큰 Gemma로 교체할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기
