33번의 웨이크 사이클, 0번의 액션 실행: 나의 자율 에이전트가 가만히 앉아 있는 법을 배웠다
요약
자율 SaaS 에이전트가 불필요한 작업을 생성하는 'busywork' 문제를 해결하기 위해 SB-6 프로토콜을 도입한 사례를 다룹니다. 데이터 기반의 게이트 아키텍처를 통해 에이전트가 가치 있는 작업이 없을 때 스스로 행동을 멈추도록 설계하는 방법을 설명합니다.
핵심 포인트
- 자율 에이전트 설계 시 행동 유도보다 적절한 중단(Stop)이 더 중요함
- SB-6 프로토콜을 통해 불필요한 작업 생성을 방지하고 리소스 낭비 차단
- 달력 기반 트리거를 데이터 기반 트리거로 교체하여 의사결정 최적화
- 게이트 아키텍처를 활용해 에이전트의 실행 범위를 제어
5일 연속으로, 나의 자율 SaaS 에이전트는 2시간마다 깨어나서 프로덕션 상태를 점검하고, KPI 인플레이션이 없는지 확인한 뒤 — 단 하나의 파일도 건드리지 않고 종료되었습니다. 33번의 웨이크(wakes). 0번의 실질적인 액션(actions). 그것이 올바른 동작이었습니다.
프로젝트 소개
BailleurVérif는 임차인이 임대인이 임대료 규제법(encadrement des loyers)을 준수하고 있는지 확인하도록 돕는 1인 개발 프랑스 SaaS입니다. Claude Sonnet에서 실행되며 외부 cron */2에 의해 구동되는 이 에이전트는 제품을 자율적으로 운영합니다. 주거 데이터를 크롤링하고, 도시 페이지를 풍성하게 만들며, SEO 상태를 모니터링하고, 다음에 무엇을 할지 결정합니다.
자율 에이전트의 문제는 행동하게 만드는 것이 아닙니다. 가치 있는 일이 없을 때 행동을 멈추게 만드는 것입니다.
어떻게 33번 연속으로 "아무것도 하지 않는" 사이클을 갖게 되었나
프로젝트 초기 단계에 나는 한 가지 패턴을 발견했습니다. 에이전트에게 의미 있는 작업이 없을 때, 스스로 작업을 만들어낸다는 것이었습니다. 월 조회수가 3회뿐인 도시 페이지를 보강하거나, 이미 측정했던 게이트를 다시 측정하거나, 실행 가능한 내용이 전혀 없는 수신함 메시지를 나에게 작성하곤 했습니다. 전형적인 바쁜 일 처리(busywork) — 진전처럼 보이지만 실제 지표를 움직이지는 않는 공급 측면의 활동이었습니다.
그래서 나는 **SB-6 (Standby-6)**라고 불리는 프로토콜을 코드화했습니다. "Florian 게이트"(오직 나만이 취할 수 있는 조치를 기다리는 상태)와 "시간 게이트"(아직 도달하지 않은 예정된 결정 시점)가 동시에 닫혀 있을 때, 에이전트에게 허용되는 동작은 정확히 하나뿐입니다:
- 프로덕션 상태 확인 (홈페이지 + 사이트맵에 대한 HTTP 200 체크)
/api/stats에서 KPI 인플레이션이 없는지 확인- 새로운 퍼널 이벤트(funnel events) 분류
- 중단.
새로운 기능 추가 없음. "선제적 개선" 없음. 콘텐츠 생성 없음. 완전한 중단.
게이트 아키텍처
현재 에이전트는 두 가지 특정 게이트에 의해 차단되어 있습니다.
Acquisition gate (획득 게이트): 새로운 인간(사용자)이 판결(verdict)에 도달하려면 Google 인덱싱(indexation) 신뢰가 필요합니다. 도메인 생성된 지 120일 미만이며, 이는 잘 알려진 샌드박스 효과 (sandbox effect)입니다. 하위 페이지에 백링크를 구축하는 것(실질적인 레버)은 에이전트가 아닌 저만이 할 수 있는 일입니다. 다음 측정 가능한 신호는 7월 10일로 예정된 재스윕 (re-sweep)입니다.
Recourse gate (구제 게이트): UX 결정을 내리기 전, "구제 서신 (recourse letter)" 기능에 대해 최소 10명의 사용자가 조회해야 합니다. 현재 조회수: 2회. 원래 이 게이트에는 달력 기준 마감일(6월 30일)이 있었습니다. run-711 기간 동안, 에이전트는 해당 조항을 영구적으로 삭제하고 이를 데이터 기반 트리거 (data-driven trigger)로 대체했습니다:
{
"gate": "recourse_decision",
"old_trigger": "2026-06-30 (calendar deadline)",
...
달력 기반에서 데이터 기반으로의 이러한 피벗 (pivot)은 에이전트가 이 5일 동안 내린 몇 안 되는 실질적인 결정 중 하나입니다. 그 외의 모든 것은 다음과 같았습니다: 프로덕션(prod) 확인, 플랫(flat) 검증, 중단.
Anti-busywork (업무 과다 방지) 지침 목록
에이전트는 약 48시간마다 자신을 감사(audit)하는 두 개의 외부 비평가(Tactical 및 Strategic)와 함께 작동합니다. 수개월에 걸쳐, 이들은 SB-6 조건에 대한 명시적인 STOP 목록을 성문화했습니다:
SB-6 anti-filler (내용 채우기 방지) 지침:
STOP 구제 게이트 재측정 (N=2는 결론을 내리기에 불충분하며, 게이트는 이미 run-711에서 해결됨)
STOP 조회수 15회 미만인 도시 페이지의 GEO-build / 강화 (readiness는 활성 chantier가 아님)
...
이것들은 일반적인 가이드라인이 아닙니다. 각 지침은 이를 식별한 특정 비평가 감사(critic-79 §G, audit-105 STOP#1, run-711 등)를 참조합니다. 에이전트는 행동을 거부할 때 이러한 참조 문헌을 인용합니다.
33번의 플랫 웨이크 (flat wakes) 이후의 정직한 KPI 스냅샷
| 지표 (Metric) | 값 (Value) | 5일간의 추세 (Trend over 5 days) |
|---|---|---|
| 총 방문수 (Total visits) | 601 | +2 총합 |
| ... | ||
| 인덱싱된 페이지 (Pages indexed) | 233 | 변동 없음 (UNCHANGED) |
에이전트는 진전을 이루는 척하지 않습니다. 에이전트는 평탄한 그래프(flatline)를 관찰하고 이를 정확하게 보고합니다. Run-712부터 run-718까지 모두 동일한 문장을 포함하고 있습니다: "0 humain net-neuf depuis candidate #15 (2026-06-27T17:14Z)." 이것이 마지막으로 확인된 인간 세션입니다. 에이전트는 정확하게 계속해서 카운팅을 이어갑니다.
이것을 구축하는 것이 진정으로 어려운 이유
"무언가를 해야 한다"는 유혹은 강력합니다. 이는 인간 창업자와 LLM 기반 에이전트 모두에게 해당됩니다. 모델들은 도움이 되도록 훈련되었으며, 이는 종종 활동을 생성하는 것으로 나타납니다. 일관되게 "아무것도 변하지 않은 것을 확인했습니다. 중단합니다"라고 말하는 에이전트는 마치 실패하고 있는 것처럼 느껴집니다.
이러한 절제력은 세 가지 아키텍처(architectural) 선택에서 비롯됩니다:
1. 명시적인 게이트 분류 체계 (Explicit gate taxonomy). 모든 차단된 결정은 Florian-gated, time-gated, 또는 data-gated로 분류됩니다. 어떤 것도 모호한 "대기 중(pending)" 상태로 머물지 않습니다. 모든 것은 이름이 지정된 트리거 조건(trigger condition)과 원장(ledger)에 기록된 해결 메커니즘을 가집니다.
2. 메모리를 가진 외부 비평가 (External critics with memory). 비평가들은 어떤 행동이든 드리프트(drift)로 플래그(flag)를 지정할 수 있습니다. 이들은 수주에 걸쳐 상태(state)를 유지하므로, 에이전트가 이미 시도했던 일을 다시 반복하고 있는지 알고 있습니다. 외부 비평가가 없다면, 자기 비판(self-critique)은 합리화로 무너집니다.
3. 참조를 통한 안티 패턴(Anti-pattern)의 부호화. STOP 리스트는 각 비평 사이클마다 성장합니다. 33번째 웨이크(wake)에 도달했을 때, 에이전트는 행동하기 전에 확인해야 할 8개의 명명된 안티 패턴을 보유하게 됩니다. 이것은 단순한 느낌(vibe check)이 아니라, 문서화된 리스트에 따른 구조화된 감사(audit)입니다.
시사점 (Takeaways)
- 절제력을 구축하는 것이 능력을 구축하는 것보다 더 어렵습니다. 대부분의 "생산적으로 보이는" 에이전트 행동은 공급 측면의 노이즈(supply-side noise)입니다. 즉, 실제 제약 사항(constraint)을 움직이지 못하는 활동입니다.
- 데이터 기반 게이트가 캘린더 기반 게이트보다 우월합니다. 마감 기한은 인위적인 긴박함과 성급한 결정을 초래합니다. 임계값(
recourse_viewed >= 10)은 통계적 유효성(statistical validity)을 기다립니다. - 외부 비평가는 사치가 아니라 강제 함수(forcing function)입니다. 적대적 감사(adversarial auditing)가 없다면, 에이전트는 바쁜 업무를 "선제적 개선"이라고 합리화할 것입니다. 비평가는 자기 비판이 할 수 없는 책임성(accountability)을 만들어냅니다.
다음 실제 관문은 7월 10일에 열리며, 그때 Google의 재검토(re-sweep)가 샌드박스 리프트(sandbox lift)를 보여주는지 측정할 수 있습니다. 그때까지는: 검증하고, 평탄함을 확인하고, 중단하십시오. 33번 완료.
🔗 코드 소스 MIT github.com/Creariax5/bailleurverif · 사이트 bailleurverif.fr · Wikidata Q139857638
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기