ZCode: GLM 제작진이 선보이는 Claude Code
요약
GLM 제작진이 개발한 ZCode는 Anthropic의 Claude 3.5 Sonnet을 기반으로 하는 터미널 기반 자율 코딩 에이전트입니다. 기존 IDE 확장 프로그램과 달리 시스템 레벨에서 셸 명령 실행, 테스트, 디버깅, git 관리를 수행하며 에이전트적 개발 루프를 제공합니다.
핵심 포인트
- 단순 코드 제안을 넘어 전체 소프트웨어 라이프사이클을 관리하는 에이전트 방식
- 터미널 인터페이스를 통해 런타임 이해 및 직접적인 명령 실행 가능
- 빌드, 오류 관찰, 코드 반복 개선을 통한 자율적 디버깅 루프 구현
- GLM 연구진의 기술적 배경을 바탕으로 한 고도화된 아키텍처
ZCode: GLM 제작진이 선보이는 Claude Code
요약 (TL;DR)
AI 보조 소프트웨어 엔지니어링의 지형이 코드 한 줄을 제안하는 "코파일럿 (copilots)"에서 전체 라이프사이클을 관리하는 "에이전트 (agents)"로 변화했습니다. General Language Model (GLM) 시리즈의 설계자들이 선보이는 최신 혁신인 ZCode는 Anthropic의 Claude 3.5 Sonnet 엔진과 직접 인터페이스하도록 설계된 특화된 터미널 기반 자율 코딩 에이전트인 Claude Code를 소개합니다. 기존의 IDE 확장 프로그램과 달리, ZCode는 시스템 레벨의 에이전트로 작동하며 전체 리포지토리 (repositories)를 읽고, 셸 명령 (shell commands)을 실행하며, 테스트를 수행하고, 실시간으로 오류를 디버깅하며, git 워크플로우를 관리할 수 있습니다. 이는 _자동 완성 (Autocomplete)_에서 _자율성 (Autonomy)_으로의 전환을 의미합니다.
이것이 중요한 이유
지난 2년 동안 기술 산업은 "LLM 증강 코딩 (LLM-augmented coding)"에 매료되어 왔습니다. 우리는 GitHub Copilot이 개발자를 더 빠른 타이피스트로 만들고, Cursor가 IDE를 지능형 작업 공간으로 바꾸는 것을 목격했습니다. 하지만 근본적인 마찰 지점이 여전히 남아 있습니다. 바로 "컨텍스트 격차 (Context Gap)"입니다.
대부분의 AI 코딩 도구는 에디터의 한계 내에서 작동합니다. 이들은 당신이 작업 중인 파일과 아마도 몇 개의 관련 파일을 볼 수는 있지만, _런타임 (runtime)_을 이해하는 데는 어려움을 겪습니다. 이들은 컴파일러를 실행할 수 없고, 테스트가 실패했을 때 스택 트레이스 (stack trace)를 볼 수 없으며, 회귀 (regression)의 근본 원인을 찾기 위해 복잡한 디렉토리 구조를 독립적으로 탐색할 수 없습니다.
ZCode는 AI를 에디터에서 터미널로 이동시킴으로써 패러다임을 바꿉니다.
터미널을 주요 인터페이스로 취급함으로써, ZCode는 이전 모델들이 갖추지 못했던 "손"을 얻게 됩니다. 단순히 수정 사항을 제안하는 것에 그치지 않고, 수정을 시도하고, 빌드 명령을 실행하며, 오류를 관찰하고, 코드를 반복 개선하며, 스스로의 작업을 검증한 후에야 솔루션을 제시합니다. 이것이 바로 **에이전트적 개발 루프 (Agentic Developer Loop)**의 탄생입니다.
시니어 엔지니어에게 이는 보일러플레이트 (Boilerplate), 마이그레이션 (Migrations), 테스트 스위트 (Test suites), 리팩토링 (Refactoring)과 같은 "단순 반복 작업 (Grunt work)"을 환경을 실제로 이해하는 에이전트에게 위임할 수 있음을 의미합니다. 주니어 엔지니어에게는 단순히 정답만 제공하는 것이 아니라 디버깅 (Debugging) 프로세스 전체를 보여주는 페어 프로그래머 (Pair programmer)를 제공합니다.
배경: GLM에서 ZCode까지
ZCode의 기술적 계보를 이해하려면 제작자들의 혈통을 살펴보아야 합니다. ZCode를 만든 팀은 GLM (General Language Model) 시리즈 연구를 통해 명성을 얻었습니다.
GLM 프로젝트는 이중 언어(특히 영어-중국어) 대규모 사전 학습 (Pre-training) 분야에 중대한 기여를 했습니다. 업계의 많은 이들이 거대하고 단일한 모델 (Monolithic models)에 집중하고 있을 때, GLM 연구진은 **자기회귀적 빈칸 채우기 (Autoregressive Blank Infilling)**를 전문적으로 다루었습니다. 이 기술을 통해 모델은 인과적 언어 모델링 (Causal language modeling, 다음 토큰 예측)과 구간 오염 (Span corruption, 누락된 세그먼트의 문맥 이해)을 모두 이해할 수 있었습니다.
이러한 특정 아키텍처 (Architectural) 배경은 코딩 에이전트에게 매우 중요합니다. 코딩은 단어의 선형적인 시퀀스가 아닙니다. 그것은 의존성 (Dependencies), 논리적 구간 (Logical spans), 그리고 구조적 계층 구조 (Structural hierarchies)가 얽힌 복잡한 망입니다. 주변 문맥을 바탕으로 누락된 로직을 "채워 넣거나 (Infill)" 재구성하는 능력은 에이전트가 코드베이스 (Codebase)를 이해하는 데 필요한 핵심 역량입니다.
이 팀이 "에이전트적 (Agentic)" 시대로 전환했을 때, 그들은 병목 현상이 단순히 모델의 지능뿐만 아니라 모델의 _에이전시 (Agency, 실행 능력)_에 있다는 것을 깨달았습니다. 그들은 아무리 뛰어난 모델이라 할지라도 채팅창 안에 갇혀 있다면 개발자에게 무용지물이라는 점을 인식했습니다. 그리하여 ZCode가 구상되었습니다. 즉, Claude 3.5 Sonnet의 인지적 추론 (Cognitive reasoning)과 Unix 터미널 (Unix terminal)의 운영적 힘 사이를 잇는 가교입니다.
주요 발전 사항
ZCode는 단순히 API를 감싸는 래퍼 (Wrapper)가 아닙니다. 이는 여러 최첨단 AI 엔지니어링 개념을 통합하는 정교한 오케스트레이션 레이어 (Orchestration layer)입니다.
1. 에이전트적 루프 (REPL 기반 개발)
전통적인 AI 도구들은 "프롬프트-응답 (Prompt-Response)" 패턴을 따릅니다. ZCode는 "추론-행동-관찰 (Reasoning-Action-Observation)" 패턴을 따릅니다. 작업이 주어지면 ZCode는 다음과 같은 루프에 진입합니다:
- 추론 (Reasoning): "인증 버그를 수정하려면 먼저 미들웨어 (middleware)가 어떻게 구성되어 있는지 확인해야 합니다."
- 행동 (Action):
ls src/middleware및cat src/middleware/auth.ts를 실행합니다. - 관찰 (Observation): 에이전트가 명령의 출력 결과를 읽습니다.
- 반복 (Iteration): "에러를 확인했습니다. 이제 파일을 수정해 보겠습니다."
2. 시맨틱 저장소 인덱싱 (Semantic Repository Indexing)
AI 코딩의 가장 큰 과제 중 하나는 모델이 방대한 저장소에서 올바른 컨텍스트를 검색하지 못하는 "중간에서의 길을 잃음 (Lost in the Middle)" 현상입니다. ZCode는 다층 인덱싱 전략을 구현합니다. 단순히 원시 텍스트에 대해 RAG (검색 증강 생성, Retrieval-Augmented Generation)를 사용하는 것이 아니라, **시맨틱 심볼 맵 (Semantic Symbol Map)**을 구축합니다. 이는 한 파일의 함수 정의와 다른 파일에서의 호출 사이의 관계를 이해하여, 프로젝트의 AST (추상 구문 트리, Abstract Syntax Tree)를 정밀하게 탐색할 수 있게 해줍니다.
3. 도구 사용 및 샌드박싱 (Tool Use and Sandboxing)
ZCode는 터미널을 일련의 도구 세트로 취급합니다. ZCode는 다음과 같은 도구들을 사용하도록 특별히 훈련되었습니다:
- 파일 시스템 도구 (File System Tools):
grep,find,sed,cat. - 언어 툴킷 (Language Toolkits):
npm,pip,cargo,go test. - 버전 관리 (Version Control):
git diff,git commit,git checkout.
결정적으로, ZCode는 안전을 염두에 두고 설계되었습니다. 사용자의 터미널에서 작동하지만, 고위험 명령(예: rm -rf 또는 복잡한 배포)에 대해서는 "인간 참여형 (human-in-the-loop)" 권한 모델을 채택하여, 자율성이 무질서로 변하지 않도록 보장합니다.
4. Claude 3.5 Sonnet과의 통합
팀은 자체 모델(proprietary models)을 개발해 왔지만, ZCode의 "두뇌"로 Claude 3.5 Sonnet을 사용하기로 전략적인 결정을 내렸습니다. 업계의 공통된 의견은 현재 Sonnet 3.5가 맥락을 놓치지 않고 다단계 지침을 따르는 능력인 "에이전트적 추론 (agentic reasoning)" 측면에서 우위에 있다는 것입니다. ZCode는 프롬프트 엔지니어링 (prompt engineering)과 컨텍스트 윈도우 (context window) 관리를 최적화하여 Sonnet의 추론 능력이 실행 가능한 코드로 직접 연결되도록 보장합니다.
영향: 엔지니어링 페르소나의 변화
ZCode의 도입은 "소프트웨어 엔지니어 (Software Engineer)"가 된다는 것의 의미에 근본적인 변화를 예고합니다.
"구문 전문가 (Syntax Specialist)"의 종말
수십 년 동안 엔지니어 가치의 상당 부분은 구문 (syntax)과 API 보일러플레이트 (boilerplate)에 대한 숙련도에 묶여 있었습니다. 당신은 "Java 개발자" 또는 "React 개발자"였습니다. ZCode는 구문을 사실상 범용화 (commoditize)합니다. 만약 당신이 로직과 아키텍처 제약 조건을 설명할 수 있다면, 에이전트가 구현을 처리할 수 있습니다. 이는 가치 제안을 코드를 _작성하는 것_에서 시스템을 _설계(architecting)_하고 정확성을 _검증(verifying)_하는 것으로 전환시킵니다.
"시스템 오케스트레이터 (System Orchestrator)"의 부상
우리는 새로운 페르소나인 **시스템 오케스트레이터 (System Orchestrator)**의 등장을 목격하고 있습니다. 이 엔지니어들은 하루 종일 타이핑을 하며 시간을 보내지 않습니다. 대신 에이전트가 생성한 PR (Pull Request)을 검토하고, 복잡한 워크플로 (workflow)를 설계하며, AI 에이전트가 올바른 아키텍처 경계 내에서 작동하도록 보장하는 데 시간을 보냅니다. 직무는 고차원적인 감독과 엄격한 테스트의 영역으로 변모합니다.
가속화된 온보딩 및 유지보수
대규모 엔터프라이즈 환경에서 "부족 지식 (tribal knowledge)" 문제는 거대한 병목 현상입니다. 신입 개발자들은 특정 레거시 모놀리스 (legacy monolith)가 어떻게 작동하는지 이해하는 데 수개월을 소비합니다. ZCode는 살아있는 문서화 레이어 (documentation layer) 역할을 합니다. 신입 사원이 _"ZCode, API 게이트웨이에서 데이터베이스까지의 사용자 요청 경로를 추적해줘"_라고 요청하면, 에이전트는 코드를 따라 안내하며 자신의 발견을 증명하기 위한 명령을 실행할 것입니다.
실질적인 예시
ZCode의 강력함을 진정으로 이해하기 위해서는 세 가지 뚜렷한 사용 사례(use cases)를 통해 실제로 작동하는 모습을 살펴보아야 합니다.
예시 1: "버그 사냥" (디버깅 (Debugging))
시나리오: 개발자가 운영 환경(production)에서 사용자 가입 프로세스가 간헐적으로 500 에러와 함께 실패한다는 보고를 받았습니다.
- 전통적인 방식: 개발자가 로그를 가져오고, 로컬에서 에러를 재현하려고 시도하며, print 문을 추가하고, 서버를 실행하고, 데이터베이스를 조사한 끝에 결국 비동기 미들웨어(async middleware)에서 레이스 컨디션(race condition)을 찾아냅니다. (소요 시간: 2~4시간).
- ZCode 방식:
- 사용자:
zcode "가입 흐름에서 발생하는 간헐적인 500 에러를 수정해줘. 로그와 미들웨어를 확인해봐." - ZCode:
tail -n 100 logs/server.log를 실행하여 스택 트레이스(stack trace)를 찾습니다.auth_middleware.ts에서TypeError를 식별합니다.grep -r "signup" src/를 실행하여 관련 로직을 찾습니다.- 에러를 재현하기 위해 새로운 테스트 파일
tests/repro_bug.test.ts를 생성합니다. - 테스트를 실행하고 실패를 관찰합니다.
- 레이스 컨디션(race condition)을 수정하기 위해 코드를 편집합니다.
- 테스트를 다시 실행하고 성공을 관찰합니다.
- 결과: "
auth_middleware.ts의 레이스 컨디션(race condition)을 수정했습니다. 재현 테스트를 생성하고 실행하여 수정을 검증했습니다. 차이점(diff)을 확인하시겠습니까? [Y/n]"
- 소요 시간: 5분.
- 사용자:
예시 2: "리팩터링 마라톤" (현대화 (Modernization))
시나리오: 코드베이스가 오래된 버전의 라이브러리를 사용하고 있습니다 (예: Axios에서 Fetch로 마이그레이션하거나, 주요 프레임워크 버전을 업그레이드하는 경우).
- 전통적인 방식 (Traditional Method): 수동으로 검색 및 교체(search and replace)를 수행한 뒤, 빌드가 깨지고 타입 오류(type errors)를 수정하는 고된 과정을 반복합니다.
- ZCode 방식 (The ZCode Method):
- 사용자:
zcode "/services 디렉토리 내의 모든 HTTP 호출을 Axios에서 네이티브 Fetch API로 마이그레이션하세요. 그에 따라 타입도 업데이트하세요." - ZCode:
- 디렉토리를 스캔하여 모든 Axios 임포트(imports)를 식별합니다.
- 각 파일을 체계적으로 반복 탐색합니다.
- Fetch 로직을 다시 작성합니다.
- 타입 불일치(type mismatches)를 포착하기 위해
tsc(TypeScript 컴파일러)를 자동으로 실행합니다. - 발견된 타입 오류를 수정합니다.
- 회귀(regressions)가 없는지 확인하기 위해 기존 테스트 스위트(test suite)를 실행합니다.
- 결과: 서비스 레이어(service layer)의 완전하고 검증된 마이그레이션.
- 사용자:
예시 3: "보일러플레이트 블리츠" (Boilerplate Blitz, 기능 스캐폴딩)
시나리오: 개발자가 REST 엔드포인트, 데이터베이스 스키마(database schema), 그리고 일련의 CRUD 작업이 포함된 새로운 "Notification" 모듈을 추가해야 합니다.
- 전통적인 방식 (Traditional Method): 파일을 생성하고, 인터페이스(interfaces)를 정의하며, SQL 마이그레이션(migrations)을 작성하고, 라우트(routes)를 설정하고, 기본적인 테스트를 작성합니다.
- ZCode 방식 (The ZCode Method):
- 사용자:
zcode "새로운 Notification 모듈을 추가하세요. 'notifications'를 위한 PostgreSQL 스키마, 알림 전송을 위한 FastAPI 엔드포인트, 그리고 기본적인 CRUD 테스트가 필요합니다." - ZCode:
- SQLAlchemy 모델을 생성합니다.
- Alembic 마이그레이션 파일을 생성합니다.
- FastAPI 라우터(router) 파일들을 생성합니다.
- 서비스 레이어(service layer) 로직을 구현합니다.
- Pytest 스위트(suite)를 작성합니다.
- 마이그레이션과 테스트를 실행합니다.
- 결과: 리뷰 준비가 완료된, 완전히 기능적이고 테스트된 모듈.
- 사용자:
5가지 핵심 요점 (5 Takeaways)
ZCode와 "Claude Code" 시대가 시사하는 바를 파악하면서, 현대의 개발자를 위한 다섯 가지 핵심 진리가 드러납니다:
- 터미널이 새로운 IDE이다 (The Terminal is the New IDE): 시각적 에디터(Visual editor)가 편안함을 제공하지만, AI 에이전트의 진정한 힘은 운영체제(OS)와 상호작용하는 능력에 있습니다. AI 주도 개발의 미래는 CLI(Command Line Interface) 중심입니다.
- 검증이 새로운 구현이다 (Verification is the New Implementation): 코드를 작성하는 비용이 0에 수렴함에 따라, 코드를 *검증(verifying)*하는 비용이 주요 제약 사항이 됩니다. 견고한 테스트 스위트(Test suite)를 작성하는 것은 더 이상 선택 사항이 아닙니다. 이는 에이전트를 안전하게 사용하기 위한 유일한 방법입니다.
- 컨텍스트가 핵심이다 (Context is King): 에이전트가 전체 리포지토리(Repository)를 "보고" 런타임 환경(Runtime environment)을 "느끼는" 능력은 기반이 되는 LLM(Large Language Model)의 단순 파라미터 수보다 더 중요합니다.
- '어떻게(How)'에서 '무엇을(What)'으로: 엔지니어링의 초점이 솔루션을 구현하는 방법(구문, 라이브러리, 패턴)에서 솔루션이 실제로 달성해야 하는 내용(요구사항, 아키텍처, 예외 케이스)으로 이동하고 있습니다.
- 에이전트적 반복은 비선형적이다 (Agentic Iteration is Non-Linear): ZCode를 성공적으로 사용하는 방법은 AI를 자판기(Vending machine)가 아닌 루프(Loop) 안의 협업자로 취급하는 것입니다. 당신이 방향을 제시하면, AI가 초안을 제공하고, 당신이 피드백을 주면, AI가 수정안을 제공합니다.
결론
ZCode는 개발자의 도구 상자에 있는 또 다른 도구 그 이상입니다. 이는 소프트웨어 산업의 구조적 변화를 알리는 신호입니다. GLM 연구진의 전문성이 가진 인지적 깊이와 Claude 3.5 Sonnet의 추론 능력, 그리고 터미널의 운영적 자유를 결합함으로써, 그들은 코파일럿(Copilot)과는 근본적으로 다른 무언가를 만들어냈습니다.
우리는 "AI 보조 타이핑"의 시대에서 "AI 주도 실행"의 시대로 나아가고 있습니다. 이 새로운 세상에서 가장 성공적인 개발자는 구문을 가장 많이 아는 사람이 아니라, 지능형 에이전트 군단을 효과적으로 지휘하여 복잡한 디지털 시스템을 구축, 테스트 및 유지 관리할 수 있는 사람일 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기