블로그 AI / Agent

AI Coding Agent는 더 이상 코드 완성이 아니다: Codex, Claude Code, OpenCode, DeepSeek Harness는 무엇을 겨루는가?

2년 전, 사람들이 말하는 「AI로 코드 쓰기」는 대부분 에디터의 다음 줄 제안이었다. 2026년, 터미널에서 도는 것은 다른 종류의 제품이다: Codex, Claude Code, OpenCode, DeepSeek Harness—파일을 고치고, 테스트를 돌리고, MCP를 호출하며, 하위 Agent를 띄워 병렬로 추적한다.

겉으로는 네 곳이 같은 능력을 판다: LLM + 도구 + Agent loop. 진짜 전장은 기능 목록이 아니라 아키텍처 중심이다: 누가 Agent를 강화하고, 누가 실행 경계를 다루며, 누가 모델 무관에 걸고, 누가 런타임 자체를 교체 가능한 부품으로 만드는가.

이 글에서는:

한 줄로:작업 완료 ≈ 모델 × Harness × 작업. 네 곳은 「스위치를 몇 개 더 달았나」를 겨루는 게 아니라, 제어권이 어디에 앉는지를 겨룬다—Claude Code는 단일 Agent를 강화하고, Codex는 샌드박스와 승인을 다루며, OpenCode는 모델 교체에 걸고, DeepSeek Harness는 loop와 능력을 플러그인으로 만든다.

진짜로 겨루는 것

완성이 푸는 문제는 「다음 줄을 무엇으로 쓸까」다. Coding Agent가 푸는 문제는 「이 목표를 실제 저장소에서 어떻게 끝낼까」다: 컨텍스트를 읽고, 도구를 고르고, 코드를 고치고, 명령을 돌리고, 결과를 보고, 다시 결정한다.

바닥의 루프는 거의 같다:

네 곳이 공유하는 Agent loop 형태
User goal
  → Agent loop
  → LLM decides next action
  → Tool / environment executes
  → Result returns to context
  → Agent decides again

모델은 추론과 다음 동작을 맡는다. harness는 무엇을 볼 수 있는지, 어떤 도구를 호출할 수 있는지, 도구가 실제로 무엇을 하는지, 상태를 어떻게 저장하는지, 어떤 동작에 승인이 필요한지, 작업 완료를 어떻게 정의하는지를 정한다. 모델이 아무리 세도 컨텍스트가 빠지고, 도구 계약이 느슨하고, 권한이 과하고, 실패를 복구할 수 없으면 결과는 무너진다.

그래서 2026년의 경쟁은 더 이상 「벤치마크 점수가 누가 높은가」만이 아니다. 「지능, 실행, 정책, 도구, 사람의 제어를 누가 더 분명히 조직하는가」다. 네 층 조립은 다음을 참고:

2026 AI Agent 기술 스택: LLM, MCP, Function Calling, JSON Schema

네 가지 아키텍처 중심

먼저 경계를 그린다. 기능 목록은 점점 비슷해지지만, 중심 문제는 다르다:

제품 아키텍처 중심 핵심 문제
Claude Code Claude Agent 하나의 주 Agent를 어떻게 더 세고 쓰기 좋게 만들까?
Codex Agent + 실행 런타임 Agent가 실제 머신에서 자율적으로 움직이면서도 통제를 잃지 않으려면?
OpenCode 모델 무관 harness 사용자가 모델과 제공자를 자유롭게 바꾸며 한 곳에 묶이지 않게 하려면?
DeepSeek Harness 조합 가능한 런타임 모델, 도구, loop, 샌드박스를 플러그인처럼 교체하고 재조합할 수 있는가?

마지막 줄은 순위가 아니라 제품 경계다: 사는 것이 「더 센 도우미」인지, 「더 통제 가능한 실행 환경」인지, 「확장 가능한 Agent 플랫폼」인지.

Claude Code: Agent 중심

Claude Code는 주 Agent를 중심으로 한 제품으로 이해하는 것이 맞다. Skills, MCP, 하위 Agent, Hooks, 권한은 같은 Claude Agent를 더 효과적으로 만들며, Agent loop 자체를 교체 가능한 커널로 쪼개지는 않는다.

전형적인 확장 지점:

엔지니어링 타협은 분명하다: 확률적 Agent + 결정적 Hooks. 고친 뒤 테스트 실행, 위험 명령 차단, 보호 경로는 먼저 승인—이런 일은 모델이 「매번 기억하기」를 기대하면 안 된다.

적합한 경우: 워크플로가 분명하고, 경험·컨텍스트 품질을 중시하며, Skills와 하위 Agent로 주 루프를 확장하는 팀.

Codex: 실행 중심

Codex(Codex CLI 포함)는 문제를 실행 층으로 밀어 올린다. Agent가 파일을 고치고, shell을 돌리고, 의존성을 설치하고, 네트워크·자격 증명에 닿는 순간, 서로 다른 두 질문에 답해야 한다—능력 경계와 현재 허가.

