-
컨텍스트 엔지니어링 및 메모리(Context engineering & memory): 컨텍스트 윈도우에 무엇이 들어가고, 무엇이 요약되며, 나중에 무엇이 검색되는지를 알아야 합니다. 그렇지 않으면 에이전트는 매 루프마다 같은 파일을 다시 읽거나, 스무 번 전의 제약 조건을 잊어버릴 수 있습니다.
-
도구 설계 및 스키마(Tool design & schemas): 모호한 자유 텍스트를 반환하는 도구는 에이전트가 즉흥적으로 행동할 여지를 남깁니다. 엄격한 스키마와 유효성 검사는 잘못된 출력을 조용히 통과시키는 대신 실패를 눈에 보이게 만듭니다.
-
권한 및 자격 증명(Permissions & credentials): 이들은 모델 외부에서 강제해야 합니다. 프롬프트는 '프로덕션에 쓰지 마라'고 지시할 뿐입니다. 토큰을 붙잡아 두는 것은 프롬프트가 아닙니다.
-
재시도, 백오프, 반복 제한 및 예산(Retries, backoff, iteration limits & budgets): 부작용이 있는 호출을 재시도하는 것은 해당 작업을 반복할 수 있습니다. 반복 제한이 없으면 에이전트는 예산이 소진될 때까지 루프를 돌게 됩니다.
-
Idempotency 및 내구성 실행(Idempotency & durable execution): 요청은 시간 초과되었지만, 쓰기 작업은 어쨌든 완료되었습니다. 재시도는 두 번째 기록을 만듭니다. 재시도, 체크포인트, 부분적으로 완료된 작업을 처리해야 합니다.
-
오케스트레이션 및 핸드오프(Orchestration & handoffs): 모든 핸드오프는 컨텍스트를 압축합니다. 작업자(worker)가 깔끔하게 잘못된 문제를 해결하는 동안, 오케스트레이터는 자신이 더 적게 알수록 자신감이 높아지는 역설에 처할 수 있습니다.
-
검증 및 완료 감지(Verification & completion detection): 에이전트는 스스로 끝났다고 판단할 것입니다. 실제로 결과가 달성되었는지 확인하려면 에이전트 외부의 무언가가 필요합니다.
-
회귀 테스트로서의 평가(Evals as regression tests): 만약 이미 이해하고 있는 실패 사례들로 테스트 스위트를 구축했다면, 아무도 예상하지 못한 첫 번째 실패가 발생할 때까지 초록색 상태를 유지할 것입니다.
-
관측 가능성 및 추적(Observability & traces): 어떤 도구가 호출되었는지, 어떤 인자(arguments)와 함께, 어떤 순서로, 얼마의 비용으로 사용되었는지를 알아야 합니다. 이것이 없으면 잘못된 결과를 디버깅하는 것은 추측에 불과합니다.
-
실패 복구 및 상태 재구성(Failure recovery & state reconstruction): 실행은 중간에 중단됩니다. 시스템이 무슨 일이 일어났는지 재구성할 수 없다면, 신뢰성 있게 재개할 수 없습니다.
-
샌드박스 및 격리 실행(Sandboxes & isolated execution): 에이전트에게 실제 시스템을 위험에 빠뜨리지 않고 실험하고, 코드를 실행하며, 변경 사항을 테스트할 장소를 제공해야 합니다.
-
추론 경제학(Inference economics) 및 지연 시간(latency): 모델 라우팅, 캐싱, 병렬 도구 호출, P95 레이턴시 및 TTFT. 작동은 하지만 비용이 너무 많이 들거나 완료하는 데 시간이 너무 오래 걸리는 에이전트는 프로덕션에 도달할 수 없다.
리포지토리 컨텍스트는 프로덕션 컨텍스트가 아니다. 이 목록의 대부분은 그 둘 사이의 격차를 의미한다.
이 모든 것이 모델을 더 똑똑하게 만드는 것은 아니다. 이는 모델의 실수를 저렴하고, 눈에 띄게 하며, 복구 가능하게 만든다.