반복 업무를 자동화했다고 해도 매 단계에서 AI에게 다음 행동을 물으면 같은 순서를 계속 다시 만드는 셈이다. 북극성에서는 저장된 절차를 실행하는 루프와 새로운 판단이 필요한 상황을 나눴다. 이 글은 어떤 회차를 성공으로 세고 언제 다음 회차를 멈추는지 실제 코드를 중심으로 풀어 쓴다.

한 번 배운 절차와 이번에 바뀐 자료

같은 종류의 업무에서 대상과 입력 자료만 달라진다면 순서까지 매번 새로 만들 필요는 없다. 저장된 Recipe는 단계의 의미와 기대 결과를 담고, 이번 입력은 그 매개변수로 연결한다. 실행기는 정의와 코드 해시, 파일 선택을 확인한 뒤 같은 통로로 진행한다. 재사용의 단위는 모델의 예전 답변이 아니라 검증할 수 있는 실행 정의다.

이 구분을 해야 에이전트도 새로 판단할 곳을 알 수 있다. 사이트가 바뀌어 대상이 없거나 현재 요청이 기존 업무와 다르면 다시 살펴봐야 한다. 정상 회차가 진행되는 동안 같은 제목을 읽고 같은 버튼을 찾는 다음 행동을 모델이 계속 발명할 이유는 없었다. 반복의 책임을 코드에 남겼다.

repeatProgram이 실제로 확인하는 조건

반복 횟수와 간격은 RepeatOptions의 정수 범위로 검사한다. 각 회차에서 run을 기다리고 그 반환값의 verified가 참인지 확인한다. 확인되지 않으면 PROGRAM_ITERATION_NOT_VERIFIED로 멈추므로 다음 회차를 호출하지 않는다. 첫 회차 전에는 회차 간 대기를 넣지 않고 이후 회차 사이에만 간격을 적용한다.

각 성공 회차의 단계와 근거 수, 결과를 회차 번호와 함께 모은다. modelCalls도 반환된 실행 수치를 합산하며, 값이 없는 것을 곧바로 외부 대화의 비용 없음으로 해석하지 않는다. 정상 저장 경로의 내부 모델 수와 프로그램을 선택·고치는 외부 에이전트의 사용량을 나눠 설명해야 했다.

회차가 새로워도 대상은 임의로 바꾸지 않는다

반복마다 기존 프로젝트와 프로필, 정의가 유지되는지 호스트 검사를 통과해야 한다. ProgramRunner는 실행별 ID와 연결 자격을 만들고 같은 실행의 key·입력 지문을 대조한다. 동일 실행 안의 재호출과 의도한 새로운 회차를 구분하는 장치다. 같은 호출이 돌아왔다는 이유로 제출을 한 번 더 보내지 않는다.

여러 탭을 쓰는 절차라면 그 탭의 역할과 원래 대상도 정의에 남아 있어야 한다. 루프가 다음 회차를 시작했다고 현재 사람이 보고 있는 탭을 새 대상으로 쓰면 반복할수록 다른 자료를 건드릴 수 있다. 회차 수만큼 실행한다는 요구와 같은 업무 범위를 지킨다는 요구는 함께 검증해야 한다.

루프를 빠져나왔다는 것만으로 성공하지 않는다

Python 프로세스가 종료 코드 0을 돌려줘도 실행기의 실제 결과가 없으면 검증되지 않은 종료다. ProgramRunner는 SDK 결과와 산출물 저장, 호스트 완료와 journal 기록을 함께 다룬다. 파일 복사나 결과 저장이 실패하면 성공 대신 확인이 필요한 상태로 남을 수 있다. 계산 루프와 운영 완료는 같은 함수의 한 줄로 합칠 수 없었다.

중간에 실패한 회차가 있다고 앞선 외부 효과가 사라지는 것은 아니다. runner가 남긴 회차와 단계의 기록을 읽고 어디까지 확인됐는지 판단해야 한다. repeatProgram의 반환값만으로 모든 실패 이력이 자동 보관된다고 쓰지 않는다. 루프와 영속 실행 기록의 책임을 구분해서 연결한다.

재시도와 반복을 같은 버튼으로 만들지 않는다

반복은 사용자가 의도한 여러 회차를 수행하는 일이다. 재시도는 실패나 불확실한 결과를 어떻게 다룰지 결정하는 일이다. 아직 확인하지 못한 게시를 새 회차라는 이름으로 다시 보내면 안 된다. 결과 불명이나 중지에서는 다음 회차를 멈추고 원래 실행을 확인하는 보호가 먼저다.

공유한 로컬 대기 모듈에는 시작 기능을 아예 넣지 않았다. 이 선택은 반복 실행기가 나쁘다는 뜻이 아니다. 새로운 회차를 시작할 책임을 알고 있는 실행기와 기존 회차의 상태만 읽을 책임을 나눈 것이다. 업무가 길어져도 어떤 동작이 새 제출을 만들 수 있는지 코드에서 찾기 쉽게 하려 했다.

어떤 수치까지 이 글의 근거인가

이 글은 현재 repeat와 runner 코드, 업무 노트북 기록을 대조했다. 원래 북극성에서 실제 콘텐츠를 반복 발행하는 새 시험은 하지 않았다. 따라서 이 루프 설명을 모든 사이트의 반복 성공률이나 전체 AI 비용 0으로 바꾸지 않는다. 정상 반복 경로에서 모델이 매 클릭을 결정하지 않는 구조를 설명한 것이다.

자기 회사의 반복 업무를 프로그램으로 만들 때도 회차 입력, 성공 조건, 중단 조건과 완료 기록을 먼저 적어 보면 좋다. 사용자는 몇 번 하라고 말하면 되지만 구현자는 횟수만큼 무엇이 달라지고 무엇이 유지돼야 하는지 알아야 한다. 나는 그 기준이 있어야 다음 에이전트도 이미 만든 프로그램을 믿을 근거를 찾을 수 있다고 생각했다.