개요

ICLR 2026에서 한 연구자가 던진 질문 하나가 HuggingFace 블로그 포스트의 출발점이 됐다. “에이전트 맥락에서 ‘harness’와 ‘scaffold’가 뭔가요? 컨퍼런스에서 설명을 여러 번 들었는데 하나로 수렴이 안 되더라고요.” AI 에이전트 분야는 기술보다 어휘가 더 빠르게 진화하고 있다. HuggingFace가 현장에서 혼용되는 핵심 용어를 정리했다.


핵심 요약

  • Model: LLM 자체. 메모리 없고 루프 없음. 한 번 프롬프트 받고 멈춤
  • Scaffolding: 모델 주변의 행동 정의 레이어. 시스템 프롬프트·툴 설명·컨텍스트 관리
  • Harness: 실행 레이어. 모델 호출·툴 콜 처리·종료 결정
  • Agent = Model + Harness. 스캐폴딩까지 포함해 동작
  • Context Engineering: 컨텍스트 윈도우에 무엇을 넣을지 설계하는 일
  • Sub-agent: 다른 에이전트가 호출하는 에이전트. 독립적으로 추론하고 결과만 반환

본문

왜 용어 정리가 필요한가

AI 에이전트 분야는 RL(강화학습) 개념이 LLM 세계로 넘어오면서 용어가 뒤섞였다. Claude Code, Codex, Cursor 같은 제품들은 같은 단어를 다른 의미로 쓰기도 하고, 하나의 개념에 여러 이름을 붙이기도 한다. HuggingFace는 “올바른 어휘를 강제하는 게 아니라 토론을 따라가기 쉬운 실용적 멘탈 모델을 제공하는 것"이 목표라고 밝혔다.

Model

LLM 자체다. 텍스트를 받아 텍스트를 내놓는다. Claude, Qwen, GPT, Kimi, DeepSeek 등이 이에 해당한다. 모델 자체에는 호출 간 메모리가 없고, 루프도 없다. 툴을 사용하겠다는 의도는 표현할 수 있지만 실제 실행은 하네스가 한다. 스캐폴딩과 하네스로 감싸면 에이전트가 된다.

Scaffolding (스캐폴딩)

모델 주변의 행동 정의 레이어다. 시스템 프롬프트, 툴 설명, 모델 응답 파싱 방식, 스텝 간 기억 관리(컨텍스트 관리)가 여기에 해당한다. 모델이 세계를 어떻게 보고 행동할지를 결정한다. 훈련 중에도, 추론 중에도 적용된다.

Claude Code 공식 문서는 “Claude Code serves as the agentic harness around Claude"라고 직접 밝힌다. 제품 레벨에서는 모델 외 모든 것이 하네스다. 스캐폴딩과 하네스의 구분은 훈련 파이프라인처럼 둘을 분리해서 추론할 때 가장 의미 있다.

Harness (하네스)

에이전트 내부의 실행 레이어다. 모델을 호출하고, 툴 콜을 처리하고, 언제 멈출지 결정한다. 하네스가 에이전트를 실제로 돌아가게 만드는 부분이다. 스캐폴딩이 모델이 무엇을 보고 작업하는지를 정의한다면, 하네스는 그 실행을 담당한다.

하네스 엔지니어링은 이 레이어를 잘 설계하는 규율이다. 에이전트가 언제 멈춰야 하는지, 에러를 어떻게 처리하는지, 어떤 가드레일이 필요한지를 결정한다. 여러 에이전트를 조율하는 상위 컨트롤러는 오케스트레이터라고 부른다. 하네스가 모델을 실행 루프로 구동한다면, 오케스트레이터는 에이전트들을 하나의 단위로 관리한다.

Agent (에이전트)

RL에서 온 개념이다. 원래는 관측값을 받아 행동을 반환하는 함수다. LLM 세계에서는 확장됐다. 에이전트는 모델 + 그것이 행동할 수 있게 하는 모든 것이다. 단순히 응답하는 게 아니라 루프 안에서 정보를 받고, 결정하고, 행동한다.

