PART 5 · Harness와 자기 개선
컨텍스트 엔지니어링: 수동 Prompt에서 자동 진화로
Agent 작업이 길어질수록 컨텍스트 관리는 선택 사항이 아닙니다. 이제 Harness 최적화의 핵심 전장이 되고 있습니다.
최적화 대상의 진화
모델이 더 스마트하고 강력해질수록, 최적화할 수 있는 대상은 더 복잡해지고 방법은 더 범용화됩니다. 이 진화 경로는 Prompt 튜닝에서 시작해 옵티마이저를 작성하는 코드 최적화까지 이어집니다.
문제: 컨텍스트 팽창
단순 추가 = 통제 불능
모든 도구 응답과 모델 생성 결과를 컨텍스트에 단순히 추가하면, Agent 작업 시간이 길어짐에 따라 빠르게 통제 불능 상태가 됩니다.
장문 컨텍스트 연구는 계속 발전할 것이지만, 현재 장문 컨텍스트 지능과 컨텍스트 엔지니어링은 종종 얽혀 있습니다. LLM의 제한된 주의력 하에서 더 구조화되고 간결한 컨텍스트를 구축하는 것이 컨텍스트 관리의 핵심 역할입니다.
장문 컨텍스트 연구는 계속 발전할 것이지만, 현재 장문 컨텍스트 지능과 컨텍스트 엔지니어링은 종종 얽혀 있습니다. LLM의 제한된 주의력 하에서 더 구조화되고 간결한 컨텍스트를 구축하는 것이 컨텍스트 관리의 핵심 역할입니다.
ACE: Agentic Context Engineering
쉽게 말하면: 컨텍스트는 AI의 작업 기억입니다 — 눈앞에 보이는 모든 자료입니다. ACE의 아이디어는 기억이 뒤죽박죽이 되지 않도록 체계적인 작업 매뉴얼을 유지하는 것입니다. 실행자(Generator)는 매뉴얼을 따라 작업하고, 검토자(Reflector)는 교훈을 요약하며, 편집자(Curator)는 그 교훈을 하나씩 매뉴얼에 정리합니다. 매뉴얼은 사용할수록 더 정교해지고 두꺼워지지 않습니다.
컨텍스트는 계속 진화하는 스크립트 — Prompt가 무한히 증가해서는 안 됩니다
ACE(Zhang et al. 2025)는 구조화된 bullet point 스크립트를 유지합니다. 각 항목에는 identifier와 description이 포함됩니다. 세 가지 컴포넌트가 협력하여 이 스크립트를 관리합니다:
컴포넌트 1
Generator
작업을 실행하고 궤적을 생성합니다. 스크립트의 bullet point를 지침으로 활용합니다.
컴포넌트 2
Reflector
성공 및 실패 궤적에서 인사이트를 추출하고 교훈을 도출합니다.
컴포넌트 3
Curator
증분 방식의 항목화된 entries로 구조화된 컨텍스트를 업데이트하고, 주기적으로 정제·중복 제거합니다.
ACE 프레임워크: Generator가 궤적 생성 → Reflector가 인사이트 추출 → Curator가 컨텍스트 스크립트 증분 업데이트. (출처: Zhang et al. 2025)
핵심 설계: Curator는 구조화된 (identifier, description) 항목을 출력하고 결정론적 로직으로 스크립트에 병합합니다. 전체 prompt blob을 절대 재작성하지 않습니다. 이로써 반복 재작성 시 발생하는 컨텍스트 붕괴와 간결성 편향을 방지합니다.
MCE: Meta Context Engineering
쉽게 말하면: ACE가 매뉴얼을 잘 정리하는 것이라면, MCE는 더 깊은 질문을 던집니다: 매뉴얼을 정리하는 방법 자체도 최적화할 수 있을까요? 예를 들어, 시간순으로 정리할까요, 주제별로 정리할까요? 개요를 기록할까요, 세부 내용을 기록할까요? MCE는 무엇을 기록할 것(내용)과 어떻게 기록할 것(방법)을 분리하여, 두 가지 모두 진화시킵니다. 노트가 더 좋아질 뿐만 아니라, 노트 작성 방법도 점점 더 스마트해집니다.
메커니즘과 콘텐츠 분리 — 이중 레벨 최적화
MCE(Ye et al. 2026)는 ACE에서 한 단계 더 나아갑니다: 컨텍스트를 어떻게 관리할 것인가(메커니즘/Skill)와 컨텍스트에 무엇이 있는가(내용)를 분리하여 두 레벨을 동시에 최적화합니다.
MCE Skill은 컨텍스트 함수
• ρ = 정적 컴포넌트 (Prompt, 지식 베이스, 코드베이스)
• F = 동적 연산자 (검색, 선택, 필터링, 포맷팅)
MCE Skill은 컨텍스트 함수
c = F(x; ρ)를 정의합니다:• ρ = 정적 컴포넌트 (Prompt, 지식 베이스, 코드베이스)
• F = 동적 연산자 (검색, 선택, 필터링, 포맷팅)
수식의 의미: 두 문장입니다. 내부 루프: 현재의 노트 작성 방법으로 노트를 최대한 잘 작성합니다. 외부 루프: 다양한 노트 작성 방법을 비교하여 최선을 선택합니다. 먼저 내용을 최적화하고, 그 다음 방법을 최적화합니다 — 번갈아가며 수행합니다.
이중 레벨 최적화:
내부: c* = argmax J_train(c; s) ← skill s가 주어졌을 때 최적 컨텍스트 탐색
외부: s* = argmax J_val(c*) ← 최적 skill 탐색 (검증 세트에서)
Skill 데이터베이스: H = {(s_i, c_i, J_train_i, J_val_i)} 이력 추적
Skill 진화: s_new = crossover(task, H) ← Meta-agent가 agentic crossover 수행
컨텍스트 최적화: c_new = engineer(task, s_new; c_prev, Rollouts)
MCE 프레임워크: meta-level Skill 진화가 컨텍스트 관리 메커니즘을 탐색하고, base-level이 작업 컨텍스트를 최적화합니다. (출처: Ye et al. 2026)
구현: 컨텍스트 함수 = 파일 시스템의 디렉토리
MCE에서 context function은 전용 디렉토리의 파일 집합으로 인스턴스화됩니다:
• 정적 파일:
• 동적 파일: 컨텍스트 데이터와 rollout 기록
meta-level과 base-level 최적화 모두 표준 코딩 환경에서 실행됩니다. 사용 도구 세트:
• 정적 파일:
skill.md (작업의 가장 중요한 지식 저장)• 동적 파일: 컨텍스트 데이터와 rollout 기록
meta-level과 base-level 최적화 모두 표준 코딩 환경에서 실행됩니다. 사용 도구 세트:
Read, Write, Edit, Bash, Glob, Grep, TodoWrite
Meta-Harness: Harness를 최적화하는 Harness
쉽게 말하면: 이것이 중첩 구조의 가장 바깥 레이어입니다. ACE는 노트 내용을 최적화하고, MCE는 노트 작성 방법을 최적화하며, Meta-Harness는 전체 작업대의 소스 코드를 직접 최적화합니다. AI가 공장 전체를 재설계하는 것과 같습니다 — 도구나 방법을 교체하는 것을 훨씬 넘어섭니다. 가장 강력하지만 컴퓨팅 비용도 가장 높습니다 (버전을 변경할 때마다 완전한 시험 실행과 채점이 필요합니다).
최적화 대상: 정보 저장, 검색, 제시를 결정하는 코드
Meta-Harness(Lee et al. 2026)는 한 레이어 더 깊이 들어갑니다: 최적화되는 것은 더 이상 컨텍스트 내용이 아닙니다. 최적화되는 것은 어떤 정보를 저장하고, 검색하고, 모델에 제시할지를 결정하는 코드 자체입니다. 이것이 Harness를 최적화하는 Harness입니다.
• Proposer 자체가 코딩 Agent입니다
• 출력은 Pareto 프론티어 위의 Harness 후보 집합입니다
• 실행 이력은 파일 시스템을 통해 접근합니다: coding agent가
• 제안된 각 harness는 파일 시스템의 딕셔너리입니다: 소스 코드, 점수, 궤적, 상태 업데이트를 포함합니다
• Proposer 자체가 코딩 Agent입니다
• 출력은 Pareto 프론티어 위의 Harness 후보 집합입니다
• 실행 이력은 파일 시스템을 통해 접근합니다: coding agent가
grep/cat으로 필요 시 읽어, prompt에 전부 밀어 넣는 것을 방지합니다• 제안된 각 harness는 파일 시스템의 딕셔너리입니다: 소스 코드, 점수, 궤적, 상태 업데이트를 포함합니다
Meta-Harness 외부 루프 최적화 알고리즘: 새로운 harness를 반복적으로 생성하고 적격한 것만 유지합니다. (출처: Lee et al. 2026)
Meta-Harness의 텍스트 분류 및 TerminalBench-2에서의 성능. 참고: TerminalBench-2 실험은 이미 강력한 harness에서 초기화되었습니다. (출처: Lee et al. 2026)
세 가지 방법 비교
ACE
궤적에서 학습
결정론적인 Generator→Reflector→Curator 파이프라인으로 구조화된 bullet point를 유지합니다. 업데이트 규칙은 여전히 수동 설계됩니다.
MCE
관리 메커니즘 진화
컨텍스트 형식을 고정하지 않고, free-form skill로 지식을 저장하며, 이중 레벨 반복으로 skill과 context를 함께 진화시킵니다. 메커니즘 자체가 변합니다.
Meta-Harness
전체 시스템 코드 최적화
Proposer가 코딩 Agent이며, 최적화 대상은 harness 소스 코드 자체이고, Pareto 프론티어 후보 집합을 출력합니다. 가장 범용적이지만 가장 컴퓨팅 집약적입니다.
실시간 비교: 세 가지 전략의 라운드별 변화 관찰
준비됨
단순 추가
매 라운드 모든 이력을 컨텍스트에 밀어 넣습니다…
ACE 구조화
Curator가 구조화된 항목만 증분 추가합니다…
MCE 메타 진화
Skill과 내용이 동시에 두 레이어에서 진화합니다…
위의 10라운드 비교 실행을 클릭하여 세 가지 전략이 라운드별로 실시간으로 어떻게 변화하는지 관찰하세요: 누가 팽창하고, 누가 안정적이며, 누가 계속 성장합니까.
핵심 교훈: harness 설계가 실행 가능한 탐색 공간이 되면, 강력한 코딩 Agent는 인간 엔지니어가 사용하는 것과 동일한 설계 공간을 활용할 수 있습니다. 컨텍스트 엔지니어링의 미래는 시스템이 언제 무엇을 저장하고, 어떻게 검색하며, 어떻게 제시할지 자동으로 학습하도록 만드는 것입니다. 아무리 뛰어난 수동 Prompt도 과도기적 단계일 뿐입니다.