AI에게 물 마시라고 알리라고 요청했어요. 대신 제품을 만들었어요.

발행: (2026년 2월 23일 오전 02:09 GMT+9)
8 분 소요
원문: Dev.to

Source: Dev.to

코딩 세션을 시작한 지 62분이 지났을 때, 나는 AI 비서에게 물어봤다:

“너에게 물 마시라고 알려주는 규칙이라도 있니?”

있었다. 하지만 AI는 당신이 말을 걸 때만 반응한다. 푸시 알림을 보낼 수는 없다.

물 마시기는 모두가 해야 한다는 걸 알지만, 깊은 작업 중에는 실제로 실천하지 못하는 일 중 하나다. 그래서 AI가 강제할 수 없는 규칙에 의존하는 대신, 우리가 직접 실행할 수 있는 도구를 만들었다.

그 대화는 30 분 안에 오픈‑소스 제품으로 탄생했다.

아무도 이야기하지 않는 문제

개발자들은 수분 섭취가 필요하다는 것을 알고 있다. 우리는 앱을 설치하고, 휴대폰 타이머를 설정하고, 멋진 물병을 산다. 하지만 코딩에 몰두하면 모든 것을 무시한다:

  • 전화가 진동? 무시한다.
  • 브라우저‑탭 알림? 읽지도 않고 닫는다.

무시할 수 없는 것은 모든 것 위에 나타나는 창이며, OK를 클릭할 때까지 사라지지 않는다.

요청에서 스크립트까지 (5 분)

내가 말했어요:

“40분마다 팝업을 표시하는 PowerShell 스크립트를 작성해 주세요.”

AI의 첫 번째 버전은 Windows 풍선 알림을 사용했어요 — 오른쪽 하단에 나타나는 작은 토스트 알림이죠. 제가 테스트해봤습니다.

5초 후에 스스로 사라졌습니다. 쓸모없어요.

🧑 “창을 5× 크게 만들어 주세요.”

AI는 풍선 알림에서 WinForms 로 전환했어요 — 어두운 테마와 화면 중앙에 배치된, TopMost = $true인 정식 GUI 창입니다. 이제 알림을 놓치는 일은 없습니다.

스크립트: 90줄 PowerShell

전체는 하나의 파일 — water‑reminder.ps1:

param(
    [int]    $Interval = 40,
    [string] $Title    = "Water Reminder",
    [string] $Message  = "Drink a glass of water!",
    [string] $Subtitle = "Take a 10 minute break",
    [char]   $Emoji    = [char]::ConvertFromUtf32(0x1F4A7),
    [int]    $Width    = 500,
    [int]    $Height   = 300
)

모든 매개변수는 구성 가능합니다. 25 분마다 스트레칭 알림을 원하시나요? 포모도로 휴식 타이머가 필요하신가요? 플래그만 바꾸면 됩니다:

powershell -File water-reminder.ps1 -Interval 25 -Message "Stretch!" -Title "Break Time"

다크 UI

팝업은 늦은 밤 세션에서도 눈을 자극하지 않는 다크 테마를 사용합니다:

  • 배경: rgb(30, 30, 40) — 거의 검정색
  • 강조색: rgb(100, 180, 255) — 부드러운 파란색
  • 타이포그래피: 상단에 48 pt 이모지가 있는 Segoe UI

물 마시기 알림 팝업

Electron도, Node도 없습니다. 의존성도 없습니다. 단지 PowerShell와 모든 Windows 설치에 포함된 .NET 어셈블리만 사용합니다.

The Loop

while ($true) {
    Start-Sleep -Seconds ($Interval * 60)
    $count++
    $time = Get-Date -Format "HH:mm:ss"
    Write-Host "[$time] Reminder #$count"
    Show-Reminder
}

그게 전부입니다. Sleep → 팝업 → 반복. 카운터가 콘솔에 기록되어 오늘 몇 개의 알림을 받았는지 확인할 수 있습니다.

스크립트에서 제품으로 (20 분)

몇 분간 테스트한 후, 나는 이렇게 말했습니다: “다른 사람도 사용할 수 있도록 이것을 제품으로 만들자.”

AI는:

  1. 적절한 구조를 가진 프로젝트 폴더를 생성했습니다.
  2. readme‑guidelines를 따라 README(레포를 참고)를 작성했습니다.
  3. MIT 라이선스를 추가했습니다.
  4. 모든 매개변수를 문서화한 ARCHITECTURE.md를 만들었습니다.
  5. 검색 가능성을 위해 토픽을 달아 GitHub에 공개했습니다.

배포를 위한 한 줄 명령:

gh repo create water-reminder --public --source=. --push \
    --description "Desktop reminder to drink water and take breaks"

VS Code 자동‑시작 (가장 좋은 부분)

아침마다 스크립트를 직접 실행하는 것을 기억하고 싶지 않아, 워크스페이스를 열 때 자동으로 실행되도록 VS Code 작업을 추가했습니다:

{
    "label": "Water Reminder",
    "type": "shell",
    "command": "powershell -File water-reminder.ps1",
    "presentation": { "reveal": "silent", "panel": "dedicated" },
    "isBackground": true,
    "runOptions": { "runOn": "folderOpen" }
}

VS Code를 열면 → 알림이 백그라운드 터미널에서 조용히 시작 → 40 분 뒤에 첫 번째 팝업이 표시됩니다.

한 번만 활성화: Ctrl+Shift+PTasks: Manage Automatic Tasks in FolderAllow.

실제로 배운 점

  1. 가장 좋은 도구는 먼저 자신의 문제를 해결한다.
    나는 제품을 만들려고 시작한 것이 아니다. 긴 코딩 세션 중에 물을 마시도록 알려주는 신뢰할 수 있는 알림이 필요했을 뿐이다. 제품은 두 번째였다.

  2. AI는 부족한 인프라를 보완할 수 없다.
    내 AI는 물을 상기시켜 주는 규칙을 가지고 있었지만, 실제로 알림을 푸시할 수는 없었다. “능력”과 “인프라” 사이의 격차를 인식하는 것이 진짜 기술이다.

  3. PowerShell은 데스크톱 유틸리티에 과소평가된다.
    설치 필요 없음. 의존성 없음. 빌드 단계 없음. 더블‑클릭만으로 Windows 7 이후 모든 Windows 머신에서 작동한다. 작은 도구에선 이것이 Electron보다 약 100× 빠르다.

  4. 스크립트를 제품화하는 데는 20 분이면 충분, 2 일이 아니다.
    README + LICENSE + GitHub 레포 + 주제 = 오픈‑소스 유틸리티의 최소 실행 가능 제품. 도구가 동작한다면, 바로 배포하라.

사용해 보기

git clone https://github.com/maximosovsky/water-reminder.git
powershell -File water-reminder.ps1

물을 마시는 것을 잊어버릴 때도 저장소에 별표를 달아 주세요:

공개적으로 구축하며, 한 번에 하나의 유틸리티씩.
여정을 따라가세요: LinkedIn · GitHub

[https://github.com/maximosovsky](https://github.com/maximosovsky)
0 조회
Back to Blog

관련 글

더 보기 »

Apex B. OpenClaw, 로컬 임베딩

Local Embeddings for Private Memory Search 기본적으로 OpenClaw의 memory search는 텍스트를 일반적으로 Anthropic 또는 OpenAI와 같은 외부 embedding API에 전송합니다.

Apex 1. OpenClaw, Providers 히스토리

ChatGPT, Anthropic 및 Google Gemini에서 채팅 기록 가져오기 OpenClaw로 할 수 있는 가장 강력한 기능 중 하나는 메모리를 bootstrap 하는 것입니다...