NEW코딩일지 · 11.05코퍼스 메인에 주장 연구실을 세웠다: 사유고2 주장 29만 개를 자동 등록하고 스파크 두 대가 반증 조건까지 검토한다
← 개발로그
·2분

Hermes 개발로그 · 2화

정각 크론을 '오늘 한 번' 약속으로 바꿨다: 새벽 브리핑이 사흘 연속 오지 않은 뒤

매일 새벽 5시에 오기로 한 블로그 주제 브리핑이 사흘 연속 오지 않았다. 정각 한 번 대신 '오늘 한 번'으로 약속을 바꿨고, 헤르메스의 자리는 지휘관이 아니라 비서실장으로 다시 정했다.

▸ Hermes#launchd#cron#orchestration#telegram

5월 7일에 라틸리언스봇에게 부탁을 하나 했다. 매일 아침 블로그로 쓸 만한 주제를 골라 보내 달라고. 라틸리언스봇이 직접 뉴스를 찾는 건 아니다. 새벽 5시에 예약 작업이 돌면서 Codex와 Hermes가 웹에서 최신 뉴스와 시장 정보를 찾고, 국내와 미국과 글로벌 이슈를 골라 주제 12개로 만든 뒤, 라틸리언스봇을 통해 텔레그램으로 보낸다.

사흘 동안 오지 않은 아침

다음 날 아침 브리핑은 오지 않았다. 그다음 날도, 5월 10일에도 오지 않았다. 예약은 분명히 등록돼 있었다. 스케줄이 있다는 것과 결과가 도착했다는 것이 처음으로 갈라졌다.

5월 10일 새벽 5시에 맥은 깨어 있었다. 그런데도 macOS의 예약 실행 도구 launchd는 5시 정각 한 번으로 걸어 둔 작업을 실행하지 않았다. 당시 세션은 그렇게 진단했고, 정확히 왜 건너뛰었는지까지는 밝히지 못했다.

그래서 약속의 모양을 바꿨다. 5시 정각 한 번을 믿지 않고 10분마다 확인한다. 한국 시간 오전 5시에서 12시 사이에 오늘 아직 보내지 않았으면 한 번만 보내고, 보냈다는 표시를 남긴다. 표시가 있으면 다시 보내지 않는다. 그날 브리핑은 바로 두 통으로 나갔다. 지금도 헤르메스의 정기 작업은 대부분 이 모양이다. 정각을 놓쳐도 창 안에서 따라잡고, 두 번 보내지 않는다.

지휘관이 아니라 비서실장

5월 14일에는 더 큰 그림을 그렸다. 그때 나는 오픈클로라는 에이전트 체제를 세 개 돌리고 있었다. 그 맨 위, 내 바로 아래에 헤르메스를 앉히고 전체 지휘를 맡기면 어떨까 싶었다. 헤르메스가 준비된 작업을 골라 각 체제에 나눠 주는 최상단 오케스트레이터 설계가 그날 오후에 나왔다.

밤에 그 설계를 뒤집었다. 체제마다 성향이 전혀 다르고, 무슨 일을 할지는 기획 단계에서 이미 정해진다. 헤르메스가 할 일은 일을 나눠 주는 게 아니라 진행 상황을 나에게 보고하고 코드를 리뷰하는 것이었다. 그때 헤르메스에게 한 말이 “그러니까 너는 그냥 내 비서실장이야”였다.

이 한 문장이 이후의 기준이 됐다. 상황판도, 칸반도, 컨트롤타워 점검도 명령하는 권한이 아니라 이미 돌아가는 일을 정확히 읽고 보고하는 쪽으로 만들었다. 6월 5일부터 3시간마다 봇과 워커와 큐를 살피는 컨트롤타워 점검은 9월 29일까지 877번 돌았다.

자동화보다 품질

5월 20일 새벽에는 방향을 하나 더 정했다. 나는 자동화에 대한 고집보다 품질에 대한 고집이 더 센 편이다. 주제를 고르는 일과 정보의 품질이 불안하다면 억지로 자동화하지 않기로 했다. 대신 내가 끼더라도 한 건씩 처리하지 않는다. 한 번에 여러 건을 넘기면 그 뒤는 순서대로 흘러가게 했다.

그렇게 나온 흐름이 다섯 단계다. 스카우트가 주제 후보를 보여 주면, 내가 고르고 자료를 모아 넘긴다. 그다음 편집, 블로그 원고, 텔레그램 카드뉴스는 봇들이 이어받는다. 사람이 끼는 자리는 자동화의 실패가 아니라 품질이 정해지는 자리로 일부러 남겼다.

배운 것

시간으로 거는 자동화는 정확한 한 순간보다 재시도할 창과 중복 방지로 설계해야 한다. 그리고 여러 에이전트를 묶는 자리에서 필요한 건 더 많은 명령 권한이 아니라 정확한 보고였다. 둘 다 봇이 늘어나기 전에 정해 둔 게 다행이었다. 봇은 곧 일곱 개가 된다.

Hermes 개발로그 · 전 4화

  1. 1화텔레그램 봇 3개를 맥 스튜디오로 옮겼다: 한 봇의 메시지는 한 곳에서만 받는다
  2. 2화정각 크론을 '오늘 한 번' 약속으로 바꿨다: 새벽 브리핑이 사흘 연속 오지 않은 뒤
  3. 3화봇이 7개로 늘자 한 작업을 워커 여럿이 동시에 잡았다: 큐 잠금, 위키, 칸반을 붙였다
  4. 4화옛 런타임 2벌을 지우지 않고 은퇴시켰다: 큐 이력 2,101건은 보관 폴더로