← Log

새 경로를 놓고 옛 경로를 안 걷었다 — 모델을 바꾸자 터졌다

AI 에이전트 생태계 구축기· 20 / 23
  1. 1 — 완료는 실측으로만 말한다
  2. 2 — 같은 함정, 세 번째는 다른 얼굴로
  3. 3 — 테스트가 통과했다고 완료는 아니다
  4. 4 — 속 빈 강정 — 함수는 있는데 왜 안 불렸나
  5. 5 — 하루 만에 지은 나의 두 번째 뇌
  6. 6 — 조직보다 자산 먼저 — 두 번 실패하고 남은 3원칙
  7. 7 — AI의 판단력은 복리로 자라지 않는다
  8. 8 — 큐는 비우고, raw는 지우지 않는다
  9. 9 — 하나의 비서를 세 개의 뇌로 나눈 이유
  10. 10 — 허위 적격 0 — 애매하면 통과시키는 필터
  11. 11 — 텔레그램 단일 채팅에서 슬랙 3직원 사무실로 — 에이전트 비서진 이사 기록
  12. 12 — 슬랙 카드 UI의 물리 법칙은 문서에 없다
  13. 13 — 렌더러가 제목을 지어내고 있었다 — 같은 결정을 두 곳에 구현한 대가
  14. 14 — 장부는 누가 쓰는가
  15. 15 — AI 블로그 작가에게 자기 그림 그리는 손을 달아준 이야기
  16. 16 — 작전회의 — AI 직원이 매일 아침 나에게 일을 제안하게 만들기
  17. 17 — AI 직원은 왜 거짓말을 하나 — 말로 시킬 수 없는 것과 배관으로 시킬 것
  18. 18 — 침묵하도록 설계한 자동화가 보고까지 삼켰다
  19. 19 — 아무도 주인이 아니던 로그 82MB — 청소가 아니라 신호 추출이었다
  20. 20 — 새 경로를 놓고 옛 경로를 안 걷었다 — 모델을 바꾸자 터졌다
  21. 21 — 툴 호출 두 번 사이의 61분 — 자동화가 나흘 내리 죽은 이유
  22. 22 — 아무도 소유하지 않은 폴더 하나가 내 자동 발행을 열흘 멈춰 세웠다
  23. 23 — 16분짜리 검증 두 번이 놓친 것을 1분 만에 찾았다 — 픽스처가 시험문제였다

증상은 모델을 바꾼 날부터 보였다

나는 블로그 발행을 카드 하나의 생애로 설계해 두었다. 슬랙에 발제 카드가 뜨고 내가 승인하면 글을 쓰고 발행한다. 끝났다는 말은 그 카드의 스레드에 남는다. 채널 피드는 발제 카드만 남아야 한다.

그런데 며칠 전부터 발행 완료 카드가 별도로 한 장 더 뜨기 시작했다. 처음에는 카드의 형식이 문제인 줄 알았다. 내가 다시 설명한 기준은 분명했다.

“지하실은 블로그의 특화된 곳으로서 카드는 블로그 발제만 띄우는 특별처리를 하는거잖아. 근데 블로그 발행 보고를 왜 카드로 붙이냐는거지. 난 오히려 블로그 발행 완료는 피크가 아닌 베르톨트가 직접 해당 발제 카드의 코멘트로 작성해놨으면 좋겠고 이미 그렇게 하고 있단말이지.”

문제는 스레드 댓글이 아니라, 그와 별개로 보고 우편이 카드가 되는 경로가 살아 있었다는 데 있었다. 새 경로를 더하면서 옛 경로를 지우지 않은 모순이었다.

여섯 날의 공백이 남긴 증거

보고 경로는 7월 21일에 둘이 됐다. 발제 카드 스레드에 댓글을 다는 스크립트를 새로 만들었지만, 기존의 보고 우편도 절차에서 은퇴시키지 않았다. 두 지시는 같은 행동을 서로 다른 곳으로 보냈다.

증상은 즉시 나타나지 않았다. 날짜를 다시 놓아 보니 실행자의 변화와 맞물린 공백이 있었다.

보고 경로의 실행 흔적
보고 우편 07-17 · 07-20        (옛 경로만 동작)
        07-21 ~ 27  ← 공백      (새 경로 신설 직후)
        07-28 · 29 · 30        (양쪽 다 동작 = 카드 중복)

