10월 7일 수요일
에이전트 시스템의 성능은 생성 모델 하나가 아니라 운영 신호를 검증 가능한 피드백으로 바꾸는 계층, 코드 변경을 제한하고 감사하는 하네스, 추론과 실행 환경의 자원 정책이 함께 결정한다.
관측에서 보상까지, 에이전트 품질 루프의 신뢰 경계
운영 trace를 모으는 것만으로는 부족하다. 알려진 실패를 재는 score와 미지의 패턴을 찾는 topic, 실제 상태를 확인하는 verifier가 서로 다른 책임을 맡아야 한다.

운영 로그를 다음 배포의 품질 신호로 쓰려면 무엇을 기록하고, 무엇을 의심해야 하는가?
에이전트 품질 루프의 출발점은 최종 답변이 아니라 도구 호출, 입력과 출력, 중간 판단을 포함한 전체 trace다. 그러나 trace가 많다는 사실은 곧 관측 가능성을 뜻하지 않는다. 이미 알고 있는 실패는 코드 기반 score나 LLM judge로 좁혀 보고, 아직 분류하지 못한 사용자 의도와 조용한 실패는 전처리, facet, 요약, embedding, topic map을 거쳐 발견해야 한다. 여기서 얻은 대표 사례를 dataset과 offline eval로 되돌리면 production이 development를 갱신하는 순환이 생긴다. 문제는 그 순환의 보상 신호 자체도 틀릴 수 있다는 점이다. 유창한 에이전트의 자기 보고를 판사가 그대로 믿으면 실제 환경에서는 실패했는데 성공으로 세고, 그 오류가 평가·학습 데이터·강화학습 보상까지 전파된다. 따라서 관측 계층은 실패 후보를 찾는 역할과 성공 여부를 증명하는 역할을 분리해야 한다.
- 01
수집보다 먼저 정할 계측 경계
trace 일부가 빠지면 그 구간은 블랙박스가 된다. 루트 응답뿐 아니라 어떤 도구가 어떤 순서와 입력으로 호출됐는지, 중간 span과 결과가 무엇이었는지를 남겨야 한다. offline score는 배포 전 회귀를, online score는 실제 traffic의 알려진 실패를 측정한다. score는 한 번 켜 두는 설정이 아니라 에이전트와 함께 계속 보정해야 하며, 새 시스템에서는 높은 sampling으로 신호를 확보한 뒤 정보량과 비용에 따라 낮추는 정책이 필요하다.
- 02
미지의 실패를 평가 항목으로 승격하는 경로
Topics는 score가 미리 이름 붙이지 못한 사용자 의도, 감정, 기능 요구, silent failure를 찾는다. 운영 trace를 작은 표현으로 줄이고 facet과 embedding으로 묶은 뒤, 반복되는 record lookup failure 같은 사례를 새 score와 dataset으로 승격한다. 이때 자동 분석이 바로 코드 변경으로 뛰어들어서는 안 된다. SQL로 대표 trace를 좁히고 eval에서 변경 전후와 regression을 비교한 뒤, 사람이 PR의 근거와 영향을 검토해야 관측이 대시보드 소비로 끝나지 않는다.
- 03
판정기를 다시 판정하는 증거 설계
웹 에이전트 검증에서는 작업에서 직접 파생한 겹치지 않는 루브릭을 만들고, 기준마다 관련 화면 증거를 골라 에이전트의 주장과 실제 상태를 대조해야 한다. 과정 점수와 최종 결과를 분리하면 품절이나 로그인 벽처럼 통제 불가능한 차단은 과정에서 인정하면서도 목표 미달을 성공으로 꾸미지 않는다. 앞 단계 오류를 뒤 단계의 정확한 수행까지 연쇄 감점하지 않는 것도 보상 신호의 정밀도를 지킨다. 사람 라벨 역시 개발 세트와 홀드아웃으로 나눠 검증기의 과적합을 확인해야 한다.
- 04
같은 숫자라도 의미가 다른 이유
Fara 7B의 동일한 WebVoyager 궤적은 공식 판정에서 성공률 74%, 증거 중심 Universal Verifier에서 38%로 평가됐다. 이 36%포인트 차이는 모델이 달라서가 아니라 성공의 증거를 세는 방법이 달라서 생겼다. Universal Verifier는 인간 라벨과의 Cohen's kappa가 0.58이었고, 150개 궤적 중 50개를 개발에 쓰고 100개를 홀드아웃으로 보류했다. 수치는 검증기 자체의 평가 절차와 함께 읽어야 보상 함수로 사용할 수 있다.
실전 아키텍처는 trace 수집, 알려진 실패용 score, 미지의 패턴용 topic, 상태 증거를 확인하는 verifier, 홀드아웃 인간 라벨을 한 계층으로 뭉개지 않는다. 자동화는 실패 사례를 찾아 eval과 변경 후보로 연결하되, 판정 기준·증거 선택·회귀 결과를 사람이 검토할 수 있게 남겨야 한다. 품질 루프의 병목은 로그 양이 아니라 신뢰할 수 있는 신호와 그 신호를 다시 검증하는 경계다.
코드 생성기를 소프트웨어 생산 시스템으로 바꾸는 네 층
속도를 얻고도 품질 부채를 늘리지 않으려면 맥락, 결정론적 도구, 조직 규모의 가시성, 실행 증거를 하나의 변경 루프로 연결해야 한다.
에이전트가 더 많은 코드를 만드는 능력을 안전하고 반복 가능한 개발 처리량으로 바꾸려면 어떤 층이 필요한가?
- 1
1. 맥락과 완료 조건
개별 요청을 공장형 루프로 확장하려면 문서, 대화, 코드, 화면, 개인·팀 선호를 입력 재료로 제공하고 목표를 검증 가능한 성공 조건으로 바꿔야 한다. 장기 작업은 goal, milestone, 진행 상태, 별도 스레드와 승인 지점을 드러내야 컨텍스트 압축을 거쳐도 방향을 잃지 않는다. App Server 같은 하네스는 도구 호출과 권한, 재시도, 협업을 제품 안에 넣을 수 있지만, 사람이 필요한 인증과 품질 승인은 명시적으로 남겨야 한다.
- 2
2. 결정론적 품질 하한선
프롬프트 문서에 모든 규칙을 적는 방식은 컨텍스트가 길수록 약해진다. 스타일은 RuboCop, 반복되는 결함은 custom Cop, 마이그레이션 구조는 Rails generator, 종료 조건은 stop hook과 테스트가 맡게 해야 한다. 결정론적 검사로 표현하기 어려운 구조와 책임은 생성 에이전트와 분리된 좁은 리뷰 단계가 뒤에서 확인한다. 실패한 검사가 루프를 계속하게 만들 때 첫 생성물의 불완전함이 사람의 반복 손질로 바로 전가되지 않는다.
- 3
3. 조직 규모의 변경 가시성
단일 저장소에서 통과한 패치는 수만 개 저장소의 완전성을 증명하지 못한다. 검색, 코드 그래프, 컴파일러 수준 분석으로 대상과 의존성을 찾고, 판단이 필요한 위치는 에이전트가, 동일 패턴은 결정론적 스크립트가 처리해야 한다. CI와 PR 피드백을 읽는 단계적 실행, 처리·누락·실패·재시도 상태의 기록이 감사 가능성을 만든다. Mercari 사례처럼 두 저장소의 알려진 문제에서 출발해 80개의 잠재 취약점을 더 찾았을 때 핵심 산출물은 패치뿐 아니라 전체 범위를 찾았다는 확신이다.
- 4
4. 최소 구현과 새 실행 증거
생성 비용이 낮아져도 읽고 이해하고 유지하는 비용은 남는다. 필요 없는 추상화와 파일을 줄이고, 모호한 판단은 린터·타입 시스템·표준 라이브러리로 외부화해야 사람이 역설계할 선택이 줄어든다. 다만 작고 아름다운 코드나 lint 통과는 실제 동작의 증거가 아니다. 완료를 선언하기 전에 그 주장을 증명할 명령을 새로 실행하고 전체 출력과 종료 코드를 읽어야 한다. 무엇을 만들지보다 무엇이 존재할 가치가 있는지를 고르는 단계가 루프의 마지막 게이트다.
네 층은 서로 대체 관계가 아니다. 풍부한 맥락만 주면 품질 규칙이 확률적으로 누락되고, 린터만 두면 전체 변경 범위와 실제 동작을 놓친다. 반대로 대규모 검색만 갖춰도 목표와 승인 경계가 불명확하면 잘못된 변경을 넓게 퍼뜨릴 수 있다. 좋은 소프트웨어 공장은 맥락으로 방향을 정하고, 도구로 하한선을 강제하고, 가시성으로 범위를 증명하고, 새 실행 결과로 완료를 승인한다.
GPU를 채우는 런타임과 권한을 가두는 런타임
추론 엔진과 에이전트 샌드박스는 다른 병목을 다루지만, 둘 다 상태·스케줄링·관측을 명시하지 않으면 규모가 커질수록 비용과 실패가 숨어든다.
추론 엔진서버가 HTTP·gRPC와 토큰화 경계를 맡는 동안 엔진은 프리필, 디코드, 배치, 모델 러너와 디토큰화를 조율한다. 목표는 GPU가 다음 작업을 기다리지 않게 하는 것이다.
에이전트 샌드박스임의 코드와 AI 실행을 호스트와 다른 사용자로부터 격리하고, 읽기·쓰기 경로와 네트워크 정책을 제한한다. 목표는 빠른 실행보다 피해 범위와 권한을 통제하는 데서 시작한다.
추론 엔진성능을 원하면 KV 캐시와 공통 접두사 재사용 때문에 무상태처럼 보이는 API도 상태를 갖는다. 캐시 용량·배치·세션 배치가 맞지 않으면 축출과 스래싱이 처리량을 무너뜨린다.
에이전트 샌드박스메모리·파일 시스템·실행 중 프로세스를 스냅샷해 100밀리초 이하의 빠른 시작과 재개를 노린다. 상태 재사용은 빠르지만 고아 프로세스와 오래된 자원도 함께 보존하므로 정리 정책이 필수다.
추론 엔진대화형 요청은 TTFT와 토큰 사이 지연을, 백그라운드 작업과 데이터 처리는 처리량과 비용을 더 중시한다. 스케줄러는 프리필·디코드의 다른 자원 패턴과 큐를 보고 GPU 배치를 구성한다.
에이전트 샌드박스작업 중에는 긴 command timeout을 허용하고 완료 뒤에는 짧은 lifetime으로 자원을 회수한다. 사용자와 sandbox ID 매핑을 보존해야 같은 작업 상태를 재사용하면서 불필요한 새 인스턴스를 줄일 수 있다.
추론 엔진큐, TTFT, 디코드 지연, KV 캐시, 토큰 ID와 trace를 남겨 모델 품질·토크나이저·성능 회귀를 분리한다. 엔진 변경은 모델 품질 평가와 성능 벤치마크를 함께 통과해야 한다.
에이전트 샌드박스CPU·메모리·디스크 고갈, 고아 프로세스, 소유권, 파일 권한, 네트워크와 스토리지를 플릿 단위로 관찰한다. 수백~수천 개에서는 단일 실행 오류가 쿼터와 오케스트레이션 문제로 바뀐다.
두 런타임의 공통 함정은 빠른 단일 실행을 운영 가능성으로 착각하는 것이다. 추론 엔진은 GPU 이용률만 높여도 사용자 지연과 모델 정확성을 놓칠 수 있고, 샌드박스는 격리만 제공해도 수명·소유권·누수·네트워크 정책을 놓칠 수 있다. 실제 선택은 워크로드별 SLO, 재사용할 상태, 회수 조건, 관측 지표와 실패 시 책임 경계를 함께 정의하는 문제다.
아직 못 읽은 북마크
북마크를 고르는 중…