메뉴
HN
Hacker News • 33일 전

에이전트는 모델이 아니다

IMP
7/10
핵심 요약

AI 에이전트 시스템은 모델(Model), 추론 서비스(Inference Service), 하네스(Harness) 세 층위로 구성되며, 흔히 혼용되는 '에이전트'와 '모델'은 엄연히 다른 개념이라는 용어 정리 글입니다. MCP나 Skills 같은 기능은 모델이 아니라 하네스 계층에 속하며, 같은 모델도 하네스에 따라 다르게 동작한다는 점을 Claude Desktop, Cursor 등 실제 사례로 설명합니다.

번역된 본문

사람들이 '에이전트(agent)'와 '모델(model)'이라는 단어를 서로 바꿔가며 사용하는 것을 자주 접합니다. Claude를 둘 중 어느 쪽으로 부르기도 하죠. 그래서 우리가 사용하는 용어에 대한 간단한 참고 자료를 작성하면 더 정확한 대화를 나누는 데 도움이 될 것 같았습니다. 먼저 전체 그림을 보여드리겠습니다.

[에이전트 시스템 → 하네스(Harness) → 추론 서비스(Inference Service) → 모델(Model)]

에이전트 시스템은 여러 계층으로 구성됩니다. 그 핵심에는 모델이 있습니다. Sonnet, Opus, Gemini 같은 것들이죠. 이들은 방대한 양의 텍스트와 데이터로 학습되었으며, 결국 특정한 방식으로 연결된 거대한 부동소수점 숫자들의 집합에 불과합니다.

최첨단 프론티어 모델은 우리 대부분이 로컬에서 전체 규모로 실행하기에는 계산 비용이 너무 많이 듭니다. 로컬 머신의 RAM보다 훨씬 더 많은 메모리가 필요하죠. 그래서 이를 실행할 다른 장소가 필요한데, 그것이 바로 추론 서비스(inference service)입니다. AWS Bedrock이나 Anthropic의 API 같은 서비스들이죠. 추론 서비스는 여러분의 API 호출을 받아 모델에 전달하고, 사용량에 따른 요금도 추적합니다. 이 서비스는 추론 엔진에서 모델을 실행하지만 여전히 꽤 기본적인 수준입니다. 텍스트를 넣으면 텍스트가 나오는 것이죠. ChatGPT가 처음 출시되었을 때의 모습을 떠올리면 됩니다.

그 상호작용 계층, 즉 API와 대화할 수 있는 좋은 방법을 제공하는 것을 하네스(harness)라고 합니다. 가장 단순한 형태로는 그저 가벼운 래퍼(wrapper)일 뿐입니다. 알고 있을 만한 다른 하네스로는 Claude Desktop이나 Claude CLI가 있습니다.

그리고 여기서 흥미로워집니다. MCP나 Skills 같은 기능은요? 이들은 주로 하네스 계층의 일부입니다. 모델은 MCP 서버나 Skill에 대해 본질적으로 알지 못합니다. 어떤 컨텍스트와 도구를 모델에 노출할지는 하네스가 결정하죠.

이 모든 것을 종합하면, 에이전트 시스템은 입력을 처리하기 위한 도구와 로직의 집합인 하네스가, 모델을 실행하는 추론 서비스를 호출하는 것입니다. 그게 전부입니다. 이것이 전체 스택입니다.

실제 사례

여러분이 사용하고 있을 법한 몇 가지 일반적인 도구들의 스택 구성은 다음과 같습니다.

에이전트 시스템 하네스 추론 서비스 모델
Claude Desktop Claude Desktop (UI + MCP + 로컬 로직) Anthropic의 추론 서비스 Sonnet / Opus / Haiku
Claude CLI Claude CLI (도구 파싱 + 파일 I/O) Anthropic의 추론 서비스 Sonnet / Opus / Haiku
Cursor Cursor 에디터 (컨텍스트 조립 + 도구 라우팅) Cursor의 추론 계층 (다양한 제공자) Sonnet / GPT / Gemini 등
ChatGPT ChatGPT UI (히스토리 + 오케스트레이션) OpenAI의 추론 서비스 GPT 모델
LangChain으로 직접 만든 에이전트 여러분의 LangChain 코드 (프롬프트 템플릿 + 도구 정의) 선택한 제공자 (Bedrock, OpenAI 등) 선택한 모델

패턴이 보이시나요? 하네스가 여러분의 로직이 있는 곳입니다. 추론 서비스는 모델을 실행하는 호스팅 계층입니다. 모델은 텍스트를 생성하는 수학적 존재입니다. Sonnet 같은 동일한 모델이라도 완전히 다른 하네스를 가진 여러 에이전트 시스템에서 사용될 수 있으며, 하네스가 입력을 구성하고 출력을 해석하기 때문에 각각 다르게 동작합니다.

비유를 좀 더 확장해 보자면

집을 짓는다고 상상해 봅시다. 현장에 건설 인부들이 있습니다. 이들은 설계도를 받아 자재를 주문하고, 장비를 다루고, 작업 순서를 결정합니다. 실제로 땅을 만질 수 있는 유일한 사람들이죠. 콘크리트를 붓고, 못을 박는 일 등 말입니다. 하지만 뭔가 문제가 생겨 두뇌가 필요하면 건축가에게 연락합니다. 다만 건축가와 직접 대화할 수는 없고, 그들을 고용한 회사를 거쳐야 합니다. 회사는 일정 관리와 결제를 처리하죠. 그리고 건축가는 아주 까다롭습니다. 요구사항을 주면 종이 설계도를 돌려줄 뿐, 그 이상은 하지 않습니다.

