시선아이티 면접 준비 · 에이전트 프레임워크

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천만 다운로드의 사실상 표준.

앱이 세계, SDK는 계약

oxicode-sdk

Rust

루프는 하위 AgentLoop가 돌리지만, SDK 본체는 16개 port trait '계약' + 컴포지션 뼈대다. 권한·감사·비용·메모리를 제품이 구현해 끼워 넣는 제어 역전(hexagonal).

harness 완결형

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

Python · TS · 2022 · MIT · v1.0 (2025-10-22)

포지션

범용 에이전트 프레임워크의 사실상 표준. 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

Rust · v0.75.0 · hexagonal (ports & adapters)

포지션

'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

Python · TS · 구 Claude Code SDK · v0.x (pre-1.0)

포지션

"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

TypeScript · MIT · earendil-works/pi (구 badlogic/pi-mono)

포지션

"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.

선택 LangChain create_agent (+ LangGraph checkpointer)

구성 패턴

  • 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).

선택 oxicode-sdk

구성 패턴

  • 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)와 샌드박스가 생존 조건.

선택 Claude Agent SDK (or pi)

구성 패턴

  • 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 진영 선택지.

④ 결정적 엔터프라이즈 워크플로

결재·승인·단계별 검증 파이프라인. 누가 언제 개입하는지 경로가 고정돼야 하고 감사 가능해야 함.

선택 LangGraph (or Google ADK)

구성 패턴

  • 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 (oxi 생태계라면 oxibrain)

구성 패턴

  • 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 툴링 최강 — '데이터 위의 에이전트' 활발

면접 답변 템플릿

  1. "LangChain과 oxicode-sdk는 둘 다 에이전트 프레임워크인데, 근본 차이가 뭐라고 생각하세요?"

    제어 흐름의 소유권과 추상화의 방향입니다. 두 SDK 모두 루프를 프레임워크가 돌린다는 점은 같지만, LangChain은 '기능을 주는' 방향 — 벡터스토어·로더·모델 통합을 가져다주고 middleware 훅으로 개입하게 합니다. oxicode-sdk는 '계약을 요구하는' 방향 — 16개 port trait을 정의하고 권한·감사·메모리 구현을 제품에게 되돌려주는 제어 역전(hexagonal)입니다. 그래서 LangChain은 생태계의 폭이, oxicode-sdk는 통제의 깊이가 강점이 됩니다.

  2. "회사 챗봇을 만든다면 뭘 쓰시겠어요?"

    요구사항이 RAG + 멀턴 대화 + 내부 시스템 연동 + 승인 워크플로라면 LangChain create_agent에 checkpointer(Postgres)를 붙이는 게 기본값이라고 답합니다. 이유는 통합의 폭, 모델 중립성, 그리고 유지보수 인수인계까지 고려한 인력 풀입니다. 다만 '모델이 매 단계 결정하는 루프'가 부적합한 결정적 파이프라인이 섞여 있으면 그 부분만 LangGraph 그래프로 분리하고, TS 풀스택이면 Vercel AI SDK v6도 강력한 대안이라고 덧붙입니다.

  3. "Claude Agent SDK는 query() 하나만 노출하던데, 왜 그렇게 설계했을까요?"

    harness의 완결성 때문입니다. 문서가 명시하듯 툴 실행·컨텍스트 관리가 '코드로 제어를 돌려주지 않고' SDK 안에서 일어납니다. 개발자는 루프를 설계하지 않고 정책(options)만 설계합니다 — 권한 모드 6종, can_use_tool 콜백, hooks, 샌드박스. 장점은 최소 구현으로 자율 에이전트를 얻는 것이고, 단점은 루프 내부를 열 수 없어 도메인 특화 재설계가 불가능하다는 것. Anthropic 전용이라는 결합도 있습니다.

  4. "MCP에 대해 어떻게 생각하세요?"

    생태계마다 온도차가 큽니다. Claude Agent SDK는 MCP가 핵심 확장 계층(인프로세스 SDK MCP 서버, ToolSearch로 온디맨드 로드), oxicode-sdk는 mcp_tools 팩토리로 내장, 반면 pi는 코어에 MCP가 없고 서드파티 pi-mcp-adapter가 도구 정의 전부 대신 프록시 툴 1개(~200 tokens)로 게으르게 로드합니다. 저자는 'MCP 없이 CLI 도구와 코드로 충분하다'고 주장하죠. 제 답은 '도구 수가 적으면 CLI 조합, 많으면 MCP + 지연 로드'입니다.

  5. "프레임워크 없이 SDK 직접 쓰는 건 어떤가요?"

    실측 비판이 있는 문제입니다 — LangChain Embeddings는 5줄을 줄이려고 773줄 래퍼와 설정 30개를 얹었습니다. 단순 tool-calling 루프라면 Client SDK로 20줄 안에 직접 짜는 게 디버깅도 명확합니다. 단, 체크포인트·HITL·멀턴 상태·관측까지 요구가 커지면 그 지점부터 프레임워크 비용이 상쇄됩니다. 판단 기준은 '내가 소유해야 하는 제어 흐름이 어디까지인가'입니다.

  6. "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 보고서). 계층 대응표는 사실이 아닌 해석 렌즈로 구분해 표기했다.