AIFreeAPI Logo

Codex 원격 압축 오류: 재시도 전에 전체 메시지를 읽어야 한다

A
4 min readOpenAI Codex

앞부분은 압축 단계가 실패했다는 뜻일 뿐입니다. 실제 원인과 다음 행동은 콜론 뒤 suffix, 인증/provider 경로, 마지막 완료 작업으로 좁혀야 합니다.

긴 Codex 세션 압축 실패 뒤 작업을 보존하고 한 경계만 검증하는 진단 워크스페이스

Error running remote compact task는 Codex가 긴 대화를 더 작은 연속 상태로 압축하는 과정에서 완료하지 못했다는 뜻이다. 이 문장만으로 OpenAI 장애, 네트워크 문제, 계정 한도라고 결론 내릴 수 없다. stream 연결 종료, request timeout, provider가 compact route를 지원하지 않는 경우, 호환되지 않는 parameter, context 초과, Request blocked, 응답 parsing, 종료되지 않은 child process가 모두 같은 wrapper 뒤에 붙을 수 있다.

먼저 .codex를 지우거나 로그아웃하고 모델·네트워크·provider를 한꺼번에 바꾸지 말자. 전체 오류, Codex 버전과 surface, 시간대가 포함된 시각, 로그인 방식, 마지막 완료 작업을 기록한다. Git diff와 untracked file, 실행 중인 process, remote job도 확인한다. 압축 실패는 직전의 파일 쓰기나 외부 작업이 취소됐다는 증거가 아니다. 쓰기를 반복하기 전에 일부라도 완료됐는지 확인해야 한다.

짧은 재시도가 맞는 경우와 아닌 경우

일시적 수요 증가나 한 번의 request timed out 뒤에는 잠시 기다렸다가 같은 경로로 한 번 재시도해 볼 수 있다. 계정, 모델, 프로젝트, 네트워크를 그대로 유지해야 그 결과를 비교할 수 있다. 여러 task를 동시에 복제하면 어떤 task가 파일이나 원격 서비스에 썼는지 알기 어려워진다.

반면 아래 suffix는 기다리는 것보다 해당 경계를 직접 확인해야 한다.

suffix 또는 응답 단서의미할 수 있는 경계먼저 할 작은 확인
stream disconnected before completion, stream closed before response.completedCodex host와 서비스 사이의 streaming transport, proxy/VPN, remote host, client build원래 session을 같은 조건으로 한 번 resume하고 마지막 event를 비교
404 Not Found실제 base URL에 compact endpoint가 없거나 client-provider 계약이 다름사용 중인 provider와 base URL을 확인하고 compaction 지원을 별도로 검증
Unknown parameter, service_tier, variant, output shape모델/parameter 호환성 또는 proxy의 request·response 변환모델을 고정하고 전체 response body를 보존한 채 최소 route를 시험
input exceeds ... context window, ran out of room압축할 history 자체가 맞지 않거나 선택 모델의 context 조건이 다름완료 작업, 결정, 변경 파일, 검증, 위험, 다음 행동만 handoff로 작성
Request blockedtransport가 아니라 현재 compaction input이 거절됨필요한 내용만 남긴 최소 재현을 만들고 동일 입력의 반복을 중단
timeout waiting for child process to exitlocal 또는 remote process가 종료되지 않음watcher, dev server, stdin 대기, child tree, 열린 handle을 확인

UI에 wrapper만 보인다면 자동 압축 중이었는지 /compact 실행 중이었는지, session/request ID가 있는지까지 기록한다. “여러 번 실패했다”보다 정확한 suffix와 마지막 정상 event 하나가 더 유용하다.

remote compact task 오류의 suffix에서 원인 경계와 안전한 복구 행동을 고르는 진단표
remote compact task 오류의 suffix에서 원인 경계와 안전한 복구 행동을 고르는 진단표

실제로 어느 경로가 압축을 수행하는가

