논문: Context Assembly as the Controlled Variable: A Control-Theoretic View of Harness Policies for Frozen LLM Agents 코드/데이터: github.com/dpaul0501/context-optimization-rl 동반 논문(응용편): A Control System, a Dataset, and a Recipe for Making Frozen LLM Agents Learn a Domain
핵심 주장 한 줄
에이전트 하네스에서 “무엇을 통제할 것인가”에 대한 답이 도구 선택이나 코드 재작성이 아니라 “컨텍스트 어셈블리”여야 한다는 주장이다. 프롬프트 템플릿, few-shot 예시, 검색 깊이, 검증 패스 수, 단계 예산 — 이것들을 하나의 유한한 행동 공간(action space)으로 정의하고, 동결된 모델 바깥에서 contextual bandit이나 REINFORCE가 온라인으로 학습하는 구조를 제안한다.
왜 지금 이 질문인가
2026년 중반, LLM 에이전트를 제어 이론의 렌즈로 보는 연구가 폭발적으로 늘었다. 이 논문은 자신들의 기여가 “제어 이론을 LLM 에이전트에 처음 도입했다”고 주장하지 않는다. 대신, 기존 연구들이 무엇을 통제 대상으로 삼았는지를 비교 표로 정리하고, 자신들의 차이점을 명확히 한다.
| 연구 | 통제 대상 | 학습 메커니즘 | 감사 가능성 | 코드 접근 필요 |
|---|---|---|---|---|
| Stable Agentic Control (Anonymous, 2026) | 도구 선택 (유한 카탈로그) | 결정론적 정책 + Lyapunov | 형식적 (ISS, Lean 검증) | 불필요 |
| Sparse Agentic Control (Majumdar, 2026) | 행동 선택 (거대 공간) | ℓ₁,₂ 정규화 정책 | 샘플 복잡도 바운드 | 불필요 |
| Regulatory Control (Nogueira & Skogestad, 2026) | 운영자 에이전트 라우팅 | ARC 스타일 루프 분해 | 구조적 (설계에 의한) | 불필요 |
| Meta-Harness (Lee et al., 2026) | 하네스 코드 | 에이전트 코드 서치 제안자 | 경험적만 | 필요 |
| HyperAgents (Meta AI, 2026) | 에이전트 + 하네스 코드 | 자기 참조 메타 에이전트 | 경험적만 | 필요 |
| 본 논문 | 컨텍스트 어셈블리 | Bandit / REINFORCE | 경험적 안정성 + 교정 | 불필요 |
차이점이 명확하다. 기존 제어 이론 연구는 도구 선택이나 에이전트 간 메시지 라우팅을 통제한다. Meta-Harness와 HyperAgents는 하네스 코드 자체를 재작성하지만, 이는 비싼 에이전트 루프를 필요로 하고 감사가 어렵다. 이 논문의 접근은 중간 지점이다: 하네스 코드를 건드리지 않으면서도, 도구 선택보다 훨씬 표현력이 높은 “컨텍스트 구성”을 학습 대상으로 삼는다.
729가지 컨텍스트 구성 공간
이 논문이 정의하는 컨텍스트 구성 공간 𝒞는 여섯 가지 레버의 조합이다.
- 프롬프트 스타일 — 시스템 프롬프트 템플릿 변형
- 도구/검색 정책 — 어떤 도구를 활성화할지, 검색 깊이는 얼마나 할지
- 메모리 정책 — 이전 에피소드에서 무엇을 검색할지
- 계획(Planning) 정책 — 계획 단계를 몇 번 수행할지
- 검증(Verification) 정책 — 답 검증 패스를 몇 번 돌릴지
- 단계 예산(Step budget) — 최대 몇 단계까지 허용할지
여섯 레버의 카테시안 곱은 |𝒞| = 729개의 구성을 만든다. 하네스 엔지니어가 오늘날 수동으로 튜닝하는 것과 동일한 차원이지만, 이 논문은 이것을 명시적인 행동 공간으로 정의하고 외부 정책(contextual bandit 또는 REINFORCE)이 온라인으로 학습하게 한다.
내부 정책 vs 외부 정책
- 내부 정책 π_θ: 동결된 LLM. θ는 절대 업데이트되지 않는다.
- 외부 정책 π_φ: 컨텍스트 구성 C_t를 선택하는 정책. task 특징 f(x_t)에 대해 선형 가치 함수 또는 softmax 정책으로 파라미터화된다.
외부 정책이 최적화하는 보상 함수는 단순한 정답 여부가 아니다:
R = R_task + λ_v·R_verify + λ_p·R_policy − λ_c·C_tokens − λ_l·C_latency − λ_h·P_unsupported
정답 점수, 검증 통과 여부, 정책 준수 여부에서 토큰 비용, 지연 시간, 근거 없는 주장 페널티를 뺀다. 다목적 보상이다.

