LangChain · oxicode-sdk · Claude Agent SDK · pi — 한 렌즈로 읽는 에이전트 프레임워크
"LangChain도 에이전트 프레임워크, oxicode-sdk도 에이전트 프레임워크 — 대체 뭐가 다른가?" 이 페이지의 답은 제어 흐름의 소유권(control-flow ownership)이다. 누가 루프를 돌리고, 어디서 개입하며, 무엇이 내장돼 있는가 — 이 축 하나로 4대 SDK의 차이와 "챗봇엔 뭘 쓰고 자율 에이전트엔 뭘 쓸까"가 정리된다. 제품 단위 비교는 AI 프레임워크 비교 · CC · OMP · OpenClaw 비교 페이지와 상호 보완한다.
한 줄 정의 — 네 프레임워크의 자기소개
LangChain / LangGraph
Python · TS
프레임워크가 agent loop를 돌리고, 개발자는 middleware 훅으로 개입한다. 필요하면 LangGraph로 내려가 그래프를 직접 설계한다. 월 9천만 다운로드의 사실상 표준.
oxicode-sdk
Rust
루프는 하위 AgentLoop가 돌리지만, SDK 본체는 16개 port trait '계약' + 컴포지션 뼈대다. 권한·감사·비용·메모리를 제품이 구현해 끼워 넣는 제어 역전(hexagonal).
Claude Agent SDK
Python · TS
Claude Code의 에이전트 루프를 라이브러리로. query() 하나면 도구 실행·컨텍스트 관리·compaction을 SDK가 전부 처리 — "without yielding control back to your code".
pi (pi-ai · pi-agent-core · pi-coding-agent)
TypeScript
"There are many agent harnesses, but this one is yours." 3층 라이브러리(LLM API → 에이전트 루프 → 코딩 에이전트 CLI+SDK). 프레임워크가 아니라 순수 TS 부품.
핵심 프레임 — 제어 흐름의 소유권 4티어
모든 에이전트 시스템은 "에이전트 루프(모델→도구→결과→재호출)를 누가 소유하는가"로 정렬된다. 아래로 갈수록 자율성·편의성이 커지고, 루프를 내 손으로 고칠 수 있는 폭은 줄어든다.
| 티어 | 루프 소유자 | 개입 방식 | 대표 | 언제 |
|---|---|---|---|---|
| ① 루프 직접 구현 | 개발자 | Messages API 호출 → tool_use 파싱 → 실행 → append → 재호출을 전부 손으로 | Anthropic Client SDK · OpenAI SDK · Gemini SDK | 의존성 최소화 · 완전 제어 · 학습 목적 |
| ② 오케스트레이션 그래프 | 개발자가 토폴로지, 런타임이 실행 | node/edge/조건부 전이를 선언하면 런타임이 상태·재시도·체크포인트 관리 | LangGraph · Google ADK · CrewAI · LlamaIndex Workflows | 결정적 워크플로 · 승인/감독 파이프라인 · 장기 실행 프로세스 |
| ③ 임베딩 프레임워크 | 프레임워크 (개발자가 호출) | run()/prompt() 한 번 → 내부 다-턴 실행 → 훅(middleware·port·beforeToolCall)으로 개입 | LangChain create_agent · oxicode-sdk · pi-agent-core · OpenAI Agents SDK · Pydantic AI · Vercel AI SDK | 내 제품/서비스 안에 에이전트를 넣을 때 (챗봇 · 백오피스 · 임베디드) |
| ④ 자율 루프 harness | harness (완결) | query()/session.prompt()만 던진다. 도구·샌드박스·compaction·세션까지 내장, options로만 조절 | Claude Agent SDK · pi-coding-agent SDK · LangChain Deep Agents | 파일·셸·웹을 다루는 자율 코딩/리서치 에이전트 |
LangChain 공식도 같은 스펙트럼을 인정한다 — "LangGraph가 최대 결정성, LangChain 중간, Deep Agents 최대 agency. 자율성이 많을수록 잠재 가치는 높지만 신뢰성은 떨어진다." (deep-agents-vs-langchain-vs-langgraph, 2026-08-06)
같은 질문, 네 가지 답 — "hello, agent"
같은 작업을 네 SDK로 각각 부르는 모습. 모양은 닮았다(진입 1번 + 소비) — 차이는 무엇이 고정되고 무엇이 열려 있는가다.
LangChain 1.0
agent = create_agent(
model="openai:gpt-5",
tools=[retrieve_docs, query_erp], # RAG + SI 시스템 조회
middleware=[SummarizationMiddleware(),
HumanInTheLoopMiddleware()],
)
result = agent.invoke({"messages": [...]}) 루프는 create_agent가, 개입은 middleware가. 체크포인트(멀턴)는 LangGraph checkpointer가 담당.
docs.langchain.com/oss/python/releases/langchain-v1 oxicode-sdk
let oxi = OxicodeBuilder::new()
.with_builtins() // fs/inmem 참조 어댑터
.with_ports(my_ports()) // AccessGate·AuditTrail·CostTracker…
.api_key(env)?; // kernel_handle/engine_api.rs:1460 패턴
let mut agent = oxi.agent().build();
agent.run_streaming(prompt, |ev| match ev { ... })?; // AgentEvent 스트림 루프는 AgentLoop::run_loop(oxicode-agent/src/agent_loop/mod.rs:761)가. 개입은 port 교체와 emit(AgentEvent) 콜백으로.
oxios/crates/oxios-kernel/src/agent_runtime.rs:1110 Claude Agent SDK
async for msg in query(prompt="이 버그 찾아서 고쳐줘", options=Options(
allowed_tools=["Read", "Edit", "Bash"],
permission_mode="acceptEdits",
)):
print(msg) # SystemMessage → AssistantMessage → … → ResultMessage 루프의 모든 단계가 SDK 안에서 — "This happens without yielding control back to your code"(agent-loop 문서).
code.claude.com/docs/en/agent-sdk/agent-loop pi coding-agent SDK
const { session } = await createAgentSession({
sessionManager: SessionManager.inMemory(),
modelRuntime: await ModelRuntime.create(),
});
session.subscribe(ev => render(ev));
await session.prompt("What files are here?"); 루프는 Agent(pi-agent-core)가. 실행 중 개입은 steer()/followUp() 큐, 세션 트리 탐색은 navigateTree().
github.com/earendil-works/pi · packages/coding-agent/docs/sdk.md 4생태계를 같은 해부도로 — harness · framework · runtime · wire
LangChain이 3계층(harness→framework→runtime)을 공식화했는데, oxi와 pi도 같은 층위로 잘린다. 아래 대응은 본 페이지의 해석 렌즈다(사실 관계는 각 셀의 근거 참조).
| 계층 | LangChain 생태계 | oxi 생태계 | pi 생태계 | Anthropic |
|---|---|---|---|---|
| harness (완결 자율) | Deep Agents · create_deep_agent | oxios · oxicode CLI (제품) | pi-coding-agent CLI | Claude Code (제품) |
| framework (루프 + 계약) | LangChain create_agent + middleware | oxicode-sdk — 16 port + OxicodeBuilder | pi-agent-core — Agent + hooks | Agent SDK — query() + options |
| runtime (루프 · 상태) | LangGraph — StateGraph + checkpointer | oxicode-agent — AgentLoop + EventBus | runAgentLoop + session-backends(SQLite) | 세션 ~/.claude/*.jsonl + session_store |
| wire (provider) | langchain-{openai,anthropic,…} 파티션 | oxicode-ai — 145 providers(models.dev) | pi-ai — 30여 providers + TypeBox | Anthropic API 전용 |
읽을거리: 같은 층위가 존재해도 방향이 다르다 — LangChain은 위에서 아래로(완결 harness를 목표로 계층 추가), oxi는 아래에서 위로(와이어 → 루프 → 계약 → 제품), pi는 부품별 분리, Anthropic은 제품(Claude Code)을 SDK로 역수출했다.
4대 SDK 심층 카드
LangChain + LangGraph
포지션
범용 에이전트 프레임워크의 사실상 표준. v1.0에서 '하나의 루프(create_agent) + middleware + 필요 시 LangGraph 탈출구' 구조로 수렴했다. 레거시 체인(LLMChain 등)은 langchain-classic으로 축출.
제어 흐름 · 아키텍처
- LangGraph = 최대 결정성 — 개발자가 node/edge로 토폴로지를 직접 설계. "제약된 경로를 강제"한다.
- LangChain create_agent = 중간 — 코어 루프는 모델이 매 단계 결정(비결정적), 개발자는 middleware(before/after_agent, wrap_model_call, wrap_tool_call)로 결정적 단계를 주입.
- Deep Agents = 최대 자율 — 파일시스템·서브에이전트·요약 내장 오프더셸프 harness. "사실 핵심 LangChain 에이전트 + middleware 묶음"(공식).
강점
- 공급자 중립 — 모델/벡터스토어/로더 통합이 가장 넓음 (한국 SI 채택 1순위 이유)
- LangGraph durable runtime — checkpoint로 재개·타임트래블·HITL(interrupt)·fault tolerance
- 3계층(harness→framework→runtime) 단계적 확장, 서로 compose 가능
- v1.0부터 '2.0 전까지 breaking 없음' 약속 + standard content blocks(공급자 불문 동일 타입)
- LangSmith 관측·평가 + Agent Server 배포(자체호스팅 가능)
약점
- 래퍼 비대 — 실측(2026-02): Embeddings 773줄·설정 30개, VectorStore 1,296줄, 의존 16→34개, 설치 16→31MB
- 0.1→0.2→0.3→1.0 breaking change 이력으로 커뮤니티 신뢰 손상 (탈출 담론)
- 리키 추상화 — 장애 시 래퍼 계층 탐색 비용, 'SDK 직접 쓰면 다 보인다'는 비판
- LangSmith가 langchain-core 필수 의존 (결합 판매 논란)
- 한국어 특화 미지원 — PDF 형태소/표 추출, 청킹은 결국 직접 구현
적합 사용례
RAG 챗봇 · 기업 문서 Q&A · 멀턴 대화 + 승인 워크플로가 섞인 SI 프로젝트. 파이썬 인력 풀과 교육 자료가 가장 많다는 실무적 이유로도 선택된다.
langchain.com/blog/langchain-langgraph-1dot0 · deep-agents-vs-langchain-vs-langgraph · m.blog.naver.com/beyond-zero/224171603930 oxicode-sdk
포지션
'composition layer' SDK. LLM 호출은 oxicode-ai, 루프는 oxicode-agent가 소유하고, SDK는 16개 port trait 계약 + noop 기본값 + fs/inmem 참조 어댑터만 제공한다 — "어떤 port도 SDK 내부에서 구현하지 않는다"(ports/mod.rs:15-18). 제품(oxios)이 계약을 구현해 권한·감사·비용을 끼워 넣는다.
제어 흐름 · 아키텍처
- 루프 소유권 = oxicode-agent::AgentLoop::run_loop(agent_loop/mod.rs:761) — 진짜 while 루프, TurnStart→응답→도구→TurnEnd 반복.
- 소비자는 run 단위 호출 — agent.run()/run_streaming() 한 번이 내부 다-턴을 끝까지 수행, 매 턴은 emit(AgentEvent) 콜백으로 스트리밍(events.rs:165, #[non_exhaustive]).
- 개입 지점 = port 교체(AccessGate=권한 정책, HookRunner=셸 훅, ModelCatalog=모델 소스) + middleware 파이프라인 + KernelToolProvider로 네이티브 도구 주입(kernel_bridge.rs:100-140).
- 멀티에이전트 = AgentGroup(Pipeline/Parallel, agent_group.rs:81) · AgentSupervisor(계보·스냅샷·재시작, supervisor.rs:422) · MessageBus(directed/broadcast, message_bus.rs:117). A2A 구현은 oxios-kernel이 SDK MessageBus 위에 구축.
강점
- 계약과 구현의 완전한 분리 — port마다 noop 기본값으로 점진 도입 가능, 새 메서드는 default noop로 additive 진화(ports/mod.rs:33-36)
- 타입-세이프 이벤트 모델 — AgentEvent enum + 채널/mpsc/tokio 스트림 3종 전달
- 관측성 내장 — AuditTrail(blake3 해시 체인)·Tracer·CostTracker·EventStore
- 모델 카탈로그 — models.dev 기반 145 providers / 5,277 모델(model_db.rs:491)
- Rust — 단일 바이너리 배포, Send/Sync 경계 명시, 높은 동시성
약점
- Rust 진입장벽 + 한국어 자료 부재 — SI 현장 도입은 인력이 최대 병목
- LangSmith 같은 관측 SaaS·Agent Server 같은 배포 스토리는 없음 (oxios가 자체 구축)
- 벤더가 사내 프로젝트 — 커뮤니티 생태계·사례 공유 없음
- 루프 자체는 LangGraph 대비 그래프 오케스트레이션 표현력이 없음 (AgentGroup Pipeline/Parallel이 전부)
적합 사용례
Rust 백엔드에 에이전트를 임베딩하면서 권한(AccessGate)·감사(AuditTrail)·비용(CostTracker)·메모리(MemoryStore→oxibrain)를 전부 내 코드로 통제해야 하는 제품. oxios가 실제 사례(kernel_handle/engine_api.rs:1460에서 OxicodeBuilder 조립, agent_runtime.rs:1110에서 run_streaming).
oxicode/oxicode-sdk/src/ports/mod.rs · builder.rs · oxicode-agent/src/agent_loop/mod.rs:761 Claude Agent SDK
포지션
"Build production AI agents with Claude Code as a library" — Claude Code의 harness(루프+도구+컨텍스트 관리)를 그대로 파이썬/TS 라이브러리로 노출. 내부는 네이티브 Claude Code 바이너리를 서브프로세스로 띄워 돌린다.
제어 흐름 · 아키텍처
- query() 단일 진입점 — prompt와 options만 주면 SystemMessage → AssistantMessage → UserMessage → … → ResultMessage 스트림을 yield.
- 루프의 툴 실행·결과 피드백은 "코드로 제어를 돌려주지 않고" SDK 안에서 완결. 제한은 max_turns / max_budget_usd뿐.
- 개입은 전부 options — 권한 모드 6종(default/acceptEdits/plan/dontAsk/auto/bypassPermissions) + can_use_tool 콜백 + hooks(PreToolUse 등) + setting_sources
- 내장 도구 Read/Edit/Write/Glob/Grep/Bash/Web + 오케스트레이션 Agent(서브에이전트, 컨텍스트 격리·병렬) + Skill + ToolSearch
- Anthropic Client SDK 대비: Client SDK는 "tool loop를 직접 구현" — Agent SDK가 그 루프를 은닉하고 옵션으로만 제어하게 한 것이 본질 차이.
강점
- 가장 완결된 harness — 컨텍스트 관리(compaction 자동 요약), 세션(resume/fork), 파일 체크포인트까지 내장
- 샌드박스(network 도메인 허용/거부, bubblewrap) + 권한 분류기(auto 모드) — 자율성과 안전장치를 동시에
- 인프로세스 MCP 서버(create_sdk_mcp_server) — 서브프로세스 없이 커스텀 툴 등록
- 정체성이 제품과 동일 — Claude Code의 개선이 그대로 SDK로 흘러듦
약점
- Anthropic 전용 — 모델 중립성 없음. 가격·정책이 벤더에 결합
- pre-1.0 — 실험 API 제거 이력(V2 session API 0.3.142에서 삭제), Claude Code 버전 의존 동작 변경
- 루프 내부를 열 수 없음 — 토폴로지 변경·도메인 특화 재작성은 불가능(옵션의 범위 내에서만)
- TS/Python 외 언어는 CLI 서브프로세스(claude -p) 우회
적합 사용례
코딩 에이전트·리서치 에이전트·이메일 처리 등 '파일·셸·웹을 다루는 자율 작업'을 최소 코드로 프로덕션화할 때. 자체 harness를 설계할 필요 없이 확장 계층(skills·MCP·hooks·subagents)만 얹으면 됨.
code.claude.com/docs/en/agent-sdk/overview · agent-loop · python pi — pi-ai · pi-agent-core · pi-coding-agent
포지션
"There are many agent harnesses, but this one is yours." 3층 라이브러리: pi-ai(30여 provider 와이어 정규화 + TypeBox 타입 안전 툴) → pi-agent-core(상태 있는 Agent + 루프) → pi-coding-agent(CLI + createAgentSession SDK). 프레임워크가 아니라 조립 부품 — 코어에 MCP도, 권한 시스템도 없다.
제어 흐름 · 아키텍처
- 저수준 — new Agent({...}) + prompt()/continue()/waitForIdle()/abort() · hooks: beforeToolCall, afterToolCall, shouldStopAfterTurn, prepareNextTurn, transformContext
- 고수준 — createAgentSession({ sessionManager, modelRuntime }) → session.prompt()/steer()/followUp()/compact()/navigateTree() — 세션 트리 탐색·모델 핸드오프 포함
- 독특: steer()/followUp() — 실행 중에 개입 메시지를 큐에 넣는 인터럽트 성격의 API
- MCP는 서드파티(pi-mcp-adapter) — 도구 정의 전부를 올리는 대신 프록시 툴 1개(~200 tokens)로 게으른 실행. 저자 Mario Zechner는 "MCP 없이 CLI 도구와 코드로 충분하다"는 입장
강점
- 와이어 정규화 품질 — anthropic-messages/openai-responses/completions를 공통 Message/toolCall 도메인으로, 부분 인자 스트리밍 포함
- 계층별 독립 설치 — pi-ai만 써서 멀티벤더 LLM 게이트웨이로도 사용 가능
- 임베딩 난이도 최저 — createAgentSession 몇 줄로 세션·컴팩션·트리 탐색 확보
- 확장 계층(self-extensible) — extensions/skills를 TS 코드로 바인딩
약점
- 'pi-sdk' 단일 패키지가 없어 진입 시 3층 구분 필요
- 코어에 MCP·권한·샌드박스 없음 — "runs with the permissions of the user", 경계는 컨테이너가 사용자 몫
- 원격 계층(client/server/protocol)은 '실험적, 호환 보장 없음'
- 버전 회전 빠름(0.8x) — API 변경 리스크
적합 사용례
TS 코드베이스에 벤더 중립 에이전트를 직접 조립할 때 — 자체 UI·자동화 파이프라인·커스텀 harness. 이 사이트를 만든 OMP(Oh My Pi)가 pi를 harness로 쓰는 것도 같은 맥락이다.
github.com/earendil-works/pi · packages/coding-agent/docs/sdk.md · mariozechner.at (What if you don't need MCP at all) 시나리오별 선택 가이드 — 무엇을 만들 때 무엇을 쓰나
"어떤 게 더 좋은 프레임워크냐"는 잘못된 질문이다. 요구되는 제어 흐름의 위치가 프레임워크를 결정한다.
① SI 기업 챗봇 — 시선아이티 케이스
RAG(사내 문서) + 멀턴 대화 + 내부 시스템 연동(ERP·DB 조회) + 승인 워크플로 + 인수인계 용이성. 계획서의 "키워드 매칭을 넘어 의도·문맥 파악" = LLM tool-calling.
구성 패턴
- create_agent(model, tools=[retriever_tool, query_si_api], middleware=[SummarizationMiddleware, HumanInTheLoopMiddleware])
- 멀턴 = compile(checkpointer=PostgresSaver) + thread_id로 대화 상태 영속 — 서버 재시작에도 이어서
- 배포 = Agent Server(REST, 영속성 자동) 또는 자체호스팅, 관측 = LangSmith(자체 VPC 가능)/Langfuse
- TS 풀스택이면 Vercel AI SDK v6 — useChat + ToolLoopAgent + needsApproval(승인) 동일 구성
왜
벡터스토어·로더 통합이 가장 넓고(다중 데이터 소스), 모델 중립(교체 잦은 SI 특성), checkpoint·HITL가 내장. 파이썬 인력 풀과 한국어 자료도 최다 — 유지보수 인수인계까지 생각하면 실무 기본값.
대안 — oxicode-sdk는 Rust 백엔드·단일 바이넌리 배포·성능 예산이 요구될 때로 한정. Claude Agent SDK는 Anthropic 결합 때문에 SI 표준으로는 부적합.
② 제품 임베디드 에이전트 — 높은 통제
내 제품 안에 에이전트를 넣되 권한·감사·비용을 내 정책으로 통제. 도구는 사내 네이티브(exec·memory·browser).
구성 패턴
- OxicodeBuilder::new().with_ports(...) — AccessGate(Allow/Deny/RequireApproval)로 도구 단위 권한, AuditTrail(blake3 체인)로 감사, CostTracker로 예산
- KernelToolProvider::register_tools로 사내 도구 주입(kernel_bridge.rs:100-140)
- agent.run_streaming(prompt, emit) — AgentEvent로 매 턴 관측, 필요시 EventBus로 확산
왜
hexagonal 계약이 '프레임워크가 주는 기능'이 아니라 '내가 구현하는 정책'으로 만든다. noop 기본값으로 점진 도입 가능. oxios가 이 패턴의 실제 사례.
대안 — Python이면 Pydantic AI(타입 안전 + Logfire)가 가장 가까운 대응물.
③ 자율 코딩 · 리서치 에이전트
파일 읽고·고치고·셸 실행하고·웹 검색하는 장기 실행 에이전트. 컨텍스트 관리(compaction)와 샌드박스가 생존 조건.
구성 패턴
- query(prompt, options) — allowed_tools로 표면 제한, permission_mode='plan'으로 탐색 먼저 → 'acceptEdits'로 실행
- 서브에이전트 — AgentDefinition으로 병렬 리서처(컨텍스트 격리), 결과만 상위로
- hooks(PreToolUse)로 위험 명령 차단, sandbox.network.allowed_domains로 외부 통제
- pi로 같은 것 — createAgentSession + steer()로 실행 중 개입, 단 샌드박스는 컨테이너 자체 구축
왜
harness가 루프·컨텍스트·도구를 완결 — 개발자는 정책(options)만 설계. 4티어 중 구현량이 압도적으로 적다.
대안 — LangChain Deep Agents가 같은 포지션(파일시스템·서브에이전트·요약 내장) — Python 진영 선택지.
④ 결정적 엔터프라이즈 워크플로
결재·승인·단계별 검증 파이프라인. 누가 언제 개입하는지 경로가 고정돼야 하고 감사 가능해야 함.
구성 패턴
- StateGraph로 node(에이전트·결정적 코드 혼합) + 조건부 edge 선언 — '제약된 경로 강제'
- interrupt()로 승인 대기, checkpointer로 중단·재개·타임트래블
- GCP 환경이면 ADK Workflow Runtime — routing/fan-out/retry/HITL 그래프 엔진
왜
'자율성이 많을수록 가치는 높지만 신뢰성은 떨어진다'(공식) — 민감 프로세스는 결정성이 옳은 선택. 그래프 = 토폴로지를 코드로 남기는 감사 가능한 산출물.
대안 — CrewAI는 역할 기반 팀 은유가 맞을 때. AutoGen은 2025-10 maintenance mode — 신규 채택 비권장(대안 MS Agent Framework / AG2).
⑤ 장기 기억 에이전트
사용자를 계속 기억하고 학습하는 개인 비서·상담봇. 세션을 넘는 상태가 핵심.
구성 패턴
- Letta — 'agent as memory manager': 에이전트가 자신의 메모리 블록을 재작성, OS 가상메모리처럼 계층화(MemGPT 계보)
- oxibrain — oxicode-sdk의 MemoryStore port 뒤에 Unix-socket daemon(RFC-047)으로 standalone 지식 메모리
- LangGraph 진영에서는 Store(스레드 간 KV)가 얕은 버전
왜
메모리를 프레임워크의 일급 시민으로 설계한 곳은 Letta뿐. oxi는 같은 문제를 daemon 분리로 푼다 — SDK 계약(MemoryStore)과 구현(oxibrain)을 분리한 것 자체가 hexagonal의 실천력.
나머지 생태계 — 11종 스냅샷 (2026-08 기준)
| 프레임워크 | 티어 | 루프 소유자 | 한 줄 | 상태 |
|---|---|---|---|---|
| OpenAI Agents SDK | ③ 임베딩 (위임형) | Runner가 턴·도구·guardrail·handoff·session 관리 | Swarm의 프로덕션 업그레이드. handoff=에이전트를 도구로 위임 | 활발 |
| Google ADK 2.0 | ② 그래프 | Workflow Runtime — routing/fan-out/retry/HITL | Gemini 중심·GCP 배포. adk-java/kotlin/go/js | 활발 |
| CrewAI | ② 그래프 (+role) | Crew(sequential/hierarchical) · Flow(start/listen/router) | 역할 기반 팀 은유 — 리서치→초안→리뷰 파이프라인 | 활발 |
| AutoGen (MS) | ③ 대화형 멀티 | GroupChat/Manager가 대화 라우팅 | 2025-10 maintenance mode — MS Agent Framework로 합류 권고 | maintenance |
| AG2 (포크) | ③ 대화형 멀티 | Network + Agent.ask() (v1.0 개편) | 커뮤니티 포크, autogen 네임스페이스에서 분리 | 활발 |
| smolagents (HF) | ③ 코드실행 | CodeAgent.run — 모델이 Python 코드를 직접 작성·실행 | ~1,000줄 barebones. 샌드박스(E2B/Docker) 필수 | 활발 |
| Pydantic AI | ③ 임베딩 (타입안전) | Agent.run + Harness(sub-agents·memory) | typed DI·구조화 출력·durable execution(Temporal/DBOS) | 활발 |
| Mastra | ③ 임베딩 (TS 통합) | Agent.generate + Workflow 상태머신 | agent+workflow+RAG+evals 올인원 TS. Studio UI | 활발 |
| Vercel AI SDK v6 | ③ 임베딩 (UI 결합) | ToolLoopAgent (v5까지는 streamText로 직접) | useChat·type-safe tool UI·needsApproval. 월 2천만 DL | 활발 |
| Letta (구 MemGPT) | ⑤ 메모리형 | 에이전트가 자기 메모리 블록을 관리·재작성 | 'LLM as Operating Systems' 논문 계보 | 활발 |
| LlamaIndex agents | ② 그래프 (데이터 중심) | AgentWorkflow(이벤트 기반) / prebuilt ReAct | RAG 툴링 최강 — '데이터 위의 에이전트' | 활발 |
면접 답변 템플릿
- "LangChain과 oxicode-sdk는 둘 다 에이전트 프레임워크인데, 근본 차이가 뭐라고 생각하세요?"
제어 흐름의 소유권과 추상화의 방향입니다. 두 SDK 모두 루프를 프레임워크가 돌린다는 점은 같지만, LangChain은 '기능을 주는' 방향 — 벡터스토어·로더·모델 통합을 가져다주고 middleware 훅으로 개입하게 합니다. oxicode-sdk는 '계약을 요구하는' 방향 — 16개 port trait을 정의하고 권한·감사·메모리 구현을 제품에게 되돌려주는 제어 역전(hexagonal)입니다. 그래서 LangChain은 생태계의 폭이, oxicode-sdk는 통제의 깊이가 강점이 됩니다.
- "회사 챗봇을 만든다면 뭘 쓰시겠어요?"
요구사항이 RAG + 멀턴 대화 + 내부 시스템 연동 + 승인 워크플로라면 LangChain create_agent에 checkpointer(Postgres)를 붙이는 게 기본값이라고 답합니다. 이유는 통합의 폭, 모델 중립성, 그리고 유지보수 인수인계까지 고려한 인력 풀입니다. 다만 '모델이 매 단계 결정하는 루프'가 부적합한 결정적 파이프라인이 섞여 있으면 그 부분만 LangGraph 그래프로 분리하고, TS 풀스택이면 Vercel AI SDK v6도 강력한 대안이라고 덧붙입니다.
- "Claude Agent SDK는 query() 하나만 노출하던데, 왜 그렇게 설계했을까요?"
harness의 완결성 때문입니다. 문서가 명시하듯 툴 실행·컨텍스트 관리가 '코드로 제어를 돌려주지 않고' SDK 안에서 일어납니다. 개발자는 루프를 설계하지 않고 정책(options)만 설계합니다 — 권한 모드 6종, can_use_tool 콜백, hooks, 샌드박스. 장점은 최소 구현으로 자율 에이전트를 얻는 것이고, 단점은 루프 내부를 열 수 없어 도메인 특화 재설계가 불가능하다는 것. Anthropic 전용이라는 결합도 있습니다.
- "MCP에 대해 어떻게 생각하세요?"
생태계마다 온도차가 큽니다. Claude Agent SDK는 MCP가 핵심 확장 계층(인프로세스 SDK MCP 서버, ToolSearch로 온디맨드 로드), oxicode-sdk는 mcp_tools 팩토리로 내장, 반면 pi는 코어에 MCP가 없고 서드파티 pi-mcp-adapter가 도구 정의 전부 대신 프록시 툴 1개(~200 tokens)로 게으르게 로드합니다. 저자는 'MCP 없이 CLI 도구와 코드로 충분하다'고 주장하죠. 제 답은 '도구 수가 적으면 CLI 조합, 많으면 MCP + 지연 로드'입니다.
- "프레임워크 없이 SDK 직접 쓰는 건 어떤가요?"
실측 비판이 있는 문제입니다 — LangChain Embeddings는 5줄을 줄이려고 773줄 래퍼와 설정 30개를 얹었습니다. 단순 tool-calling 루프라면 Client SDK로 20줄 안에 직접 짜는 게 디버깅도 명확합니다. 단, 체크포인트·HITL·멀턴 상태·관측까지 요구가 커지면 그 지점부터 프레임워크 비용이 상쇄됩니다. 판단 기준은 '내가 소유해야 하는 제어 흐름이 어디까지인가'입니다.
- "AutoGen은 어때요?"
2025-10에 Microsoft가 maintenance mode로 전환하고 Semantic Kernel과 합쳐 Microsoft Agent Framework를 권고했습니다. 커뮤니티 포크 AG2가 v1.0을 냈지만 신규 채택은 비권장 — 대화형 멀티에이전트가 필요하면 LangGraph supervisor/swarm이나 MS Agent Framework를 답합니다.
근거
oxicode-sdk 사실은 저장소 직접 인용(oxicode/oxicode-sdk/src/ports/mod.rs,
oxicode-agent/src/agent_loop/mod.rs:761,
oxios/crates/oxios-kernel/src/agent_runtime.rs:1110 등 — 전체 목록은
.omp/local/af-oxicode-sdk.md). 웹 사실은 공식 문서·블로그 기반
(langchain.com/blog · code.claude.com/docs/en/agent-sdk ·
github.com/earendil-works/pi 등 — 전체 URL 목록은
.omp/local/의 af-langchain · af-claude-agent-sdk · af-pi-sdk · af-landscape 보고서).
계층 대응표는 사실이 아닌 해석 렌즈로 구분해 표기했다.