헤매지 못하도록 과업의 범위를 정하기
자율 에이전트는 특정한 방식으로 실패한다. 표류한다. 한 가지를 요청했는데 "친절하게" 다른 셋을 리팩터링하고, 언급한 적 없는 파일을 건드리고, 읽을 수 없는 디프를 들고 돌아온다. 해법은 더 똑똑한 에이전트가 아니라 — 더 빡빡한 브리프다.
좋은 자율 과업은 네 부분으로 이루어진다: 명확한 목표, 명시적인 제약, 구체적인 완료 기준, 그리고 에이전트가 스스로 돌릴 수 있는 가드레일. 가드레일이 가장 중요한 부분인데, 그게 에이전트가 당신 모르게 넘을 수 없는 울타리이기 때문이다.
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.
세 가지가 이 브리프에서 헤매기 어렵게 만든다. 제약은 에이전트가 건드려도 되는 파일 주위에 벽을 친다. 완료 기준은 분위기가 아니라 누구나 돌릴 수 있는 명령이다. 그리고 마지막 단락은 허우적대는 대신 멈추고 묻도록 허가를 준다 — 에이전트가 20분 동안 계속 "고치다가" 트리를 처음보다 더 나쁘게 남겨두는 슬로모션 재앙을 막아주는 것이 바로 이것이다.
진짜 울타리는 테스트다. 자기 테스트를 돌릴 수 있는 에이전트는 빡빡하고 정직한 피드백 루프를 가지며 대체로 그 안에 머문다. 자기 일을 확인할 방법이 없는 에이전트는 망가진 것을 자신만만하게 건넨다. 이 장에서 한 가지 습관만 가져간다면: 에이전트에게 스스로 검증할 방법을 주고, 그것을 통과하는 것을 완료의 정의로 삼아라.