인부가 바로 하네스입니다. 실제로 외부 세계와 접촉하고 건축가의 설계도를 행동으로 옮기는 부분이죠. 회사가 추론 서비스입니다. 물류와 비용을 처리하는 관문이죠. 그리고 건축가가 모델입니다. 순수하고, 제약되어 있으며, 자신의 좁은 영역에서는 탁월합니다.

따라서 Claude CLI 같은 것을 사용할 때, CLI가 하네스입니다. 이는 Anthropic의 추론 서비스를 사용하며, 그 서비스가 Sonnet과 Opus 모델을 실행합니다.

원문 보기
원문 보기 (영어)
I often hear people use the words agent and model interchangeably, referring to Claude as either one. So I thought it would be useful to write a quick reference on the terminology we use here, to help us have more precise conversations. Let’s start with a graphic that shows where we are headed. The Agent System Harness Inference service Model An agent system is made up of several layers. At its core is a model . Things like Sonnet, Opus, or Gemini. These are trained on vast amounts of text and data, and in the end, they are essentially big collections of floating point numbers wired together in a particular way. Frontier models are far too computationally expensive for most of us to run locally at full scale. They need way more RAM than most of us have on our local machines. So we need somewhere else to run them. That somewhere is an inference service . Services like AWS Bedrock or Anthropic’s API. The inference service takes your API calls, feeds them into the model, and also tracks pricing as you go. The service runs the model in an inference engine, but it is still pretty basic. Text in, text out. Think of how ChatGPT worked when it first launched. That interaction layer, the thing that gives you a nice way to talk to the API, is called a harness . In its simplest form, it is just a lightweight wrapper. Other harnesses you might know are Claude Desktop or Claude CLI. And this is where things get interesting. Features like MCP and Skills? They are primarily part of the harness layer. The model doesn’t inherently know about an MCP server or a Skill; the harness decides what context and tools to expose to it. So if you put all that together, an agent system is a harness, a set of tools and logic for processing inputs, that calls an inference service, which runs a model. That is it. That is the whole stack. Real world examples Here is how the stack breaks down for some common tools you might be using. Agent System Harness Inference Service Model Claude Desktop Claude Desktop (UI + MCP + local logic) Anthropic’s inference service Sonnet / Opus / Haiku Claude CLI Claude CLI (tool parsing + file I/O) Anthropic’s inference service Sonnet / Opus / Haiku Cursor Cursor editor (context assembly + tool routing) Cursor’s inference layer (various providers) Sonnet / GPT / Gemini / etc. ChatGPT ChatGPT UI (history + orchestration) OpenAI’s inference service GPT models Custom agent you build with LangChain Your LangChain code (prompt templates + tool definitions) Your chosen provider (Bedrock, OpenAI, etc.) Your chosen model Notice the pattern. The harness is where your logic lives. The inference service is the hosted layer that runs the model. The model is the mathematical thing that produces text. The same model, say Sonnet, can be used across multiple agent systems with completely different harnesses, and it will behave differently because the harness is shaping the inputs and interpreting the outputs. Time to torture a metaphor Let’s imagine we are building a house. We have a building crew on site. They take a blueprint, order materials, handle equipment, and decide sequencing. They are the only ones who can actually touch the ground. Pour concrete, hammer nails, that kind of thing. But if something comes up and they need brainpower, they call an architect. They can’t talk to the architect directly, though. They have to go through the firm that employs them. The firm handles scheduling and billing. And the architect is very particular. You give it a brief, it gives you back paper plans. Nothing more. The crew is the harness. They’re the part that can actually touch the outside world and turn the architect’s plans into actions. The firm is the inference service. The gateway that handles logistics and cost. And the architect is the model. Pure, constrained, and brilliant at its narrow job. So when you use something like Claude CLI, the CLI is the harness. It uses Anthropic’s inference service, which runs their models, Sonnet and Opus. One interesting implication: as models get smarter, they might make some of today’s harness logic, like Skills or MCP, less useful. The way we build harnesses now might not age well. The takeaway Let’s be explicit with our terms. Model - the mathematical function that transforms input tokens into output tokens. Inference service - the hosted service that runs the model and tracks usage. Harness - the logic that shapes inputs, interprets outputs, and touches the outside world. Agent system - all three working together. When we say “my model is doing this or that,” we are usually talking about what the harness is orchestrating. The models themselves are just these inscrutable mathematical objects that we get to call out to. And that distinction matters. Because if something goes wrong, or if we want to make things better, we need to know where to look. Is the model giving bad answers? Maybe it needs better context from the harness. Is it too slow or too expensive? That is probably the inference service or the compute underneath. Is it not using tools correctly? The harness is probably formatting them wrong or not parsing the responses properly. When you can name the layer, you can fix the layer. That is the whole point of being precise. It is not about being pedantic. It is about being able to improve things faster and more effectively. Symptom Likely layer Bad reasoning / knowledge Model or context supplied by harness Missing context Harness Tool isn’t available Harness / tool integration Tool call is malformed Harness or model Tool executes incorrectly Tool / harness Slow inference Inference infrastructure High cost Model choice / inference service Same model behaves differently Harness / context / tooling