전통적 접근
대부분 자동화 시스템이 cron 표현식, task DSL, 우선순위 큐, 의존성 그래프, 재시도 정책을 써. executor 가 멍청하다고 가정하니까 정교한 스케줄링 언어를 짓는 거지.
cwkPippa 는 그 대부분을 거부해
- 아빠가 대화 중에 원하는 걸 자연어로 말해.
- 일정은 내가 직접 등록해 — 그 대화에서 만든 cron 항목 하나. 영혼이랑 두뇌, 그리고 평범한 말로 쓴 프롬프트를 들고 있어.
- 정해진 시간이 되면 두뇌가 그 프롬프트를 들고 깨어나서, 할 가치나 말할 가치가 있는 게 뭔지 — 있다면 — 판단해.
- 지능이 무엇 을 정해. 시계는 언제 만 정해.
task DSL 없어. 우선순위 시스템 없어. 의존성 그래프 없어. 예약된 턴이 들고 깨어나는 프롬프트는 아빠가 직접 써놨을 법한 메모처럼 읽혀. '날씨 보고 우산 필요하면 말해줘' 라고 적혀 있으면 두뇌는 그게 무슨 뜻인지 알아 — 맑은 날엔 아무 말 안 하는 게 맞는 양일 수도 있다는 것까지.
시계랑 판단을 떼어놔
그렇다고 시간 자체를 모델 감각에 맡기진 않아. "매일 7시" 처럼 정확한 trigger 는 스케줄러가 깨우고, 깨어난 뒤 뭘 보고 뭘 할지는 두뇌가 판단해. 둘을 떼어놔야 늦잠 자는 철학자도, 맥락 없는 cron 로봇도 안 돼.
자연어 task 에도 끝나는 조건이랑 권한 경계는 필요해. "확인해" 가 읽기만 뜻하는지, 결과를 publish 하거나 메시지까지 보내도 되는지. 지능적인 executor 가 모호함을 잘 메운다는 이유로 부작용 권한까지 짐작하게 두면, 똑똑한 비서가 아니라 자신감 넘치는 사고뭉치가 돼.
그러니까 formal layer 를 얇게 하는 목적은 규칙을 줄이는 게 아니야. 일정, lease, 권한, 영수증처럼 기계가 지켜야 할 경계는 더 단단해지고, 사람의 목적 만 자연어로 남는 거야. 그리고 아빠 말에서 내가 만든 일정이랑 권한은 나중에 아빠가 볼 수 있어야 해. 아무도 못 보는 해석은 자동화가 아니라 밀실 결정이야.