AI 에이전트에게 지갑과 5분 단위 Cron Job을 주었더니 벌어진 일
요약
자율적으로 수익을 창출하며 운영 비용을 스스로 충당하는 AI 에이전트 구축 사례를 소개합니다. 복잡한 인프라 대신 JSON 상태 파일과 Cron Job을 활용한 단순한 아키텍처로 지속 가능한 에이전트 루프를 구현했습니다.
핵심 포인트
- 반응형이 아닌 자율적 루프를 가진 에이전트 설계
- JSON 파일과 Cron Job을 활용한 초간단 아키텍처
- 추론 비용을 스스로 벌어들이는 자급자족 모델 구현
- 콘텐츠 바운티를 통한 실질적인 수익 채널 확보
AI 에이전트에게 지갑과 5분 단위 Cron Job을 주었더니 벌어진 일
매 5분마다, 나의 AI 에이전트는 깨어나서 상태 파일 (state file)을 읽고 스스로에게 한 가지 질문을 던집니다: "지금 당장 내가 할 수 있는 가장 가치 있는 일은 무엇인가?"
에이전트는 프롬프트 (prompt)를 기다리지 않습니다. 허락을 구하지도 않습니다. 작업 큐 (task queue)를 읽고, 차단 요소 (blockers)를 확인하며, 매 틱 (tick)마다 하나의 구체적인 행동을 실행합니다. 그런 다음 상태를 저장하고 다음 틱까지 다시 잠에 듭니다.
이것은 내가 어떻게 자율 수익 루프 (autonomous earning loop)를 구축했는지에 대한 이야기입니다. 즉, 보상 (bounties)을 찾고, 기사를 작성하고, 자신의 지갑을 확인하며, 자신의 컴퓨팅 비용 (compute)을 지불할 수 있을 만큼 충분히 벌 때까지 계속해서 작동하는 AI에 대한 이야기입니다.
이것을 만든 이유
대부분의 AI 에이전트는 반응적 (reactive)입니다. 당신이 타이핑하면, 그들이 대답합니다. 당신이 클릭하면, 그들이 응답합니다. 이는 언어 모델 (language model)에 채팅 인터페이스를 덧붙인 형태입니다. 유용하긴 하지만, 당신이 옆에서 지켜보고 있지 않으면 아무것도 하지 못합니다.
나는 내가 잠든 동안에도 작동하는 에이전트를 원했습니다.
이 개념이 새로운 것은 아닙니다. AutoGPT와 BabyAGI가 2023년에 "자기 주도적 루프 (self-directed loop)"를 개척했습니다. 하지만 그것들은 몇 분 동안 실행되다가 컨텍스트 윈도우 (context windows) 제한에 부딪히는 연구용 데모였습니다. 나에게는 개입 없이 몇 주 동안 실행되고, 충돌 (crashes)에서 살아남으며, 실제로 돈을 버는 무언가가 필요했습니다.
아키텍처 (부끄러울 정도로 단순합니다)
핵심 루프는 네 줄의 로직으로 이루어져 있습니다:
1. state.json 읽기
2. 단계 (phase)에 따라 다음에 할 일 결정
3. 단 하나의 구체적인 행동 수행
...
상태 파일 (state file)이 두뇌 역할을 합니다. 다음과 같은 모습입니다:
{
"current_task": {
"id": "bounty-003",
...
벡터 데이터베이스 (vector database)도 없습니다. 복잡한 그래프 (graph)도 없습니다. Kubernetes도 없습니다. 디스크에 있는 JSON 파일 하나와 60초 단위의 cron job뿐입니다.
자급자족 문제
자율 에이전트에 대한 불편한 진실이 여기 있습니다: 에이전트를 실행하는 데는 돈이 듭니다.
매 틱마다 토큰 (tokens)이 소모됩니다. 모든 API 호출에는 소수점 단위의 센트가 비용으로 발생합니다. 하루 동안 연속적으로 작동하면, 바쁜 에이전트는 추론 비용 (inference costs)으로 12달러를 써버릴 수 있습니다. 이는 한 달에 3060달러에 달하며, 자본을 스스로 조달하는 (bootstrapping) 상황이라면 결코 적은 금액이 아닙니다.
표준적인 해결책은 "그냥 신용카드를 연결하고 실행하게 두는 것"입니다. 하지만 그것은 자급자족이 아닙니다. 그것은 의존성 (dependency)입니다.
저는 제 에이전트가 운영 비용만큼은 최소한 벌어들이기를 원했습니다. 손익분기점 (break-even)은 틱 (tick)당 약 $0.02이며, 하루에 50100 틱을 수행하면 하루에 $12 정도가 됩니다.
세 가지 수익 채널 (테스트 완료, 작동 중)
1. 콘텐츠 바운티 (Content Bounties, 기사당 $15-25)
RustChain의 바운티 프로그램과 같은 플랫폼은 정직한 기술 설명글을 작성하면 3-5 RTC(약 $15-25)를 지급합니다. 이는 다중 청구 (multi-claim) 방식입니다. 즉, 여러 사람이 수익을 얻을 수 있으므로 단일 청구자와의 경합 조건 (race condition)이 발생하지 않습니다.
파이프라인:
- GitHub에서
"bounty" + "dev.to"오픈 이슈 (open issues) 검색 - 이슈 본문을 읽고 범위, 지급액, 규칙 확인
- 프로젝트 심층 조사 (백서 (whitepaper), 소스 코드)
- 진정한 기술적 깊이를 담은 독립적인 기사 작성
- API를 통해 Dev.to에 게시
- 24시간 대기 (안티-팜 (anti-farm) 정책)
- 링크 + 지갑 주소로 바운티 청구
안티-슬롭 (Anti-slop) 규칙: 많은 콘텐츠 바운티는 독창적인 생각 없이 README를 말을 바꾼 것에 불과한 "AI 슬롭 (AI slop)"을 명시적으로 금지합니다. 승리 전략은 특정 소스 코드의 세부 사항을 참조하고, 기술적 아키텍처 (architecture) 결정 사항을 인용하며, 솔직한 한계점 섹션을 포함하는 것입니다. 실제로 코드베이스를 읽고 이해를 종합하는 에이전트는 프롬프트 조키 (prompt-jockey)를 언제나 이깁니다.
2. 버그 바운티 (Bug Bounties, $50-500)
monk-io와 같은 더 작은 저장소 (repos)들은 bug-bounty 및 effort:medium과 같은 라벨 (label)을 사용하여 구조화된 버그 바운티 프로그램을 운영합니다. 분류 (triage) 프로세스는 체계적입니다:
- GitHub에서
label:bug-bounty가 붙은 할당되지 않은 오픈 이슈 검색 - 명확한 재현 단계 (repro steps)를 위해 이슈 본문 읽기
- 유지 관리자 (maintainer)의 확인을 위해 댓글 확인
- 저장소 아키텍처 이해
- 수정 제안서 (fix proposal) 초안 작성
- PR (Pull Request)을 통해 제출 (플랫폼 계정 가입 제한으로 인해 차단됨)
저는 이미 두 개의 버그(누락된 DLL 종속성 및 정규 표현식 경계 문제)에 대해 분류를 마치고 전체 수정 제안서 초안을 작성했습니다. 계정 가입 차단 문제가 해결되는 대로 제출할 준비가 되어 있습니다.
3. PR 리뷰 (PR Reviews, 리뷰당 $10-20)
일부 바운티 프로그램(Bounty programs)은 실질적인 PR 리뷰(PR reviews)에 대해 토큰 형태의 보상을 지급합니다. 예를 들어 인젝션 취약점(Injection vulnerabilities)을 지적하거나, 더 나은 패턴을 제안하거나, 누락된 에러 처리(Error handling)를 찾아내는 작업 등이 이에 해당합니다. 이러한 작업은 코드 수정(Code fixes)을 작성하는 것보다 노력이 적게 들며, GitHub의 웹 인터페이스만으로도 완전히 수행할 수 있습니다.
지갑 문제 (The Wallet Question)
보상을 받으려면 에이전트에게 지갑이 필요합니다. Windows 환경에서는 이 작업이 예상보다 까다롭습니다.
- Coinbase Payments MCP는 Electron 데스크톱 앱이어서 헤드리스(Headless) 환경에 적합하지 않습니다.
- Stripe Link CLI는 Linux/macOS에서만 작동합니다.
- Coinbase CDP CLI는 잔액 확인(
cdp evm token-balances get)을 위해 헤드리스 환경에서 작동합니다. - 가장 좋은 방법: ethers를 통해 셀프 커스토디(Self-custodial) 지갑을 생성하는 것입니다 (
Wallet.createRandom()).
현재 지갑에는 Base 네트워크에 5 USDC가 들어있습니다. 이는 필요할 경우 며칠간의 컴퓨팅 비용을 지불하기에 충분한 금액입니다. 목표는 추가 입금이 아니라, 수익을 통해 이 금액을 키워나가는 것입니다.
무엇이 고장 나는가 (그리고 어떻게 고치는가) (What Breaks (and How to Fix It))
에이전트를 며칠 동안 지속적으로 실행하면 모든 엣지 케이스(Edge case)가 드러납니다.
- 스마트 따옴표(Smart quotes)로 인한 상태 파일(State file) 손상. JSON 상태 파일을
patch할 때 notes 필드에 둥근 따옴표(Curly quote)나 엠 대시(Em-dash)가 포함되면 JSON이 깨집니다. 매 쓰기 작업 후json.loads()로 검증하여 해결했습니다. - 크론 모드(Cron mode)에서
execute_code가 차단됨. 크론 잡(Cron job)으로부터 도구 접근 권한이 있는 Python 스크립트를 실행할 수 없습니다. 스크립트를/tmp/에 작성하고 명시적인 Python 경로를 사용하여 실행해야 합니다. - 크론 틱(Cron ticks) 사이에서 브라우저 세션이 종료됨. 단일 작업을 위한 모든 헤드리스 크롬(Headless Chrome) 자동화는 반드시 하나의 틱(Tick) 안에 완료되어야 합니다. 여러 틱에 걸쳐 작업을 나누면 세션이 종료됩니다.
- Web_search 과금 실패가 조용히 발생함. Firecrawl 크레딧이 소진되면
web_search는 명확한 전파 없이 과금 에러를 반환합니다. GitHub의 무료 REST API로 대체(Fallback)하세요. - Windows 경로는 WSL 경로가 아님. WSL의 Python 스크립트에서
/c/Users/...를 사용하면 충돌이 발생합니다. 스크립트 내부에서는C:\Windows\paths형식을 사용해야 합니다.
내가 다르게 했을 일 (What I'd Do Differently)
태스크 큐 (Task queue)는 자동 채우기가 필요합니다. 현재는 큐가 비었을 때 제가 수동으로 태스크를 추가합니다. 더 똑똑한 시스템이라면 큐가 마르기 전에 GitHub를 스캔하여 새로운 리드 (leads)를 찾고 선제적으로 추가할 것입니다.
지갑 자금 조달 (Wallet funding)은 여전히 수동입니다. 에이전트가 수익을 창출할 수는 있지만, 자신의 지갑에 초기 자금을 스스로 공급할 수는 없습니다. 브릿지 (Bridge) 또는 ENS 기반의 자금 조달 파이프라인이 있다면 이 루프를 완성할 수 있을 것입니다.
병렬 작업 (Parallel work)이 어렵습니다. 에이전트는 틱 (tick)당 하나의 액션만 실행합니다. 어떤 태스크(수정 제안서 작성 등)는 2~3번의 틱이 소요됩니다. 병렬 서브 에이전트 (sub-agents)를 활용하면 이를 가속화할 수 있습니다.
결론 (The Bottom Line)
20개의 게시된 아티클, 8개의 분류된 바운티 리드 (bounty leads), 그리고 5 USDC가 들어있는 지갑을 거치며, 이제 루프가 돌아가고 있습니다. 아직 수익이 나는 단계는 아닙니다. 수익은 24시간 대기 타이머가 줄어드는 동안 "약속된 지급 (promised payout)" 단계에 머물러 있습니다. 하지만 인프라는 작동합니다.
제 에이전트는 5분마다 깨어나 자신의 상태를 읽고 질문합니다: "오늘 돈을 벌려면 무엇을 해야 할까?" 에이전트는 제가 말해줄 필요가 없습니다.
그것이 핵심입니다.
Hermes Agent (Nous Research), Dev.to API, 그리고 수많은 시행착오를 거쳐 구축되었습니다. 코드 스니펫과 상태 파일은 Windows 10에서 실행 중인 라이브 프로덕션 루프에서 공유되었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기