안정성: 60 에피소드로는 안 된다
제어 이론에서 “안정성(stability)“은 시스템이 발산하지 않고 궤도를 유지하는 성질이다. 이 논문은 Zhang et al. (2026)의 정의를 따른다: 윈도우 평균 보상이 단조 감소하지 않으면 안정적이다.
형식적으로는 맞는 명제다. ε-greedy bandit은 충분한 샘플이 쌓이면 기대 보상이 단조 증가한다. REINFORCE도 학습률이 충분히 작으면 마찬가지다.
하지만 실험 결과는 달랐다. 2개 시드, 60 에피소드, 총 240 에피소드를 돌렸더니:
- Bandit 시드 1: 기울기 −0.0045/에피소드 (감소)
- Bandit 시드 2: 기울기 +0.0005/에피소드 (사실상 평탄)
- REINFORCE 시드 1: 기울기 −0.0024/에피소드 (감소)
- REINFORCE 시드 2: 기울기 −0.0008/에피소드 (감소)
4개 중 3개가 하락 추세다. 저자들은 이를 숨기지 않고 그대로 보고한다.
이유는 단순하다. 729개의 행동 공간에서 60 에피소드라면, 각 행동당 평균 0.08번밖에 시도하지 못한다. Majumdar (2026)가 지적한 Ω(M) 샘플 복잡도 regime에 갇힌 것이다. 동반 논문(응용편)에서도 300 에피소드에서 정적 DSPy 기준선을 넘지 못했다.
핵심 통찰: 729-구성 행동 공간은 단일 머신에서 하루 만에 샘플링할 수 있는 에피소드 예산에 비해 너무 크다. 형식적 안정성 명제는 옳지만, 실용적 에피소드 예산에서는 전제가 성립하지 않는다.
교정(Calibration): 신뢰도가 2자리수 잘못 맞는다
더 흥미로운 발견은 불확실성 교정 분석이다. 컨트롤러가 자신이 선택한 행동에 대해 얼마나 자신감을 갖는지, 그 자신감이 실제 정답 여부와 얼마나 잘 맞는지를 측정했다.
선택 시점의 신뢰도를 softmax 점수로 정의하고, 10개 분위로 나누어 Expected Calibration Error(ECE)를 계산했다.
신뢰도를 10개 분위로 나누어 Expected Calibration Error(ECE)를 계산했다. 결과는 ECE = 0.607 — 매우 큰 값이다.
ECE = 0.607. 이는 매우 큰 값이다.
- 평균 신뢰도: 0.0014 (bandit), 0.0014 (REINFORCE)
- 실제 성공률: 0.64 (bandit), 0.58 (REINFORCE)
신뢰도와 정확도가 약 2자리수 차이가 난다. 원인은 구조적이다. 729개의 거의 동일한 점수를 가진 행동에 softmax를 취하면, 점수 분포가 집중되기 전까지는 1/729 ≈ 0.0014 근처에서 벗어나지 못한다. 반면 실제 성공률은 태스크와 모델에 의해 결정되는 이진 결과의 베이스 레이트다.
실용적 의미: 729-구성 행동 공간에서의 raw softmax 확률은 인간 에스컬레이션 신호로 사용할 수 없다. 모든 에피소드가 “저신뢰도”로 보이기 때문이다. 온도 스케일링(temperature scaling)이나 상위 두 행동 간의 가치 차이(value margin)로 재정의해야 한다.
동결된 모델, 학습하는 하네스
이 논문의 철학적 입장은 명확하다:
- 모델은 동결한다. API 뒤의 블랙박스 모델을 그대로 쓴다.
- 하네스 코드는 재작성하지 않는다. Meta-Harness나 HyperAgents처럼 에이전트가 자기 코드를 고치는 것이 아니라, 고정된 인간 가독성 레버를 조작한다.
- 외부 정책만 학습한다. Bandit이나 REINFORCE가 컨텍스트 구성을 선택하고, 보상을 받고, 가중치를 업데이트한다.
이 접근의 장점은 **감사 가능성(auditability)**이다. 하네스 엔지니어가 무엇을 바꿨는지 diff 하나로 읽을 수 있다. 회귀가 발생하면 임의의 이전 프로그램과의 diff가 아니라, 명명된 레버 중 하나의 값 변경이다.
코드를 실행할 수 있는 인프라가 없는 순수 chat-completions API 환경에서도 동작한다. 방화벽 뒤의 프로덕션 환경에서 바로 적용 가능하다.
동반 논문(응용편)과의 관계
이 논문은 2편짜리 릴리스의 **이론편(Paper 1)**이다. 동반 논문(arXiv:2607.25415)은 같은 컨트롤러를 세 가지 도메인(도구 사용, 코딩, 검색 QA)과 두 모델 제공자에서 실험한 **응용편(Paper 2)**이다. 응용편에서는 729가지 구성을 돌려본 결과, 정적 DSPy 기준선이 학습하는 컨트롤러를 이겼다. 두 논문이 독립적으로 같은 병목(샘플 부족)을 지목하는 것은 이 연구의 정직성을 보여준다.
GitHub 저장소에는 전체 코드, 데이터셋, 궤적 로그, 배포 레시피(RECIPE.md)가 공개되어 있다.
필자 해설: 정직한 부정 결과가 가치 있는 이유
이 논문의 가장 큰 기여는 형식적 분석이나 새로운 알고리즘이 아니다. 오히려 불편한 진실을 있는 그대로 보고하는 태도다.
729개의 컨텍스트 구성을 정의하고, contextual bandit으로 학습시키면 — 60 에피소드에서는 안정성도, 교정도 전부 실패한다. 동반 논문의 300 에피소드에서도 정적 기준선을 넘지 못한다. 저자들은 이것이 형식적 명제의 논리적 오류가 아니라 샘플 예산의 구조적 한계임을 정확히 진단한다.
이것이 실무자에게 유용한 이유는:
- 컨텍스트 구성 공간을 줄여야 한다. 729개는 너무 많다. 3-4개 레버, 10-20개 구성으로 시작해야 샘플 효율이 확보된다.
- 신뢰도 신호를 raw softmax로 쓰면 안 된다. Value margin이나 별도 교정 모델이 필요하다.
- 동결된 모델 + 학습하는 하네스는 실현 가능한 아키텍처이지만, 행동 공간 설계가 성패를 가른다.
Meta-Harness와 HyperAgents가 “에이전트가 하네스를 스스로 진화시킨다”는 그랜드 비전을 제시한다면, 이 논문은 **“어디까지 자동화할 수 있고, 어디서부터 샘플이 부족한가”**를 냉정하게 측정한 연구다. 화려하지 않지만, 배포하려는 사람이 반드시 읽어야 하는 종류의 논문이다.
더 실습해보고 싶은 분들께
에이전트 하네스 설계, 컨텍스트 엔지니어링, 그리고 “동결된 모델을 어떻게 감싸서 제어할 것인가”에 대해 더 깊이 실습해보고 싶다면 다음 두 자료를 추천한다:
- 『이게 되네? 오픈클로 미친 활용법 50제』 — 에이전트 하네스와 도구 사용 루프를 직접 만들어보면서 익히는 실전 가이드
- 「모두를 위한 루프 엔지니어링」 — 컨텍스트 엔지니어링부터 보상 설계까지, 에이전트 루프를 설계하는 방법론 강의
이 논문이 제안하는 것처럼 “외부 정책이 학습하는 하네스”를 직접 구현해보고 싶다면, 위 두 자료에서 다루는 기초부터 시작하면 좋다.