커뮤니티에서는 Agent = Model + Harness로 요약한다. Claude Code, Codex, Cursor 같은 제품들은 특정 하네스 위에 특정 모델을 얹은 것이다. 같은 모델을 써도 하네스가 다르면 경험이 전혀 다를 수 있고, 같은 하네스에 더 나은 모델을 넣어도 마찬가지다. 모델·하네스·제품은 세 가지 다른 개념이다.

Context Engineering (컨텍스트 엔지니어링)

에이전트의 컨텍스트 윈도우에 무엇을 넣을지 설계하는 일이다. 시스템 프롬프트, 툴 설명, 대화 이력, 검색된 지식 등이 대상이다. 모델이 각 스텝에서 무엇을 보는지를 결정하며, 이전 턴이 이후 호출에 영향을 미치므로 하네스가 실행 내내 능동적으로 관리한다.

훈련과 추론에서 실수의 대가가 다르다. 훈련 중에는 모델이 보는 것이 학습 내용을 결정한다. 잘못되면 재훈련이다. 추론 중에는 그냥 텍스트다. 프롬프트를 바꾸고 재배포하면 된다.

메모리도 이 범주다. 단기 메모리는 단일 실행 중 컨텍스트 윈도우에 있는 것(대화 이력, 툴 결과, 이전 추론)이고, 장기 메모리는 세션을 넘어 외부에 저장됐다가 필요할 때 컨텍스트로 주입된다.

Policy (정책)

에이전트가 따르는 행동 방식이다. 어떤 상황에서든 각 행동을 취할 확률을 정의한다. LLM 시스템에서 정책의 일부는 모델 가중치에 학습돼 있지만, 스캐폴딩과 하네스에도 영향을 받는다. 같은 모델도 프롬프트·툴·메모리·실행 루프에 따라 전혀 다르게 행동할 수 있다.

정책은 에이전트가 아니다. 정책은 행동을 정의하고, 에이전트는 환경에서 실제로 행동하는 전체 시스템이다.

Skills & Sub-agents

스킬은 멀티스텝 태스크를 수행할 수 있게 하는 재사용 가능한 지식 패키지다. 툴이 행동(“이 명령을 실행해”)이라면, 스킬은 목표 달성에 필요한 모든 것을 묶는다(“이 버그를 조사하고, 가설을 세우고, 수정안을 작성해”). 에이전트 간에 이식 가능하며 필요 시 로드된다.

서브에이전트는 다른 에이전트가 특정 서브태스크를 처리하도록 호출하는 에이전트다. 자체 모델과 스캐폴드를 갖고 독립적으로 추론하며 결과만 반환한다. 툴(함수 호출)이나 스킬(패키징된 지식)과 달리, 서브에이전트는 스스로 추론하고, 툴을 쓰고, 추가 서브에이전트를 호출할 수 있다.


실무자가 볼 핵심 포인트

  • 용어 통일이 팀 소통의 기반: Claude Code를 “하네스"로 부르는 사람과 “에이전트"로 부르는 사람이 같은 팀에 있으면 설계 논의가 엉킨다. 이 용어집을 기준점으로 쓸 수 있다.
  • 같은 모델, 다른 경험: 하네스 설계가 다르면 동일 모델로도 전혀 다른 제품이 나온다. 모델 교체보다 하네스 최적화가 더 빠른 개선일 수 있다.
  • 컨텍스트 엔지니어링의 비대칭 리스크: 훈련 중 컨텍스트 설계 실수는 재훈련이고, 추론 중 실수는 프롬프트 수정이다. 리소스 배분을 다르게 가져가야 한다.
  • 스킬 vs 서브에이전트 선택: 단순 반복 작업은 스킬로, 독립적 판단이 필요한 복잡한 서브태스크는 서브에이전트로 설계하는 것이 원칙이다.
  • Policy ≠ Agent: 정책(행동 규칙)과 에이전트(전체 시스템)를 혼동하면 RL 기반 에이전트 훈련 논의에서 길을 잃는다. 구분해서 쓰는 습관이 필요하다.

원문 출처