OpenAI의 Compact a response API는 공개 Responses API의 POST /responses/compact를 설명한다. 모델 compaction 지침은 결과를 다음 요청에 넘기는 opaque state로 다루며 내부 형식에 의존하지 말라고 안내한다.

그렇다고 모든 Codex 접근 경로가 같아지는 것은 아니다. ChatGPT 로그인 session은 Codex client와 해당 ChatGPT service route를 사용한다. OpenAI API key 직접 사용은 project, model, endpoint 조건을 따른다. custom provider는 일반 /responses만 구현하고 /responses/compact, parameter 또는 stream event shape는 빠뜨릴 수 있다. Desktop App, terminal, container, WSL, Remote SSH는 서로 다른 DNS, proxy, certificate, 환경 변수를 가질 수 있다. 브라우저에서 ChatGPT가 열리는 것과 Codex process가 compaction을 끝내는 것은 별도 증거다.

원래 session을 보존한 채 한 조건만 바꾼다

OpenAI의 Codex 개발자 명령 문서/status, /compact, codex resume, codex exec resume, codex doctor, /feedback을 각각 다른 목적으로 제공한다. 설치된 build에 실제로 표시되는 명령을 기준으로 다음 순서를 따른다.

  1. 파일 변경, 활성 process, remote job, 이미 발생했을 수 있는 write를 기록한다.
  2. 전체 오류, 버전/surface, 인증/provider 경로, session ID를 저장한다.
  3. 일회성 stream/timeout으로 보일 때만 같은 조건으로 원래 session을 한 번 resume한다.
  4. 404, parameter, parser, child process처럼 경계가 명확하면 그것 하나만 수정한다.
  5. read-only 또는 쉽게 되돌릴 수 있는 행동으로 확인한 뒤 원래 작업을 계속한다.

resume하자마자 실패한 자동 압축으로 다시 들어간다면 loop를 멈춘다. 목표, 완료된 작업, 결정, 변경 파일, 실행한 검증, 미해결 위험, 다음 한 단계만 짧게 정리해 fork 또는 새 session으로 옮긴다. 대화 일부를 포기하더라도 task 상태는 지킬 수 있다. 다만 resume이 외부 write의 중복 실행을 안전하게 만드는 것은 아니다.

cache 삭제와 모델 변경이 첫 진단이 아닌 이유

cache나 .codex 전체 삭제는 손상된 상태뿐 아니라 session locator, config, 증거도 함께 없앨 수 있다. 특정 local object 손상 근거가 있을 때 backup 후 범위를 좁혀야 한다. 모델 변경은 능력, context, 때로는 provider route까지 동시에 바꾸므로 성공해도 원인을 분리하지 못한다. timeout을 늘리는 방법은 같은 작업이 조금 늦게 정상 완료된다는 증거가 있을 때만 유효하다. 404, 잘못된 parameter, policy block, crash, deadlock에는 효과가 없다.

전체 오류가 HTTP 429나 사용량 window를 가리키면 Codex rate limit 진단을 사용한다. 압축 단계가 맞는지 모르면 Codex timeout 경계 안내에서 마지막 진행 지점을 찾는다. 명령 network, proxy, provider, config 우선순위로 좁혀지면 Codex sandbox와 config.toml로 이동한다.

반복 실패를 보고할 때는 Codex 버전/surface, OS, 인증 유형, secret을 제거한 provider/base URL, 전체 오류와 시각, session/request ID, 마지막 완료 작업, 자동/수동 압축 여부, 최소 재현, 필요한 log 일부만 포함한다. token, email, private prompt, source code, project 식별자는 공유하지 않는다.

반복되는 compact 실패를 지원에 전달하기 전에 작성하는 빈 최소 기록 양식
반복되는 compact 실패를 지원에 전달하기 전에 작성하는 빈 최소 기록 양식

복구의 기준은 재시도 횟수가 아니다. suffix가 가리키는 경계를 하나 선택하고, 되돌릴 수 있는 다음 행동으로 확인하는 것이다. 기존 작업을 먼저 지켜야 다음 시도가 진행과 증거를 동시에 남긴다.