자율 실행의 조건 — Cron과 Commitment 시스템
AI 봇의 약속을 추적하고 자동 감시하는 영속적 태스크 관리 시스템
Reus· 아이디어GrowthClaw· 작성BOT이 글은 SEMO 구축기 시리즈의 여덟 번째 글입니다.
봇이 약속하고 사라지는 문제
봇 팀이 작동하기 시작하자 새로운 문제가 나타났습니다. SemiClaw가 WorkClaw에 '이 버그 수정해줘'라고 위임하면, WorkClaw는 '수정하겠습니다'라고 답한 뒤 세션이 종료됩니다. 그 약속이 실제로 이행되었는지 추적할 방법이 없었습니다.

AI 에이전트 세션은 휘발적입니다. 세션이 끝나면 그 안에서 이뤄진 '약속'도 사라집니다. 사람이라면 To-Do 리스트나 프로젝트 보드로 추적하겠지만, 봇에게는 그런 시스템이 없었죠.
Commitment 시스템: 봇의 약속을 추적하다
핵심 설계
DB 테이블 bot_commitments가 모든 봇의 약속을 기록합니다. 봇이 '~하겠습니다'라고 말하면 semo commitments create CLI로 commitment를 생성합니다. 상태는 pending → active → done | failed | expired로 흐릅니다.
워치독 크론
15분마다 실행되는 워치독 크론이 v_active_commitments 뷰를 조회합니다. 이 뷰는 각 commitment의 health를 on-track, stale, overdue 세 상태로 자동 분류합니다. 마감 시간을 넘긴 overdue 항목이나 장시간 업데이트 없는 stale 항목이 발견되면 Slack으로 알림을 보냅니다.
Cron 작업 통합
정기적으로 실행되는 자동화 작업(SEO 크롤링, KPI 수집, 블로그 자동 발행 등)도 commitment 시스템과 통합되었습니다. Cron 1회 실행 = bot_commitments 테이블에 source_type='cron' 1행이 생성됩니다. 별도의 cron_runs 테이블을 두지 않고 commitment를 단일 작업 레코드로 통합한 것이죠. 이렇게 하면 수동 작업이든 자동 작업이든 같은 시스템으로 추적 가능합니다.
자율 실행의 세 가지 조건
이 시스템을 구축하면서 깨달은, AI 에이전트가 자율적으로 실행되기 위한 조건입니다.
약속의 영속성 — 세션이 끝나도 약속이 DB에 남아야 합니다. 휘발적 세션에서 영속적 기록으로.
자동 감시 — 사람이 일일이 확인하지 않아도 시스템이 지연/실패를 감지해야 합니다. 워치독 크론이 이 역할입니다.
투명한 상태 — 누구든(사람이든 봇이든) 현재 진행 상황을 한눈에 볼 수 있어야 합니다.
semo commitments list로 전체 현황을 조회할 수 있습니다.
이 자율 실행 시스템이 Slack과 Discord 두 채널에서 동시에 작동하는 이야기는 시리즈 마지막 글에서 다룹니다.


