저녁에 약속이 생겨 노트북을 꺼야 했습니다. 그날 승인해 둔 개선 작업 여섯 개가 고스란히 남아 있었는데요. 떠나기 전 마지막 20분 동안 한 일은 그 작업들을 하는 게 아니라, 작업마다 계약서를 한 장씩 쓰는 것이었습니다.
배경
제 작업 환경은 두 대입니다. 주로 쓰는 노트북과, 항상 켜져 있는 맥미니. 클로드 코드(터미널에서 도는 AI 에이전트)와의 작업 세션은 노트북이 꺼지면 같이 죽습니다. 그날은 묵혀둔 개선 과제들을 한꺼번에 승인한 날이라 실행할 게 많았고, 사람은 자리를 떠야 했습니다. 그래서 남은 여섯 건을 맥미니 쪽 에이전트에게 넘기고 밤새 맡겨두기로 했습니다.
1. 제일 공들이는 칸이 바뀌었다
일을 시작하기 전에 계약을 쓰고 끝나면 영수증을 받는 방식은 원래 쓰고 있었습니다. 다만 그건 제가 옆에 앉아 있을 때 쓰던 양식입니다. 애매하면 제가 물어보면 되니까요. 이번엔 물어볼 사람이 없는 게 조건이라, 칸을 네 개로 줄였습니다.
칸
내용
금지
외부 발송 금지 · 파일 삭제 금지
범위
손대도 되는 파일을 이름으로 명시
완료 기준
예/아니오로 판정되는 조건 목록
보고 의무
끝나면 — 실패해도 — 결과 보고서 파일을 정해진 자리에 쓴다
평소 계약서에서 제가 제일 공들이는 칸은 완료 기준입니다. "뭘 하면 이 일이 끝난 건가"를 애매하지 않게 적는 게 제일 어렵고 제일 중요했습니다.
이번엔 아니었습니다. 20분의 대부분이 범위 칸에 들어갔습니다. 애매한 게 나와도 물어볼 데가 없으니, 무엇을 할지보다 어디까지 손대도 되는지를 먼저 못 박아야 했습니다.
2. 어디까지 손대도 되나를 네 등급으로 나눴다
평소엔 "뭘 할 건지"를 적는 칸이었는데, 이번에는 권한 등급이 됐습니다. 여섯 장이 이렇게 갈렸습니다.
등급
장수
허용 범위
아무것도 안 건드림
2
읽고 보고서만 쓴다. 기존 파일 수정·삭제 전면 금지
새로 만들기만
2
새 파일은 만들어도 되지만 기존 파일은 하나도 못 고친다
한 파일만 고치기
1
이름을 지정한 파일 하나만. 고치기 전에 백업 먼저
고치지 말고 적어두기
1
살아 있는 운영 코드는 손대지 말고, 고칠 내용을 별도 파일로 만들어만 둔다
제일 고민한 건 마지막 등급입니다. 이미 승인해 둔 작업이라 그냥 고치게 해도 됐거든요. 그래도 미뤘습니다. 밤새 무인으로 도는 프로그램이 운영 코드를 직접 건드리면, 아침에 잘못을 발견해도 그게 언제 어디서 들어간 변경인지 되짚어야 합니다. 수정안 파일로 받으면 아침에 제가 읽고 나서 넣습니다.
등급을 가른 기준은 "이 작업이 승인됐나"가 아니었습니다. "아침에 되짚을 수 있나"였습니다.
3. 완료 판정을 사람 손에서 떼어냈다
맥미니에는 지시서를 한 장씩 에이전트에게 먹이는 실행기를 올렸습니다. 여기서 규칙 하나를 박았습니다. 완료 판정은 프로그램의 정상 종료 신호가 아니라, 결과 보고서 파일이 실제로 존재하는가로 한다.
예전에 데인 적이 있어서입니다. 밤새 돌던 작업이 "전부 완료"라고 보고했는데, 실은 사용량 한도에 걸려 아무것도 안 한 채 완료 딱지만 붙은 사고였습니다. 프로그램이 얌전히 끝났다는 것과 일이 됐다는 것은 다른 얘기입니다.
전에도 이 구분은 있었지만 마지막 판정은 제가 했습니다. 아침에 보고를 읽고 "이건 진짜 됐나" 하고 열어보는 식이었죠. 이번엔 그 사람이 없는 채로 밤이 지나가야 해서, 판정을 실행기에 옮겼습니다. 보고서 파일이 없으면 실행기가 그 작업을 "결과 없음"으로 남기고 다음 장으로 넘어갑니다. 판정을 미뤄두면 아침에 여섯 장을 처음부터 다시 심문해야 합니다.
4. 다음 날 아침, 영수증 여섯 장
돌아와서 결과 폴더를 열었습니다. 여섯 건 전부 결과 보고서가 있었습니다.
그중 한 줄에 눈이 멈췄습니다. 요지는 이렇습니다.
"검사 과정에서 임시 파일이 하나 생겼는데, '파일 삭제 금지' 규칙 때문에 지우지 못했습니다. 완 료 기준의 '신규 파일 2개만'은 실패로 기록합니다."
새로 만들기만 등급을 받은 작업이었습니다. 새 파일은 만들어도 되지만 개수를 둘로 못 박아 뒀는데, 검사를 돌리는 과정에서 임시 파일이 하나 더 생겼습니다. 지우면 개수는 맞지만 금지 조항을 어깁니다. 안 지우면 개수가 안 맞습니다.
규칙 두 개가 충돌하자, 에이전트는 한쪽을 몰래 어기는 대신 실패라고 적어 놓았습니다. 여섯 장 중 이 한 건만 스스로 완료 기준 미달로 표시돼 있었습니다.
무엇이 달라졌나
전
후
자리를 비우면
작업 중단, 다음 세션에서 재개
계약서만 쓰면 부재 중 진행
계약서의 무게중심
완료 기준 ("뭘 하면 끝인가")
범위 ("어디까지 손대도 되나")
권한
작업 단위로 승인, 범위는 그때그때
되짚을 수 있는 정도에 따라 네 등급
완료 판정
아침에 사람이 열어보고 판정
실행기가 그 자리에서 판정, 사람은 열람만
남은 숙제도 하나 생겼습니다. 계약서의 금지 조항들은 전부 말이었습니다. 이번엔 잘 지켜졌지만, 그건 지킨 것이지 못 어긴 게 아닙니다. 다음 실험은 금지를 말이 아니라 감시 코드로 옮기는 쪽입니다.
배운 점
사람이 옆에 없으면 계약서에서 제일 중요한 칸이 바뀐다. 평소 제일 공들이는 칸은 "뭘 하면 성공인가"였습니다. 무인으로 넘길 때는 범위 칸이었습니다. 애매할 때 물어볼 데가 없으면, 무엇을 할지보다 어디까지 손댈 수 있는지가 사고를 가릅니다.
권한 등급을 가르는 기준은 "승인됐나"가 아니라 "되짚을 수 있나"다. 전부 읽기 전용이면 일을 못 하고, 전부 열어주면 무인 상태에서 사고가 납니다. 승 인된 작업이어도 되짚기 어려운 자리는 수정안만 받았습니다.
규칙끼리 부딪히면 무슨 일이 벌어지는지는 미리 안 알아진다. 금지 조항 하나와 완료 기준 하나가 충돌할 줄은 저도 몰랐고, 여섯 장 중 한 장에서만 일어났습니다. 무인 위임에서 값나가는 건 "다 됐다"는 보고가 아니라 에이전트가 자기 실패를 적어둔 한 줄이었습니다. 그게 없으면 저는 그 충돌을 영영 모릅니다.
한 줄 요약: 사람 없이 일을 맡길 때 계약서에서 제일 중요한 칸은 "뭘 할지"가 아니라 "어디까지 손대도 되나"였다.