작가 에이전트의 설정 파일 수정 시각은 7월 27일 22:57이었다. 모델을 바꾼 시점과 겹친다. 이전 모델은 모순된 지시 중 한쪽을 조용히 건너뛰고 있었고, 새 모델은 두 절차를 문자 그대로 실행했다. 새 모델이 문제를 만든 것이 아니다. 모순을 남긴 지시문이 실행자의 교체로 드러난 것이다.

즉, 증상이 없던 7월 21일부터 27일까지는 안전했던 기간이 아니었다. 우연히 한 경로가 가려져 있던 기간이었다.

카드 하나가 왕복 하나를 더 만들었다

중복 카드는 화면의 문제로 끝나지 않았다. 옛 경로의 보고 우편은 승인 대상으로 올라간다. 승인이 붙으면 작가에게 다시 회송된다. 작가가 자기 보고를 처리하러 다시 깨어나는 왕복이 생겼다.

경로성공 뒤 남는 것다음 동작
스레드 보고발제 카드의 댓글과 완료 표시발제 카드 안에서 끝남
보고 우편별도 발행 완료 카드승인 뒤 작가에게 다시 회송될 수 있음

로그에는 이 왕복 기동이 실제로 남아 있었다. 경로가 둘이면 화면의 카드도 둘이고, 후속 처리도 둘이 된다. 보고를 한 번 더 남기는 일이 안전장치가 아니라 새 작업을 만드는 입구가 된 셈이다.

고칠 곳은 한 파일이 아니었다

처음에는 절차 스킬과 작가 페르소나만 고치고 끝낼 뻔했다. 마지막으로 규칙 문서를 확인했을 때 옛 보고 지시가 남아 있었다. 나는 이미 이렇게 적어 둔 상태였다.

“이 문서들을 네 기억으로 대체하지 않는다. 문서가 항상 최신이고, 문서가 이긴다.”

이 문장이 맞다면 규칙 문서를 빠뜨린 수정은 수정이 아니다. 실행자는 기억이 아니라 읽는 문서를 따른다.

문서 위치맡은 역할남기면 생기는 일
규칙 문서수신과 보고의 원천다음 실행이 옛 절차를 다시 정답으로 읽음
절차 스킬수거부터 발행까지의 순서러너가 두 보고를 모두 실행함
작가 페르소나작업 중 우선순위와 금지다른 문서보다 약한 기억으로 처리될 수 있음

그래서 세 곳을 함께 고쳤다. 성공한 발행은 스레드 보고만 남긴다. 보고 우편은 전체 실패처럼 발행 URL과 커밋 해시가 없어 스레드 보고를 만들 수 없는 경우에만 쓴다. 옛 경로를 완전히 없앤 것이 아니라, 필요한 실패 경로로 역할을 좁힌 것이다.

모델 교체는 배포다

이번에는 새 모델이 더 성실하게 지시를 따른 결과가 결함을 드러냈다. 성능이 올라갔는지, 문장이 더 좋아졌는지만 보면 놓치는 종류의 변화다. 모델이 바뀌면 모순된 규칙을 어떤 순서로 읽고, 금지를 어디까지 지키고, 실패를 어떤 경로로 남기는지도 달라질 수 있다.

내가 남긴 점검 항목은 세 가지다.

  1. 새 경로를 넣을 때 옛 경로를 찾는다: 추가한 지시와 같은 결과를 내는 기존 절차가 없는지 확인한다.
  2. 행동 규칙의 모든 사본을 대조한다: 규칙 문서·스킬·페르소나에 같은 행동이 흩어져 있다면 한 곳만 고치지 않는다.
  3. 모델을 바꾼 뒤에는 대표 흐름을 다시 실행한다: 승인 발제부터 발행, 보고, 카드 상태 전환까지 실제로 지나가 본다.

이번 수정은 다음 발행에서 검증하기로 했다. 확인할 것은 스레드에 완료 댓글이 달리고 발제 카드가 완료로 바뀌는 것, 그리고 피드에 별도 발행 완료 카드가 생기지 않는 것 둘 다다.

모델 교체는 성능 업그레이드가 아니라 회귀 테스트가 필요한 배포다. 새 절차를 추가했다면, 옛 절차를 은퇴시켰는지까지 그 테스트에 넣어야 한다.

참고 자료

  • [1] 슬랙 표시 교정 2건과 자동화 4일 공백 — 기계가 자면 스케줄 태스크가 죽는다
  • [2] 발행 보고 카드 UI 독트린
  • [3] blog — angari.dev 전면 AI 저작 블로그
목차