80%.

이 수치는 에이전틱 루프(AI가 목표 달성을 위해 계획, 실행, 관찰을 반복하는 과정) 환경에서 도구 호출 단계의 턴이 중단되던 비율을 뜻한다. 10번 중 8번은 AI가 갑자기 말을 멈추거나 방금 수행한 도구 호출 결과를 잊어버리는 심각한 건망증 현상이 발생했다. 개발자 커뮤니티에서는 모델 자체의 지능 문제라기보다 모델과 추론 엔진 사이의 대화 형식을 규정하는 템플릿의 미세한 불일치가 원인이라는 분석이 지배적이었다. 그런데 이번 v19 업데이트가 이 고질적인 불일치 문제를 정밀하게 타격하며 해결책을 제시했다.

AST 렌더링 재작성과 KV 캐시 100% 일치

v19 업데이트는 에이전틱 루프의 치명적인 오류를 해결하는 데 모든 화력을 집중했다. AST(추상 구문 트리, 소스 코드를 트리 구조로 분석하는 도구) 히스토리 렌더링 방식을 전면 재작성하여 빈 줄바꿈 블록이 삽입되는 현상을 완전히 제거했다. 기존에는 이 빈 블록 때문에 모델이 생각 과정을 거치지 않아야만 도구를 호출할 수 있다고 오판하는 인컨텍스트 러닝(추가 학습 없이 프롬프트 내 예시만으로 작업을 수행하는 능력) 편향이 발생했고, 이것이 80% 이상의 턴 중단으로 이어졌다. 시스템 프롬프트의 논리적 함정을 제거해 모델이 생각 블록에서 대화형 답변으로 자연스럽게 전환하도록 수정했다.

기술적으로 가장 핵심적인 변화는 preserve_thinking 옵션의 기본값을 true로 설정한 점이다. 이를 통해 과거의 생각 과정이 시간 순서대로 유지되며, 결과적으로 KV 캐시(이전 토큰의 계산 값을 저장해 재사용함으로써 추론 속도를 높이는 메모리)의 접두사 일치율을 100% 보장하게 되었다. 이는 다단계 도구 루프 도중 발생하는 기억 상실 문제를 수학적으로 해결한 조치다. 개발자가 체감하는 변화는 명확하다. 모델이 이전 단계에서 무엇을 생각했고 어떤 도구를 썼는지 정확히 기억하며 다음 단계로 넘어가기 때문에, 루프가 끊기지 않고 목표 지점까지 안정적으로 도달한다.

구조적 검사와 템플릿 통합을 통한 안정성 확보

예전에는 에이전트의 오류 탐지 방식을 단순 문자열 매칭에 의존했다. JSON 응답 내에 단순히 error라는 단어만 포함되어도 실패로 간주하던 오탐지 루프가 빈번했으나, v18부터는 이를 구조적 형식 검사로 변경해 Exception이나 Traceback 같은 명확한 구조적 오류만 잡아내도록 개선했다. llama.cpp(C++ 기반의 LLM 추론 라이브러리)와 minijinja(Jinja 템플릿의 경량화 버전)의 구버전 빌드에서 발생하던 AST 충돌 문제 역시 배열 인덱싱 방식을 도입해 해결했다.

v17에서는 Qwen 3.5와 3.6을 하나의 통합 템플릿으로 합쳐 관리 효율성을 높였으며, 도구 사용과 대화가 동시에 필요할 때 턴을 강제로 종료하던 버그를 수정했다. 내부 공백 논리를 정규화해 모델의 네이티브 생성 간격과 템플릿 렌더링 결과물을 완벽하게 일치시켰으며, 이는 캐시 무효화로 인해 전체 프롬프트를 다시 처리해야 했던 성능 저하 문제를 완전히 제거한 결과다.

v16에서는 JSON 방식에서 모델이 학습된 원래의 XML 도구 형식으로 회귀하여 vLLM(고성능 LLM 추론 엔진)의 qwen3_coder 파서와의 호환성을 회복했다. 추론 시 reasoning off 옵션을 설정하면 생각 블록 없이 평문으로 지시사항이 주입되도록 하여 불필요한 토큰 생성을 막았다. 쉘 명령어 결과나 검색 결과의 시간 표시 등 정상적인 출력물이 오류로 오인되어 무한 재시도 루프에 빠지는 현상도 함께 해결되었다. 이러한 누적 패치는 Qwen 모델이 가진 잠재력을 에이전트 환경에서 온전히 끌어내기 위한 필수적인 최적화 과정이었다.

LLM 에이전트의 완성도는 모델의 파라미터 크기가 아니라 템플릿의 정밀한 일치도에서 결정된다.