원문: Agent Frameworks, Runtimes, and Harnesses- oh my!

Oct 25, 2025

우리가 유지하고 있는 오픈 소스 패키지에는 여러 가지가 있습니다. 가장 큰 것은 LangChainLangGraph이며, DeepAgents도 점점 인기를 얻고 있습니다. 저는 이들을 설명하기 위해 서로 다른 용어를 사용하기 시작했습니다: LangChain은 에이전트 프레임워크(agent framework), LangGraph는 에이전트 런타임(agent runtime), DeepAgents는 에이전트 하네스(agent harness)입니다. 다른 사람들도 이러한 용어를 사용하고 있지만, 프레임워크 vs 런타임 vs 하네스에 대한 명확한 정의는 아직 없는 것 같습니다. 이 글은 이러한 개념들을 정의하려는 시도입니다. 여전히 모호하고 중복되는 부분이 있음을 인정하며, 여러분의 피드백을 환영합니다!

에이전트 프레임워크 (LangChain)

LLM을 활용한 개발을 돕는 대부분의 패키지를 저는 에이전트 프레임워크로 분류합니다. 이들이 제공하는 주요 가치는 추상화(abstractions)입니다. 이러한 추상화는 세상을 바라보는 멘탈 모델을 나타냅니다. 이러한 추상화는 이상적으로 시작을 더 쉽게 만들어야 합니다. 또한 애플리케이션을 구축하는 표준 방법을 제공하여 개발자들이 프로젝트에 쉽게 합류하고 이동할 수 있게 합니다. 추상화에 대한 불만은 제대로 구현되지 않으면 내부 작동 방식을 모호하게 만들고 고급 사용 사례에 필요한 유연성을 제공하지 못할 수 있다는 것입니다.

우리는 LangChain을 에이전트 프레임워크로 생각합니다. 1.0 버전의 일환으로 우리는 추상화에 대해 많은 시간을 들여 고민했습니다 - 구조화된 콘텐츠 블록, 에이전트 루프, 미들웨어(middleware)에 대한 추상화 등입니다(미들웨어는 표준 에이전트 루프에 유연성을 더한다고 생각합니다). 제가 에이전트 프레임워크로 간주하는 다른 예로는 Vercel의 AI SDK, CrewAI, OpenAI Agents SDK, Google ADK, LlamaIndex 등이 있습니다.

에이전트 런타임 (LangGraph)

프로덕션 환경에서 에이전트를 실행하려면 에이전트를 위한 런타임이 필요합니다. 이 런타임은 보다 인프라 수준의 고려사항을 제공해야 합니다. 가장 먼저 떠오르는 것은 내구성 실행(durable execution)이지만, 스트리밍 지원, human-in-the-loop 지원, 스레드 수준 영속성 및 크로스 스레드 영속성과 같은 고려사항도 여기에 포함됩니다.

LangGraph를 구축할 때, 우리는 처음부터 프로덕션 준비가 된 에이전트 런타임을 만들고자 했습니다. LangGraph 구축 배경에 대한 우리의 사고 과정은 여기에서 자세히 읽을 수 있습니다. 이와 가장 유사하다고 생각하는 다른 프로젝트로는 Temporal, Inngest 및 기타 내구성 실행 엔진이 있습니다.

에이전트 런타임은 일반적으로 에이전트 프레임워크보다 더 낮은 수준이며 에이전트 프레임워크의 기반이 될 수 있습니다. 예를 들어, LangChain 1.0은 LangGraph가 제공하는 에이전트 런타임을 활용하기 위해 LangGraph 위에 구축되었습니다.

에이전트 하네스 (DeepAgents)

DeepAgents는 우리가 작업하고 있는 최신 프로젝트입니다. 에이전트 프레임워크보다 더 높은 수준이며, LangChain 위에 구축되었습니다. 기본 프롬프트, 도구 호출에 대한 의견이 반영된 처리, 계획을 위한 도구, 파일 시스템 접근 등을 추가합니다. 단순한 프레임워크 이상으로, 배터리가 포함된 상태로 제공됩니다.

DeepAgents를 설명하는 또 다른 방법은 “범용 버전의 Claude Code”입니다. 공정하게 말하자면, Claude Code도 에이전트 하네스가 되려고 노력하고 있습니다 - 그들은 Claude Agent SDK를 그러한 방향으로의 한 단계로 출시했습니다. Claude Agent SDK 외에는 현재 범용 에이전트 하네스가 많지 않다고 생각합니다. 하지만 모든 코딩 CLI들이 어떤 면에서는 에이전트 하네스이며 범용일 수 있다고 주장할 수도 있습니다.

언제 무엇을 사용해야 할까

차이점을 요약하고 각각을 언제 사용해야 하는지 이야기해봅시다:

이제, 경계선이 모호하다는 것을 기꺼이 인정합니다. 예를 들어, LangGraph는 런타임이자 프레임워크로 가장 잘 설명될 수 있습니다. “에이전트 하네스”는 제가 최근에 더 많이 사용되는 것을 보기 시작한 용어입니다(제가 만든 용어는 아닙니다). 아직 이들 중 어느 것에 대해서도 명확한 정의가 있다고 생각하지 않습니다.

초기 단계의 분야에서 개발하는 재미 중 일부는 사물에 대해 이야기하는 멘탈 모델을 만드는 것입니다. 우리는 LangChain이 LangGraph와 다르고, DeepAgents가 둘 다와 다르다는 것을 알고 있습니다. 우리는 이들을 각각 프레임워크, 런타임, 하네스로 설명하는 것이 유용한 구분이라고 생각하지만, 항상 그렇듯이 여러분의 피드백을 환영합니다!