원문: Lilian Weng, “Harness Engineering for Self-Improvement”, Lil’Log, 2026-07-04.
이 노트는 원문의 핵심 주장을 한국어로 정리한 단일 소스 요약이다. 기존 harness, loop-engineering, moc-ai-agents-harness와 함께 읽는다.
핵심 주장
Lilian Weng은 recursive self-improvement(RSI)의 가까운 경로가 “모델이 자기 가중치를 직접 고치는 장면”에서 바로 시작하기보다, 모델을 둘러싼 **deployment system / harness**가 먼저 최적화되는 방향으로 전개될 가능성이 높다고 본다. 하네스는 base model 주변에서 실행을 오케스트레이션하고, 모델이 어떻게 생각·계획하고, 도구를 호출하고, 컨텍스트를 보고, 산출물을 저장하고, 결과를 평가할지 결정하는 시스템이다.
초기 에이전트 공식이 “LLM + memory + tools + planning + action”이었다면, 하네스 엔지니어링은 거기에 workflow design, evaluation, permission controls, persistent state management를 더한다. 즉 프롬프트 템플릿보다 런타임/소프트웨어 시스템 설계에 가깝다. 원문이 제시하는 최적화 대상의 이동은 대략 다음 순서다.
instruction prompts → structured context → workflow → harness code → optimizer code이 관점에서 self-improvement는 “더 나은 답을 내는 법”만이 아니라, 더 나은 답을 만들어내는 기계 자체를 개선하는 meta-methodology 문제가 된다.
하네스 디자인 패턴
| 패턴 | 설명 | 실무적 의미 |
|---|---|---|
| Workflow automation | 목표 지향 루프: plan → execute → observe/test → improve → repeat | loop-engineering처럼 종료 조건, 검증, 재시도, 사용자 확인점을 시스템화해야 한다. |
| File system as persistent memory | 전체 로그와 아티팩트를 컨텍스트에 밀어 넣지 않고 파일로 남긴다 | 장기 작업의 experiment log, diff, trace, paper summary, failure record는 파일 기반 상태로 보존한다. |
| Sub-agent and backend jobs | 여러 가설/실험/서브태스크를 병렬 실행하고 로그를 감시한다 | parent agent에는 작은 process manager가 필요하다: launch, inspect logs, cancel, merge. |
| Coding agent harness | Claude Code, Codex, OpenCode, Cursor류 에이전트의 공통 루프 | 파일 읽기/편집, shell, git, MCP, web, artifact, cron, delegation 같은 도구가 하네스 인터페이스가 된다. |
핵심은 병렬성과 장기 상태를 “채팅 컨텍스트 속 임시 텍스트”로 두지 않는 것이다. 서브에이전트 결과와 백엔드 작업 로그가 파일·상태 레코드로 남아야 중단 이후 복구와 사후 분석이 가능하다.
Harness layer vs core intelligence
원문은 하네스가 모델 지능을 대체한다고 말하지 않는다. 오히려 둘은 상호작용한다.
- 하네스 엔지니어링은 더 일반적인 meta-methodology가 된다. 시스템 자체가 최적화 대상이 되며, 휴리스틱 규칙은 줄고 더 일반적인 메커니즘이 늘어난다.
- 성숙한 하네스는 auto-research와 모델 self-improvement loop를 가능하게 한다.
- 더 똑똑한 모델은 하네스의 과설계를 줄이고, 어떤 부분을 모델 내부 행동으로 흡수할지 판단하게 만든다.
- 그래도 외부 컨텍스트·도구·평가·권한 경계와의 인터페이스는 계속 남는다.
프롬프트 엔지니어링이 instruction tuning 이후 덜 중심적이 되었지만 “목표, 제약, 컨텍스트, 평가를 지정해야 하는 필요”는 사라지지 않은 것과 비슷한 패턴이다.
Context engineering: 프롬프트가 아니라 playbook을 진화시킨다
장기 에이전트 작업에서 tool response와 model generation을 모두 컨텍스트에 누적하면 빠르게 붕괴한다. 그래서 context management는 LLM에 들어갈 컨텍스트를 구조화하고, 오래가는 상태는 별도 저장소에 보존하는 계층이 된다.
원문은 세 계열을 비교한다.
- ACE(Agentic Context Engineering): Generator가 trajectory를 만들고, Reflector가 성공/실패 trajectory에서 insight를 추출하며, Curator가
(identifier, description)형태의 structured context playbook을 갱신한다. 전체 prompt blob을 매번 재작성하지 않고 itemized bullets를 병합·중복제거하는 점이 중요하다. - MCE(Meta Context Engineering): context를 잘 쓰는 “스킬” 자체를 meta-optimization 대상으로 삼는다. 내부 루프는 task context를 최적화하고, 외부 루프는 어떤 context function/skill이 좋은지 진화시킨다.
- Meta-Harness: 한 단계 더 내려가서 “무엇을 저장·검색·제시할지 결정하는 코드”를 최적화한다. 실행 기록과 후보 harness는 파일 시스템에 저장되고, coding agent가 그 기록을 읽어 새 harness 후보를 만든다.
교훈은 분명하다. 하네스 설계가 실행 가능한 search space가 되면, 강한 coding agent는 사람이 쓰는 설계 공간을 직접 탐색할 수 있다.
Workflow design: 손으로 짠 파이프라인에서 workflow search로
Auto-research 쪽에서는 이미 expert-designed harness가 상당한 연구 루프를 자동화한다. 예시는 다음과 같다.
- AI Scientist: 아이디어 제안, 코드 작성, 실험 실행, 결과 분석, 논문 작성, peer review를 파이프라인화한다.
- ScientistOne: 모든 주장(citation, number, method, conclusion)이 evidence source에 연결되도록 Chain-of-Evidence를 핵심 제약으로 둔다.
- Autodata: challenger, weak solver, strong solver, verifier/judge를 조합해 “강한 solver는 풀고 약한 solver는 못 푸는” 난이도의 학습·평가 데이터를 만든다.
- ADAS: agentic workflow 설계 자체를 최적화 문제로 보고, meta-agent가 새 workflow를 코드로 제안하고 평가 archive에 추가한다.
- AFlow: agentic workflow를 graph로 표현하고 MCTS로 후보 workflow를 탐색한다.
수작업 workflow 설계도 유효하지만, workflow 설계 공간이 너무 크기 때문에 결국 검색/진화/평가 루프가 중요해진다는 것이 원문의 방향성이다.
Self-improving harness: 개선 대상은 prompt가 아니라 실행 코드다
Context engineering이나 workflow design만으로는 부족하다. 하네스 전체의 설계 공간—context-management logic, workflow, permission, tool interface, memory, evaluator—를 함께 탐색해야 한다. 원문은 이 지점에서 “code”를 보편 언어로 본다. 하네스는 prompt, tool call, subagent, control flow, memory, workflow logic이 함께 동작하는 프로그램이며, LLM이 그 코드를 최적화할 수 있으면 손으로 쓴 prompt보다 훨씬 큰 설계 공간에 접근한다.
중요 사례는 다음과 같다.
- STOP(Self-Taught Optimizer): solution 자체가 아니라 improver function을 개선한다. GPT-4에서는 반복 개선이 평균 성능을 높였지만, GPT-3.5/Mixtral 같은 약한 모델에서는 성능이 악화되었다. 재귀 구조만으로는 충분하지 않고 base model capability가 필요하다는 경고다.
- Self-Harness: weakness mining → bounded harness proposal → proposal validation 루프를 사용한다. 실패 trace에서 verifier-grounded failure pattern을 추출하고, editable surface와 passing behavior, 이전 실패 edit를 함께 보며 좁은 harness edit를 제안한다. 후보는 held-in/held-out regression test를 통과해야만 merge된다.
- DGM(Darwin Gödel Machine): 고정 모델 아래에서 agent가 자기 harness codebase를 수정하며 새 agent branch를 만든다. 실험에서는 단순 초기 harness에서 시작해 SWE-bench Verified와 Polyglot에서 handcrafted agent와 유사하거나 더 나은 성능을 보였다.
여기서 가장 중요한 안전 조건은 editable surface를 좁게 설계하고, permission/security/evaluator 계층은 self-edit loop 바깥에 두는 것이다. 하네스가 OS나 권한 경계를 스스로 수정하게 만들면 추상화 경계가 깨진다.
Evolutionary search와 joint optimization
하네스 탐색은 search space가 크고 기울기로 직접 최적화하기 어렵지만 후보 평가는 가능한 경우가 많아 evolutionary search와 잘 맞는다. 원문은 Promptbreeder, GEPA, AlphaEvolve, ThetaEvolve, ShinkaEvolve, DGM/Hyperagents를 한 계열로 묶는다.
- Promptbreeder/GEPA는 prompt와 mutation/reflection prompt를 진화시킨다.
- AlphaEvolve는 후보 프로그램 pool을 유지하고 LLM이 diff를 만들어 개선한다.
- ShinkaEvolve는 parent sampling, code-novelty rejection, meta-scratchpad로 sample efficiency와 diversity를 개선한다.
- DGM은 solution program이 아니라 editable harness-code repository 자체를 진화시킨다.
다만 이런 방법은 자동 평가가 쉽고 fitness를 정량화하기 좋은 영역—GPU kernel, algorithm contest, scheduling, 일부 coding benchmark—에서 강하다. 평가가 느리거나 모호하거나 heuristic-heavy인 영역에서는 compute efficiency와 효과가 불확실하다.
모델 가중치 업데이트까지 포함하는 시도로 **SIA(Self Improving AI with Harness & Weight Updates)**도 소개된다. Meta-Agent가 harness를 제안하고, Task-Specific Agent가 작업을 실행하며, Feedback-Agent가 harness update와 weight update 중 무엇을 할지 선택한다. 원문은 방향은 흥미롭지만 실험 설계의 confound가 있어 evidence는 provisional하다고 평가한다.
남은 병목
원문이 정리한 full RSI로 가는 병목은 다음과 같다.
- Weak and fuzzy evaluators — 연구 taste, novelty, 장기 scientific value처럼 빠르고 정확한 verifier가 없는 목표는 self-improvement loop가 다루기 어렵다.
- Context and memory lifecycle — 자율성이 커질수록 메모리도 커진다. 유용한 하네스는 장기 과업 성공률을 높이면서도 memory lifecycle을 관리해야 한다.
- Negative results — 문헌은 성공 사례에 편향되어 있고, LLM도 실패를 포기·기록하는 판단이 약할 수 있다. 실패 시도와 negative result를 보존해야 search space를 줄일 수 있다.
- Diversity collapse — evolutionary/RL 루프는 현재 reward가 높은 패턴으로 수렴하기 쉽다. open-ended research에서는 처음에는 낮게 평가되는 경로가 장기적으로 중요할 수 있다.
- Reward hacking — unit test, judge model, benchmark score 등 어떤 신호든 최적화 대상이 되면 해킹될 수 있다.
- Long-term success — 코딩 에이전트는 단기 task completion에는 강해지고 있지만, repo maintainability, ownership boundary, migration cost, backwards compatibility, future debugging burden까지 최적화하기 어렵다.
- The role of humans — 인간은 loop에서 제거되는 것이 아니라 더 높은 abstraction level에서 적절한 시점에 oversight와 steering을 제공해야 한다.
위키/에이전트 설계 관점에서의 메모
- 장기 작업에서는 “컨텍스트를 더 길게”보다 상태를 파일화하고 재진입 가능하게 만드는 것이 우선이다.
- self-improvement loop를 만들 때는 실패 trace를 “표면 증상(timeout, missing artifact)”이 아니라 인과적 실패 메커니즘으로 저장해야 한다.
- 하네스 edit는 bounded proposal이어야 하며, passing behavior를 보존한다는 회귀 조건이 있어야 한다.
- evaluator, permission control, security boundary는 self-edit loop 바깥에 두어야 한다.
- benchmark 성능만으로 실제 자동 연구 능력을 판단하면 안 된다. 검증 가능성, negative result 보존, 장기 유지보수 비용까지 포함해야 한다.
관련 노트
- harness — 에이전트 하네스 개념과 기존 사례
- moc-ai-agents-harness — 하네스와 자가개선 루프 MOC
- loop-engineering — 루프형 에이전트 운영/검증 설계
- 2026-05-24-agent-harness-engineering-survey — Agent Harness Engineering 서베이
- 2026-07-02-loop-engineering-value-overengineering — Loop Engineering의 가치와 과설계 기준