
AI 코딩 Agent를 사용할 때 대부분의 작업은 짧다.
파일 하나 수정
→ 테스트
→ 완료
또는
Bug 분석
→ 코드 수정
→ PR
정도로 끝난다.
이런 작업은 Agent가 한 번 실행되는 동안 필요한 Context를 읽고 바로 끝내면 된다.
하지만 최근 Agent 모델은 그보다 훨씬 긴 작업을 겨냥하고 있다.
Repository 전체 Migration
대규모 Refactoring
며칠에 걸친 Research
수십 개 Issue 정리
여러 Module 동시 개선
Design → 구현 → 검증 반복
대규모 Test Failure 수정
이런 작업은 단순히 Prompt를 길게 쓴다고 해결되지 않는다.
작업 시간이 길어질수록 새로운 문제가 생긴다.
어디까지 했는가?
무엇이 실제로 완료됐는가?
중간에 실패하면 어디서 다시 시작할까?
이미 한 Tool 호출을 다시 실행하지 않을까?
Agent가 목표에서 벗어나지 않았는가?
예산이 얼마나 남았는가?
결과를 무엇으로 검증할까?
그래서 Long-Horizon Agent는 일반 Agent와 Runtime 구조 자체가 달라져야 한다.
최근 OpenAI는 Codex를 한 번의 Prompt를 넘어 장기 작업을 계속 이어가는 persistent workspace로 사용하는 패턴을 별도로 소개했고, Claude Fable 5 역시 공식적으로 며칠에 걸친 장시간 Agent 작업을 주요 사용처로 내세우고 있다.
이번 글에서는 Codex를 기준으로 긴 개발 작업을 어떻게 구성하고, Claude Fable 5 같은 Long-Horizon 모델과 어떤 공통 구조를 갖는지 정리한다.
단순히 실행 시간이 긴 Agent를 뜻하지 않는다.
예를 들어 Build가 40분 걸린다고 해서 무조건 Long-Horizon Agent는 아니다.
Long-Horizon Agent의 핵심은 여러 단계의 판단과 실행이 긴 시간 동안 이어진다는 것이다.
Goal
↓
조사
↓
Plan
↓
구현
↓
검증
↓
문제 발견
↓
계획 수정
↓
추가 구현
↓
재검증
↓
완료
이 과정이 수십 분에서 몇 시간, 경우에 따라 며칠까지 이어질 수 있다.
그래서 일반 Agent의
Prompt
→ Tool
→ Result
구조로는 부족하다.
가장 단순화하면 이렇게 볼 수 있다.
Goal
↓
Plan
↓
Step
↓
Checkpoint
↓
Step
↓
Artifact
↓
Checkpoint
↓
Verification
↓
Done
여기서 중요한 단어는 세 가지다.
Checkpoint
Artifact
Resume
이 세 가지가 없으면 Agent는 오래 실행될수록 불안정해진다.
다음과 같은 작업을 Codex에 맡겼다고 하자.
이 프로젝트를 Swift 6 strict concurrency에 맞게
전체 Migration해줘.
Agent가 작업을 시작한다.
1. Warning 조사
2. Actor isolation 문제 분류
3. Network Module 수정
4. Camera Module 수정
5. Test 수정
6. 전체 Build
그런데 4단계에서 Agent 실행이 중단됐다.
Checkpoint가 없다면 다시 시작한 Agent는 이런 상태다.
어디까지 했지?
Network는 끝났나?
Camera는 일부만 고쳤나?
테스트는 실행했나?
결국 Repository를 다시 조사한다.
시간과 Token을 다시 사용한다.
앞 글에서 Persisted Reasoning을 다뤘다.
Checkpoint와 Reasoning은 다르다.
Persisted Reasoning
→ 이전 판단을 이어가는 것
Checkpoint
→ 실제 작업이 어디까지 완료됐는지 저장
예를 들어
{
"taskId": "MIGRATION-2026-01",
"status": "running",
"completedSteps": [
"scan-concurrency-warnings",
"network-module"
],
"currentStep": "camera-module",
"remainingSteps": [
"tests",
"full-build"
]
}
이것이 Checkpoint다.
Agent 내부 reasoning이 없어도 Runtime이 현재 위치를 알 수 있다.
최근 Codex에는 Goal Mode가 들어왔다.
긴 작업에서는 단순 명령보다 완료 상태를 먼저 정의하는 것이 중요하다.
예를 들어
Swift 6 Migration해줘.
보다 다음이 낫다.
Goal:
프로젝트를 Swift 6 strict concurrency 기준으로
빌드 가능하게 만든다.
Success Criteria:
- concurrency warning 0
- compile error 0
- 기존 public API 유지
- 기존 unit test 실행
- 실행하지 않은 test는 passed라고 보고하지 않음
- 변경 파일 목록과 미해결 항목 보고
Agent가 긴 시간 작업해도 무엇을 향해 가는지가 명확하다.
큰 Goal 하나를 작은 Task로 나눈다.
Goal
Swift 6 Migration
↓
Task 1
Concurrency warning inventory
Task 2
Network module migration
Task 3
Camera module migration
Task 4
UI isolation fixes
Task 5
Test migration
Task 6
Final verification
Long-Horizon Agent에서 가장 위험한 형태는 이것이다.
큰 Goal 하나
↓
Agent가 알아서 끝날 때까지 작업
진행 상태를 검증하기 어렵다.
좋은 Step은 완료 여부를 확인할 수 있다.
나쁜 예:
Architecture 개선
완료 기준이 없다.
좋은 예:
Network module에서 Swift concurrency warning을 0으로 만든다.
검증:
xcodebuild 실행 결과 warning 0
또는
Auth module 테스트를 수정한다.
검증:
AuthTests 실행 성공
즉
Step
+
Verification
을 하나의 단위로 보는 편이 좋다.
처음 계획이 항상 맞지는 않는다.
예를 들어
Plan
1. Network
2. Camera
3. UI
로 시작했다.
Camera Module을 조사했더니 실제 문제의 중심이 Shared Core에 있었다.
기존 계획을 그대로 밀어붙이면 좋지 않다.
그래서 Plan은 Version을 가진다.
{
"planVersion": 3,
"steps": [
"shared-core",
"network",
"camera",
"ui"
]
}
변경 이유도 남긴다.
Plan v2 → v3
Reason:
Camera의 concurrency 문제 대부분이
SharedStateStore에서 시작되는 것을 확인.
Agent가 마음대로 Goal까지 바꾸면 안 된다.
구분한다.
Goal
→ 되도록 고정
Plan
→ 상황에 따라 수정 가능
Step
→ 실행 중 세부 조정 가능
예:
Goal
Swift 6 Migration 완료
는 유지한다.
하지만
Network부터 수정한다.
는 변경 가능하다.
장시간 Agent는 자연어 Conversation만 남기면 안 된다.
실제 결과를 파일로 남긴다.
예:
.artifacts/
├── migration-inventory.json
├── network-result.json
├── camera-result.json
├── test-result.json
├── final-diff.patch
└── final-report.md
각 Stage가 끝날 때 Artifact를 만든다.
Agent가
Network Module 수정 완료했습니다.
라고 말하는 것과
{
"module": "Network",
"modifiedFiles": [
"APIClient.swift",
"RequestExecutor.swift"
],
"build": {
"status": "passed"
}
}
를 남기는 것은 다르다.
후자는 Runtime과 사람이 검증할 수 있다.
Long-Horizon Agent는 말보다 Artifact를 중심으로 운영하는 편이 좋다.
예:
type StepResult = {
stepId: string;
status:
| "completed"
| "failed"
| "blocked";
modifiedFiles: string[];
artifacts: string[];
verification: {
command?: string;
status:
| "passed"
| "failed"
| "not_run";
};
remainingIssues: string[];
};
Agent가 매 Step마다 이 구조를 남긴다.
장시간 Agent에서 특히 중요한 규칙이다.
Agent가
테스트도 문제없을 것입니다.
라고 판단하면 안 된다.
반드시 구분한다.
passed
failed
not_run
예:
{
"verification": {
"command": null,
"status": "not_run"
}
}
이 상태에서 Final Task는 완료되지 않는다.
작업이 중단됐다.
다시 실행할 때 Repository 전체를 처음부터 조사하지 않는다.
먼저 읽는다.
Goal
Current Plan
Checkpoint
Artifacts
Current Git Diff
구조는
Resume
↓
Checkpoint Load
↓
Repository 현재 상태 비교
↓
Artifacts 확인
↓
다음 Step 결정
↓
계속 실행
이 된다.
Checkpoint가 있다고 무조건 믿으면 안 된다.
왜냐하면 Agent가 멈춘 사이 사람이 Repository를 수정했을 수 있다.
예를 들어
Checkpoint SHA
abc123
인데 현재 Repository는
Current SHA
def991
일 수 있다.
그러면 이전 Plan이 유효한지 확인해야 한다.
{
"checkpointId": "cp-18",
"baseRevision": "abc123",
"currentStep": "camera-migration"
}
Resume 시
현재 SHA == baseRevision
→ 정상 Resume
현재 SHA != baseRevision
→ 변경 범위 확인
한다.
큰 변경이면 Plan을 다시 평가한다.
중요 파일은 Hash를 저장한다.
{
"files": {
"Sources/Camera/FramePublisher.swift": "sha256:..."
}
}
Resume할 때 파일이 달라졌다면
STALE_CHECKPOINT
로 판단할 수 있다.
같은 Task를 Agent 두 개가 동시에 Resume하면 문제가 된다.
예:
Agent A
Task 142 Resume
동시에
Agent B
Task 142 Resume
둘 다 같은 파일을 수정한다.
그래서 Task에 Lease를 둔다.
{
"taskId": "PAP-142",
"leaseOwner": "agent-run-98",
"leaseExpiresAt": 1785504000
}
Task를 실행 중인 Agent만 Lease를 가진다.
Agent가 정상 실행 중이면 주기적으로 갱신한다.
Agent
↓
Heartbeat
↓
Lease Extend
Agent가 Crash하면 Heartbeat가 끊긴다.
일정 시간이 지나면 Lease가 만료된다.
다른 Agent가 Resume할 수 있다.
앞서 Paperclip 글에서 Agent가 항상 실행되는 Process가 아니라
idle
↓
Heartbeat
↓
작업
↓
idle
형태로 움직인다고 다뤘다.
Long-Horizon Runtime에서도 Heartbeat는 중요하다.
다만 여기서는
Agent가 살아 있는가?
Lease를 계속 유지해야 하는가?
현재 Step이 진행 중인가?
를 확인하는 용도로 볼 수 있다.
장시간 작업이라고 Timeout을 없애면 안 된다.
다음처럼 나눈다.
Tool Timeout
Step Timeout
Agent Run Timeout
Task Timeout
예:
timeouts:
tool: 60
step: 1800
run: 7200
task: 86400
단위는 서비스 상황에 맞게 설정한다.
예를 들어
xcodebuild
가 멈췄다.
Task 전체를 실패시킬 필요는 없다.
Tool Timeout
↓
Step Retry 또는 Blocked
가 될 수 있다.
반대로 전체 Task가 하루를 넘기면
Task Deadline
을 확인해야 한다.
Root Task Deadline이
오늘 18:00
이라면 Subtask가
19:00까지 실행
되면 안 된다.
그래서 Worker에게 남은 시간을 전달한다.
{
"deadline": "2026-07-31T18:00:00+09:00",
"remainingSeconds": 6200
}
Subagent까지 Deadline이 전파되어야 한다.
Long-Horizon Agent는 비용 관리가 중요하다.
예:
Task Budget
$20
Agent가 $6을 사용했다.
remainingBudget
$14
를 다음 Step에 전달한다.
type AgentBudget = {
maxCostUsd: number;
maxModelCalls: number;
maxToolCalls: number;
maxSubagents: number;
maxWallTimeSeconds: number;
};
장시간 작업에서 Token 하나만 제한하는 것으로는 부족하다.
처음에는
Sol high
로 분석한다.
Budget이 부족해지면
Terra medium
으로 Worker를 낮출 수 있다.
앞에서 다룬 Model Router와 연결된다.
Remaining Budget
↓
Model Router
↓
Sol / Terra / Luna
대형 Migration이라면 하나의 Agent가 모든 것을 순차 처리하지 않는다.
Coordinator
├── Network Worker
├── Camera Worker
├── Auth Worker
└── Test Worker
병렬 처리한다.
하지만 여기서 중요한 것이 있다.
각 Worker도 자신의 Checkpoint를 가져야 한다.
구조는 이렇게 된다.
Root Task
checkpoint-root.json
├── Worker A
│ └── checkpoint-a.json
│
├── Worker B
│ └── checkpoint-b.json
│
└── Worker C
└── checkpoint-c.json
Coordinator는 각 Worker 상태를 본다.
A
completed
B
working
C
blocked
Root Task는 아직 완료되지 않는다.
예:
Worker A
Network Migration
→ completed
Worker B
Camera Migration
→ failed
Worker C
Test Update
→ completed
전체를 다시 실행하면 낭비다.
실패한 Worker만 Resume한다.
Camera Worker
checkpoint-b
↓
Resume
Agent에게
실패하면 다시 해.
라고만 하면 위험하다.
무한 반복 가능성이 있다.
Test 실패
↓
Retry
↓
Test 실패
↓
Retry
↓
...
횟수를 제한한다.
retry:
tool: 2
step: 1
worker: 1
Retry 가능한 오류:
Temporary Network Error
Rate Limit
Transient Tool Failure
Retry하면 안 되는 오류:
Compile Error
Invalid Schema
Permission Denied
Policy Denied
후자는 수정하거나 사람이 봐야 한다.
type AgentFailure = {
code:
| "TOOL_TIMEOUT"
| "RATE_LIMIT"
| "COMPILE_FAILED"
| "POLICY_DENIED"
| "BLOCKED";
retryable: boolean;
evidence?: string[];
suggestedNextAction?: string;
};
자연어 오류보다 Runtime이 처리하기 쉽다.
최근 Codex는 앱, IDE Extension, CLI 전반에 Goal Mode를 제공한다.
Long-Horizon 작업에서는 특히 잘 맞는다.
단순히
여기 고쳐줘.
가 아니라
Goal
이 Module을 Swift 6 strict concurrency 기준으로
완전히 Migration한다.
Success Criteria
- Build success
- concurrency warning 0
- 기존 public API 유지
- 관련 test 실행
처럼 결과 중심으로 작업을 줄 수 있다.
OpenAI가 최근 공개한 Long-running work 가이드의 핵심도 이 부분이다.
Codex를 한 번의 Prompt에 답하는 도구가 아니라
Goal
↓
진행
↓
중간 결과
↓
검토
↓
다시 진행
을 이어가는 작업 공간처럼 사용한다.
Conversation 자체보다
현재 Goal
현재 Plan
현재 Diff
현재 Artifact
현재 Verification
이 중요한 상태가 된다.
Codex Automations는 반복 작업을 Schedule로 실행할 수 있다.
예를 들어
매일 아침
어제 실패한 CI를 확인하고
열려 있는 Issue를 업데이트해.
같은 작업이다.
중요한 점은 일부 Automation이 같은 Conversation으로 돌아와 기존 Context를 이어갈 수 있다는 점이다.
장시간 업무의 연속성을 만드는 데 활용할 수 있다.
Local Automation은 Mac이 꺼져 있으면 실행할 수 없다.
실제 운영에서는
Laptop awake
Codex running
같은 조건을 고려해야 한다.
정말 Always-on Agent가 필요하면 Cloud 또는 Server Runtime이 더 적합할 수 있다.
예를 들어 iOS 프로젝트라면 다음 정도가 좋다.
Goal:
현재 프로젝트의 Swift 6 concurrency 문제를
점진적으로 수정한다.
먼저 전체 문제를 조사하고
Module 단위 작업 계획을 만들어.
각 Module 완료 시
- 변경 파일
- 해결한 문제
- 실행한 검증
- 남은 문제
를 Artifact로 남겨.
Module 하나가 끝날 때마다
Checkpoint를 갱신하고
다음 Module로 진행해.
공통 파일 수정은 마지막 Integration 단계에서만 해.
전체 작업이 끝나면
전체 Build와 관련 Test를 실행해.
실행하지 않은 Test는
Passed라고 보고하지 마.
이 Prompt의 핵심은
Goal
Plan
Artifact
Checkpoint
Verification
을 명시했다는 것이다.
간단한 개인 프로젝트라면 복잡한 Database가 없어도 된다.
.ai/
└── tasks/
└── swift6-migration/
├── goal.md
├── plan.json
├── checkpoint.json
├── decisions.md
└── artifacts/
예:
{
"version": 5,
"completed": [
"network",
"auth"
],
"working": "camera",
"remaining": [
"ui",
"tests",
"final-build"
]
}
다음 Codex Session에서도 이 파일부터 읽게 한다.
이 작업은 이전 Session에서 이어지는 작업이다.
먼저 다음 파일만 읽어.
- .ai/tasks/swift6-migration/goal.md
- plan.json
- checkpoint.json
- decisions.md
그다음 현재 Git diff와 HEAD를 확인해.
Checkpoint 내용과 현재 Repository 상태가 맞으면
current step부터 이어서 작업해.
Repository 상태가 달라졌다면
코드를 수정하지 말고 차이부터 보고해.
완료된 Step은 다시 실행하지 마.
상당히 실용적이다.
긴 작업에서는
왜 이렇게 바꿨지?
를 잊기 쉽다.
## Decision 014
CameraSession을 @MainActor로 올리지 않았다.
Reason:
Frame delivery가 Main Thread에 종속되면
Preview pipeline latency가 증가할 가능성이 있음.
Selected:
Frame state만 actor isolation 적용.
이런 식으로 남긴다.
다음 Agent도 같은 결정을 반복해서 고민하지 않는다.
Reasoning
→ 모델 내부 판단 연속성
Decision Log
→ 사람이 읽을 수 있는 확정된 결정 기록
중요한 Architecture 결정은 Decision Log에 남기는 편이 좋다.
Anthropic은 Fable 5를 가장 야심찬 long-running project용 모델로 소개한다.
공식 설명에서는 Agent Harness에서 Fable 5가
여러 Stage 계획
Subagent Delegation
자체 검증
장시간 작업
을 수행하며 며칠에 걸쳐 일할 수 있다고 설명한다.
예:
대규모 Migration
복잡한 Implementation
Multi-day Autonomous Session
이 대표적인 사용처다.
모델이 오래 작업할 수 있다는 것과 Runtime이 견고하다는 것은 별개의 문제다.
여전히 필요하다.
Checkpoint
Artifact
Task State
Budget
Timeout
Verification
Human Approval
좋은 모델이 Runtime 설계를 대체하지 않는다.
두 방향 모두 결국 같은 문제를 해결한다.
짧은 Prompt 응답
↓
장시간 목표 지향 작업
그래서 개발자 입장에서는 특정 모델 이름보다 구조를 알아두는 것이 중요하다.
Goal
Plan
Workstream
Checkpoint
Artifact
Resume
Verification
이 패턴은 모델이 바뀌어도 남는다.
완전 자동으로 모든 것을 맡길 필요는 없다.
좋은 Human Gate는 다음과 같다.
Goal 승인
↓
Plan 승인
↓
Agent 실행
↓
고위험 변경 승인
↓
Final Review
↓
Merge / Deploy
특히
Production Deploy
DB Migration
Signing
Secret
Payment
외부 API 계약 변경
같은 작업은 Agent가 오래 일한다고 해서 자동 승인할 이유가 없다.
반대로 모든 Step마다 승인받으면 Long-Horizon Agent의 장점이 사라진다.
파일 읽어도 될까요?
수정해도 될까요?
Test 돌릴까요?
다음 파일 볼까요?
가 된다.
Human Gate는 위험도 기준으로 둔다.
LOW
파일 읽기
Test
Local Build
자동 실행.
MEDIUM
코드 수정
Branch Commit
정책에 따라 자동.
HIGH
Dependency 추가
Schema Migration
공용 API 변경
Approval.
CRITICAL
Production Deploy
Secret 변경
삭제 작업
반드시 사람 승인.
Agent가
대충 끝난 것 같습니다.
라고 판단하게 하지 않는다.
Completion Gate를 만든다.
type CompletionGate = {
allRequiredStepsCompleted: boolean;
verificationPassed: boolean;
unresolvedCriticalIssues: number;
requiredArtifactsPresent: boolean;
};
모두 충족해야 Done이다.
Task 상태:
pending
running
blocked
failed
completed
blocked는 중요하다.
예:
Signing Certificate가 필요함
외부 API Credential 필요
사람의 Architecture 결정 필요
이건 실패가 아니다.
Agent가 할 수 있는 범위를 다 했지만 외부 입력이 필요한 상태다.
나쁜 예:
진행할 수 없습니다.
좋은 예:
{
"status": "blocked",
"reason": "SIGNING_REQUIRED",
"requiredInput": "Development Team ID",
"completedSteps": [
"code-migration",
"unit-tests"
],
"resumeFrom": "archive-build"
}
사람이 필요한 정보만 제공하고 다시 Resume할 수 있다.
장시간 Agent가 한 일을 전부 나열하면 읽기 어렵다.
Final Report는 요약한다.
Goal
Result
Changed Areas
Verification
Remaining Risks
Artifacts
Next Action
예:
# Migration Result
## Result
Completed
## Changed
- Network
- Auth
- Camera
## Verification
- Build: Passed
- Unit Tests: Passed
- UI Tests: Not Run
## Remaining
- Deprecated API 2건
이 정도가 좋다.
장시간 Agent에서 문제가 생겼을 때 알아야 한다.
어느 Step에서
어떤 Model이
어떤 Tool을
몇 번 호출했고
얼마나 걸렸는가
예:
{
"traceId": "trace-1902",
"taskId": "swift6-migration",
"stepId": "camera",
"durationSec": 921,
"toolCalls": 18,
"retries": 1
}
Trace
→ 시스템 운영용
Final Report
→ 개발자 검토용
둘은 목적이 다르다.
Long-Horizon Agent를 평가할 때 단순 최종 답변 품질만 보면 안 된다.
다음 항목을 본다.
Task Completion Rate
Time to Completion
Resume Success Rate
Repeated Work
Tool Retry Rate
Checkpoint Accuracy
Budget
Human Intervention Count
Regression Rate
특히
Resume 후 이미 완료한 작업을 다시 하지 않았는가?
는 중요한 지표다.
일부러 작업 중간에 Agent를 끊는다.
Step 1 완료
Step 2 완료
Step 3 진행 중
↓
Kill
다시 시작한다.
정상이라면
Step 3 확인
↓
필요한 부분부터 Resume
해야 한다.
잘못된 Agent는
Step 1부터 다시 시작
한다.
Agent를 멈춘 뒤 사람이 파일 하나를 바꾼다.
Resume시
Checkpoint와 Repository가 다름
을 감지하는지 테스트한다.
Long-Horizon Eval에는 이런 현실적인 상황이 필요하다.
개인 개발자라면 다음 정도부터 시작하면 충분하다.
goal.md
plan.json
checkpoint.json
artifacts/
decisions.md
그리고 Codex에
시작할 때 읽어라.
Step 끝나면 갱신해라.
Resume시 다시 확인해라.
라고 준다.
복잡한 Database나 Queue가 없어도 Long-Horizon 패턴을 상당 부분 사용할 수 있다.
폴더:
.ai/
└── long-tasks/
└── concurrency-migration/
├── goal.md
├── plan.json
├── checkpoint.json
├── decisions.md
└── artifacts/
goal.md
# Goal
Swift 6 strict concurrency migration.
## Success Criteria
- project builds
- concurrency warnings resolved
- public API preserved
- relevant tests executed
checkpoint.json
{
"status": "running",
"completed": [],
"current": "inventory",
"remaining": [
"network",
"camera",
"ui",
"tests",
"final-verification"
]
}
이 정도면 시작할 수 있다.
이 작업은 장시간 작업으로 진행해.
먼저
.ai/long-tasks/concurrency-migration/
폴더의
goal.md
plan.json
checkpoint.json
decisions.md
를 읽어.
Goal은 임의로 변경하지 마.
작업을 검증 가능한 Step으로 진행하고
각 Step이 끝날 때 checkpoint.json을 갱신해.
중요한 Architecture 판단은 decisions.md에 기록해.
각 Step 결과는 artifacts/에 구조화해서 저장해.
실행하지 않은 Test를 passed라고 보고하지 마.
Repository 상태가 checkpoint와 맞지 않으면
코드를 수정하기 전에 먼저 보고해.
전체 Success Criteria가 만족될 때만
completed로 변경해.
이 정도만으로도 일반적인
끝날 때까지 알아서 해줘.
보다 훨씬 안전하다.
큰 Migration에서는
Coordinator
├── Network
├── Auth
├── Camera
└── Test
로 나눈다.
각 Worker에게 별도 Artifact와 Checkpoint를 준다.
최종 Integration은 Coordinator만 담당한다.
Workers
↓
Artifacts
↓
Coordinator
↓
Integration
↓
Full Verification
한 번에 10시간 실행하지 않아도 된다.
예를 들어
매일 오전
Migration 진행 상태 확인
↓
다음 Module 하나 처리
↓
Checkpoint 갱신
처럼 여러 날에 나눌 수 있다.
Codex Automation이 같은 Conversation Context로 돌아올 수 있다는 점도 이런 Workflow에 활용할 수 있다.
Long-Horizon Agent를
24시간 계속 실행되는 Agent
라고만 생각하면 안 된다.
더 중요한 것은
중단
↓
상태 저장
↓
나중에 다시 시작
↓
정확한 위치에서 계속
할 수 있는가다.
실제 개발 작업에서는 이쪽이 훨씬 현실적이다.
정리하면 다음과 같다.
Goal이 명확하다.
Plan을 가지고 있다.
Step이 검증 가능하다.
Checkpoint가 있다.
Artifact를 남긴다.
Resume 가능하다.
Retry가 제한돼 있다.
Budget이 있다.
Timeout이 있다.
Human Gate가 있다.
Completion Gate가 있다.
Trace가 있다.
모델이 아무리 좋아도 이 구조가 없으면 장시간 작업은 쉽게 흔들린다.
최신 Coding Agent의 변화는
코드를 한 번 잘 생성한다.
에서 끝나지 않는다.
Codex와 Claude 모두 이제
큰 Goal을 받고
오래 작업하고
중간 결과를 남기고
다시 이어서 작업하고
스스로 검증하는
방향으로 가고 있다.
하지만 Long-Horizon Agent를 단순히
더 오래 생각하는 모델
로 보면 중요한 부분을 놓친다.
실제로 필요한 것은 Runtime 구조다.
Goal
↓
Plan
↓
Step
↓
Checkpoint
↓
Artifact
↓
Resume
↓
Verification
↓
Done
그리고 작업이 커지면
Coordinator
↓
Parallel Workers
↓
Worker Checkpoints
↓
Artifacts
↓
Integration
↓
Final Verification
으로 확장한다.
한 줄로 정리하면 이렇다.
Long-Horizon Agent의 핵심은
오래 실행하는 것이 아니라,
중간에 멈춰도
어디까지 했는지 알고
정확하게 다시 이어갈 수 있게 만드는 것이다.
앞으로 Coding Agent가 몇 시간, 며칠짜리 작업을 맡게 될수록 개발자가 설계해야 하는 것은 Prompt보다 점점
Checkpoint, Artifact, Resume, Budget, Verification 같은 Agent Runtime의 운영 구조가 될 가능성이 크다.
OpenAI — Codex-maxxing for long-running work
Codex를 단발 Prompt가 아니라 장기 프로젝트를 이어가는 persistent workspace로 사용하는 방법과, 큰 목표를 검증 가능한 단계로 분해하는 운영 방식을 설명하는 공식 자료.
OpenAI — Codex
Codex의 Worktree, Cloud Environment, Multi-Agent Workflow, Background/Recurring 작업 등 실제 Coding Agent 운영 방향을 확인할 수 있는 공식 페이지.
OpenAI — Codex Goal Mode
결과와 Success Criteria를 먼저 정의하고 Codex가 장시간 목표를 향해 작업하도록 만드는 Goal Mode 관련 공식 업데이트.
OpenAI — Codex Automations
반복 작업을 Schedule로 실행하고, 일부 Automation이 기존 Conversation Context를 이어받아 지속적인 작업을 수행하는 방법을 설명하는 공식 자료.
Anthropic — Claude Fable 5
Claude Fable 5가 multi-stage planning, subagent delegation, self-verification을 포함한 며칠 단위 Long-Horizon Agent 작업을 주요 사용처로 두고 있음을 확인할 수 있는 공식 자료.
최근 OpenAI는 Codex를 단발성 코드 생성 도구보다 복잡한 Workflow를 장기간 유지하는 작업 공간으로 사용하는 패턴을 별도로 소개하고 있다.
Codex의 Goal Mode는 앱, IDE Extension, CLI에서 사용할 수 있으며, 결과와 Success Criteria를 중심으로 Agent가 작업을 지속하도록 하는 데 적합하다.
Codex Automations는 반복 작업을 Schedule로 실행할 수 있고 일부 작업은 기존 Conversation Context를 이어서 수행할 수 있다. 단, 로컬 실행에서는 Mac이 깨어 있고 Codex가 실행 중이어야 하는 등의 운영 조건을 고려해야 한다.
Anthropic 역시 Fable 5를 장시간 비동기 작업과 며칠짜리 Coding Project에 적합한 모델로 설명하며, Agent Harness에서 planning, subagent delegation, self-verification을 장시간 이어가는 것을 주요 특징으로 제시하고 있다.
따라서 Long-Horizon Agent의 핵심은 모델이 오래 추론할 수 있다는 사실 하나가 아니라 Goal·Checkpoint·Artifact·Resume·Verification을 Runtime 수준에서 분리해 관리하는 것이다.