헤매지 못하도록 과업의 범위를 정하기
자율 에이전트는 특정한 방식으로 실패한다. 표류한다. 한 가지를 요청했는데 "친절하게" 다른 셋을 리팩터링하고, 언급한 적 없는 파일을 건드리고, 읽을 수 없는 디프를 들고 돌아온다. 해법은 더 똑똑한 에이전트가 아니라 — 더 빡빡한 브리프다.
좋은 자율 과업은 네 부분으로 이루어진다: 명확한 목표, 명시적인 제약, 구체적인 완료 기준, 그리고 에이전트가 스스로 돌릴 수 있는 가드레일. 가드레일이 가장 중요한 부분인데, 그게 에이전트가 당신 모르게 넘을 수 없는 울타리이기 때문이다.
Goal: Make the failing tests in tests/checkout/ pass.
Constraints:
- Only edit files under src/checkout/. Do not touch src/auth/,
the database schema, or anything in config/.
- Do not add new dependencies.
- Do not change the tests themselves — the tests define correct behavior.
Done when:
- `npm test tests/checkout/` is fully green.
- `npm run typecheck` passes.
- `git diff --stat` shows changes only under src/checkout/.
If you get stuck after two real attempts, stop and report what you
tried and what's still failing. Don't paper over a failure to make
the suite go green.
이 브리프가 효과적인 것은 에이전트를 가둬놓기 때문이다: 제약이 건드려도 되는 것에 벽을 치고, 완료 기준은 에이전트가 돌릴 수 있는 명령이며, 검증 루프가 그것을 정직하게 유지한다:
┌───────────────────────── 범위 울타리 ─────────────────────────┐
│ 편집 가능: src/checkout/ │
│ ✗ 금지: src/auth/ · db 스키마 · config/ · 테스트 │
│ │
│ ┌─────────┐ 편집 ┌──────────────┐ │
│ │ 에이전트│──────────▶│ src/checkout/ │ │
│ │ │◀──────────┤ │ │
│ └────┬────┘테스트 실행└──────────────┘ │
│ │ │
│ ▼ npm test + typecheck │
│ ┌─────────────┐ green ──▶ 완료 │
│ │ 검증 루프 │ red ──▶ 재시도 (최대 2) │
│ └─────────────┘ stuck ──▶ 중단 & 보고 ─┼─▶ 당신
└───────────────────────────────────────────────────────────────┘
세 가지가 이 브리프에서 헤매기 어렵게 만든다. 제약은 에이전트가 건드려도 되는 파일 주위에 벽을 친다. 완료 기준은 분위기가 아니라 누구나 돌릴 수 있는 명령이다. 그리고 마지막 단락은 허우적대는 대신 멈추고 묻도록 허가를 준다 — 에이전트가 20분 동안 계속 "고치다가" 트리를 처음보다 더 나쁘게 남겨두는 슬로모션 재앙을 막아주는 것이 바로 이것이다.
진짜 울타리는 테스트다. 자기 테스트를 돌릴 수 있는 에이전트는 빡빡하고 정직한 피드백 루프를 가지며 대체로 그 안에 머문다. 자기 일을 확인할 방법이 없는 에이전트는 망가진 것을 자신만만하게 건넨다. 이 장에서 한 가지 습관만 가져간다면: 에이전트에게 스스로 검증할 방법을 주고, 그것을 통과하는 것을 완료의 정의로 삼아라.