두 메커니즘의 역할 분담:

메커니즘 답하는 질문
Sandbox 기술적으로 무엇을 접근·수정할 수 있는가?
Approval / Policy 지금 이 일을 해도 되는가?

원칙은 최소 권한이다. 먼저 풀 권한을 주고 「조심하라」고 요구하지 말고, 먼저 환경을 조인 뒤 필요할 때만 푼다. Rust로 짠 CLI, 기본으로 OpenAI 엔드포인트에 붙는 설정, 강한 샌드박스 서사는 모두 「Agent가 실제 컴퓨터에서 일해야 한다」는 선과 맞다.

적합한 경우: 부작용이 크고, 감사 가능한 실행 궤적이 필요하며, 승인과 격리를 일등 시민으로 두는 시나리오. 오픈소스 저장소:

openai/codex.

OpenCode: 모델 무관

OpenCode의 차별점은 「Skills 문법을 하나 더」가 아니라 기본 입장이다: 모델을 바꿀 수 있다. MIT 오픈소스, 터미널 우선, 다수 제공자와 로컬 모델(Ollama / LM Studio 등)을 지원한다. 유연성은 주로 설정 층—providers, models, permissions, themes—에 있고, harness 커널을 플러그인 버스로 쪼개지는 않는다.

여기서 나오는 실용적 제품 결론: 한 곳 락인을 믿지 않거나, 같은 세션에서 여러 모델 사이를 바꿔야 한다면, OpenCode의 중심 문제는 「모델 공급자에 묶이지 않는 법」이다.

보통 이기는 지점:

대가는: 실행 경계와 플러그인 깊이가 반드시 1순위 셀링 포인트는 아니다. 사는 것은 모델을 바꿀 수 있는 harness이지, 가장 무거운 샌드박스 제품도, 「Everything is a plugin」 플랫폼 커널도 아니다.

DeepSeek Harness: 런타임 중심

DeepSeek Harness(dsh)는 문제를 한 층 더 안으로 민다: Agent Loop 자체도 영구 커널이 아니어야 한다면? 공개 프리뷰의 슬로건은 Everything is a plugin—모델, 도구, skills, 세션, 샌드박스, 저장, loop, 스케줄링, UI까지 모두 교체할 수 있다.

이것은 「안정 코어 + 주변 확장점」과 다르다. 경계를 안으로 민다: Agent를 구동하는 메커니즘도 재조합할 수 있다. capability seam은 소비자가 단일 구현이 아니라 계약에 의존하게 한다: 로컬 shell과 컨테이너 shell, 원격 모델과 로컬 추론, ReAct loop와 워크플로 loop를 제공자만 바꾸고 모든 도구를 다시 쓰지 않아도 된다.

그래서 플랫폼에 가깝다:

조합 가능성에는 대가가 있다: Plugin / Service / Provider / Effect / Session 등 개념 면이 더 넓다. 「저장소만 고쳐 달라」는 터미널 사용자에게는 Claude Code나 Codex보다 학습 곡선이 높을 수 있다. 확장 가능한 Agent 플랫폼을 짓는 팀에게는 바로 그 점이 셀링 포인트다.

DeepSeek 모델 API와 JSON 출력이 더 궁금하면 먼저:

DeepSeek V4-Pro 완전 해설

제어권 지도

기능 체크리스트보다 유용한 것은, 각 결정이 누구에게 귀속되는지 묻는 것이다. 아래 표는 네 곳의 제어 스타일을 압축한다(OpenCode와 dsh는 「교체 가능성」에서 가깝지만 깊이가 다르다):

차원 Agent 중심 실행 중심 교체 가능성
대표 Claude Code Codex dsh / OpenCode
주 최적화 능력과 경험 안전한 자율 실행 모델 교체 / 능력 교체
Agent loop 분명한 중심 분명한 중심 설정 교체 / 플러그인 교체
안전 수단 Hooks + 권한 샌드박스 + 승인 + 정책 설정 정책 / 런타임 정책과 이벤트
최적 적합 전문화 Agent 제품 실제 시스템을 조작하는 Agent 다중 모델 사용자 / 확장 가능 플랫폼

한 층 더 아래로: 작업 이해와 계획 생성은 모델 쪽; 파라미터 검증, 권한 판단, 도구 실행, 실행 종료는 프로그램과 정책 쪽; 고위험 동작에는 사람이 필요하다. 네 곳 모두 이 단어를 다루지만, 무게를 다른 칸에 둔다.

JSON 계약은 여전히 공통 기반

어느 harness를 고르든, 도구 호출은 결국 기계가 실행할 수 있는 구조로 떨어진다: 함수 이름 + 파라미터 JSON. MCP의 inputSchema / outputSchema, Function Calling의 parameters, Structured Output의 response_format—바닥 언어는 여전히 JSON Schema다.

계약이 나타나는 위치:

