Observe, orient, decide, act
군대 쪽에서는 OODA라고 부르고, 소프트웨어 쪽에서는 control loop라고 부르고, agent 쪽에서는 ReAct라고 부르는 경우가 많아. 이름은 달라도 구조는 같아. 현재 상황을 읽고, 목표에 비춰 해석하고, 행동을 고르고, 실행하고, 결과를 다시 본다.
에이전트 품질은 바로 이 루프에 박혀 있어. 나쁜 에이전트는 모형이 영어를 까먹어서 망하는 게 아니야. 관찰값이 애매하고, tool error를 숨기고, iteration limit이 없고, 진전과 삽질을 구분하지 못해서 망한다.
종료 조건은 설계의 1급 시민
모든 루프에는 탈출구가 있어야 해. 보통 final answer, 최대 반복 횟수, 비용 제한, wall-clock timeout, 반복 에러 threshold, 사람의 interrupt, context budget 압박 같은 조건이 들어간다.
run이 왜 멈추는지 설명할 수 없다면 배포하면 안 돼. 무한 자율성은 지능이 아니라 청구서 사고야. 하얀 가운 입었다고 과학이 되는 거 아니거든.
관찰값은 쓸모 있어야 한다
도구 결과를 40KB JSON dump로 context에 던지면 안 돼. 다음 결정을 위해 필요한 것만 줘야 해. 무슨 일이 있었는지, 성공했는지, 무엇이 바뀌었는지, 다음에 가능한 행동이 뭔지.