단계 흔한 형태 무엇에 제약을 거는가
모델이 도구 선택 Function Calling / tools JSON Schema
외부 도구 프로토콜 MCP / Apps inputSchema / outputSchema
실행 전 검증 Runtime validate 누락 필드, 잘못된 타입, 더러운 파라미터
궤적과 감사 tool call / result JSON 재현 가능한 구조화 이벤트

흔한 사고: 모델 쪽 parameters와 MCP inputSchema를 각각 따로 써서 필드나 enum이 어긋난다. 「모델이 도구를 자꾸 잘못 부른다」처럼 보인다. 고치는 법은 계약 하나, 두 곳에 걸기. 배경:

AI가 JSON Schema를 필요로 하는 이유AI Agent의 JSON Schema 완전 해설.

예시: Coding Agent 도구 파라미터 Schema 조각
{
  "name": "run_tests",
  "description": "Run the project test suite and return a structured summary.",
  "parameters": {
    "type": "object",
    "properties": {
      "suite": { "type": "string", "enum": ["unit", "integration", "e2e"] },
      "path": { "type": "string", "minLength": 1 }
    },
    "required": ["suite"],
    "additionalProperties": false
  }
}

이 경로를 디버깅할 때는 브라우저에서 로컬로 끝낼 수 있고, 데이터는 업로드하지 않는다:

  1. 1
    arguments 포맷

    모델이 반환한 arguments 문자열을JSON 포맷에 붙여, 먼저 유효한 JSON인지 확인한다.

  2. 2
    Schema 대조 검증

    JSON Schema로 required, enum, additionalProperties를 확인한다.

  3. 3
    드리프트 비교

    모델 쪽 parameters와 MCP inputSchema를JSON Diff로 필드가 일치하는지 본다.

어떻게 고를까

인기에 따라 고르지 말고, 제약에 따라 고르라:

조합도 가능하다. 예: OpenCode / dsh로 다중 모델 실험하고, 생산 부작용은 Codex식 경계로; 또는 주 루프는 Claude Code, 외부 시스템은 MCP. 핵심은 「모델 점수」를 유일한 구매 지표로 두지 않는 것이다.

자주 묻는 질문

AI Coding Agent와 코드 완성은 본질적으로 무엇이 다른가?

완성은 다음 한 줄만 제안한다. Coding Agent는 저장소를 읽고, 파일을 고치고, 명령을 돌리고, 도구를 호출하며, 루프 안에서 결과를 보고 계속 결정한다. 경쟁의 초점은 「생성 품질」에서 「실행 경계와 런타임 제어」로 바뀐다.

Codex, Claude Code, OpenCode, DeepSeek Harness 중 무엇이 최선인가?

통일된 우승자는 없다. 무엇을 최적화하느냐에 달렸다: 경험과 Skills는 Claude Code, 샌드박스와 승인은 Codex, 다중 모델과 락인 방지는 OpenCode, 교체 가능한 런타임과 플랫폼화는 DeepSeek Harness.

DeepSeek Harness와 OpenCode는 둘 다 오픈소스인데, 차이는?

OpenCode의 유연성은 주로 모델·제공자 설정에 있다. DeepSeek Harness(dsh)는 모델, 도구, loop, 샌드박스, 세션까지 교체 가능한 플러그인으로 만들어, 조합 가능한 Agent 런타임 플랫폼에 가깝다.

왜 아직도 JSON Schema를 이야기하는가?

도구 파라미터, MCP inputSchema/outputSchema, Structured Output의 바닥은 모두 JSON Schema다. harness가 아무리 강해도 더러운 파라미터가 실행 층에 들어가면 사고 난다—계약 검증은 여전히 Runtime의 책임이다.

Agent를 고를 때 가장 봐야 할 층은?

제어권을 보라: 누가 도구를 정하고, 누가 파라미터를 검증하고, 누가 고위험 동작을 승인하고, 누가 작업을 끝내는가. 모델 점수는 입력 중 하나일 뿐이고, harness가 작업을 안전하게 끝낼 수 있는지를 가른다.

정리

Codex, Claude Code, OpenCode, DeepSeek Harness는 같은 어휘를 쓴다: LLM, 도구, loop, 컨텍스트, Skills, 하위 Agent, 권한, 샌드박스. 이들은 더 이상 「더 센 완성」만이 아니라, 제어권이 어디에 앉는지를 겨룬다.

Claude Code는 하나의 Agent를 강화한다. Codex는 Agent가 실제 환경에서 통제되며 움직이게 한다. OpenCode는 모델 교체에 건다. DeepSeek Harness는 런타임과 능력을 조합 가능한 플랫폼으로 만든다.

중요한 질문은 이미 「모델을 어떻게 호출할까」가 아니라 「지능, 실행, 정책, 도구, 컨텍스트, 사람의 제어를 어떻게 조직할까」다. 도구 계약 층의 JSON은, 로컬에서 여전히 직접 대조할 수 있는 그 층이다.

Agent 도구 JSON을 디버깅? 브라우저에서 로컬로.

← 블로그로