창제 언어로 만든 코딩 에이전트 cjh, 파일 하나가 개발팀
화웨이 창제 언어로 처음부터 구현한 대화형 코딩 에이전트 cjh는 자연어로 작업을 설명하면 스스로 계획하고 도구를 호출하는 방식으로 동작한다.
중국어 원문을 AI로 번역했습니다. 고유명사와 수치는 원문 표기를 우선하며, 중요한 판단에는 아래 출처 원문을 함께 확인하세요.
프로젝트 주소
GitHub: https://github.com/yangyongzhen/cjh
무엇인가
cjh는 화웨이 창줴(仓颉) 언어로 처음부터 구현한 인터랙티브 코딩 에이전트(coding agent harness)다. 터미널에서 자연어로 작업을 설명하면, 에이전트가 자율적으로 계획을 세우고, 도구를 호출하고, 결과를 관찰하고, 완료할 때까지 반복한다. 전 과정이 TUI로 실시간 표시되며, Web을 통해 원격으로 구동할 수도 있다.
하지만 이것은 또 하나의 "LLM 껍데기"가 아니다. cjh는 프로젝트 착수부터 두 가지 강제 지표를 스스로 세웠다.
토큰 절약 + 높은 실행 효율 —— 모든 설계가 이 두 가지를 중심으로 전개된다.
주목할 만한 이유
1. 단일 바이너리 무의존성: 파일 하나 = 에이전트 하나
창줴 cjnative 정적 컴파일로, 산출물은 무의존성 단일 파일 실행 프로그램이다 —— Python도, Node도, 어떤 런타임 환경도 필요 없다. 다운로드하면 바로 사용할 수 있고, 어떤 Linux 머신에든 복사해 바로 실행된다.
플랫폼 · 산출물 · 의존성 Linux · 단일 파일(15.8MB) · 시스템 libc만 Windows · exe + 런타임 DLL 2개(4.8MB zip) · 시스템 라이브러리 + 창줴 런타임만
크로스 플랫폼은 인터프리터에 의존하지 않고, 창줴의 멀티 백엔드 컴파일 + 터미널 계층 플랫폼 추상화(termios / Win32 조건부 컴파일, 하나의 소스로 여러 플랫폼 바이너리)에 의존한다.
2. 토큰 절약은 구호가 아니라 엔지니어링 지표
LLM은 토큰으로 과금되고, coding agent는 여러 차례 도구를 호출하는 과정에서 토큰 소모가 엄청나다. cjh는 네 가지 차원에서 체계적으로 최적화한다.
- 도구 결과 잘라내기와 회수: 초장문 결과는 앞뒤를 보존 + 중간은 디스크에 저장, 전체 내용은 회수 가능, 중간 정보를 잃지 않음
- 자동 Compaction: 컨텍스트가 임계값을 넘으면 자동 LLM 요약 압축, 실측 prompt 피크가 42.9K → 9.4K tokens로 감소
- Prompt Cache 활용: 캐시 접두사 적중, DeepSeek 실측 적중률이 현저함
- Hashline 파일 재작성: 행 번호 앵커 + 내용 검증의 정밀한 행 단위 편집으로, 파일 전체 재작성을 방지
3. 높은 실행 효율: 도구 병렬 + 지속 세션
- V2d 동시 실행 엔진: 도구 호출을 자동으로 DAG 의존성 분석, 의존성 없는 도구는 병렬 실행
- 지속 bash 세션: 명령을 넘나들며 cwd와 환경을 유지, 매번 재구축할 필요 없음
- Provider 연결 예열: 스트리밍 응답 첫 패킷 지연을 현저히 감소
4. 보안 DNA: 언어 계층 보안 + 신뢰 체인 이중 안전장치
창줴의 타입 시스템과 메모리 안전성은 언어 계층에서 악성 코드 위험을 낮춘다. 플러그인 시스템은 SHA256 체크섬 + SM2 국밀 서명 검증(창줴 stdx.crypto 네이티브 구현, 외부 의존성 제로)을 더한다 —— 플러그인 보안은 "컴파일 시점 타입 검사 + 신뢰 체인 검증"의 이중 안전장치다.
5. 삼역(三域) capability 보안 모델
명령 / 도구 / 자원 세 영역의 화이트리스트 + 위험 작업 승인 체인, 기본은 관대하고 선언하면 엄격 —— 통제 가능한 실행 경계.
6. 완전히 사용 가능한 제품 형태
- TUI 전체 화면 인터페이스: 차분 렌더링, 6가지 테마, 멀티라인 편집기, 마우스 지원, 붙여넣기 안전
- Web 원격 구동: 내장 HTTP Server + WebSocket 스트리밍 대화 + REST API + 프런트엔드 SPA, Agent 원격 구동
- 워크스페이스 관리: 다중 프로젝트 등록 + 런타임 전환(chdir 실제 적용, 재시작 불필요)
- 다양한 Provider 즉시 사용: OpenAI / DeepSeek / GLM / Anthropic / Ollama, /provider 핫 스위치
- MCP 프로토콜: 창줴 언어 최초의 MCP 클라이언트 구현, 도구 네트워크 연결
- 스킬 시스템: Markdown이 곧 스킬, 선언적 로딩
7. 미래를 향한 멀티 agent 병렬 오케스트레이션
멀티 agent 협업은 업계에서 성숙한 패러다임이다(OpenAI Swarm의 handoff 직렬 인계 등). cjh는 이 패러다임을 참고하되, 병렬 서브 에이전트 + 컨텍스트 격리라는 방향을 선택했다.
토큰 절약은 분업 병렬의 핵심 목표이지 부산물이 아니다. 팀 협업의 상식은 각자 자신의 직무와 관련된 부분만 알면 된다는 것이다 —— 서브 에이전트는 작업별로 컨텍스트를 격리하고, 목표는 같은 작업, 더 적은 토큰이다. 이는 handoff 직렬(이력이 지속적으로 누적됨)과 본질적으로 다르다. 후자는 처리량을 높이고, 전자는 동시에 비용을 최적화한다.
창줴의 M:N 경량 스레드가 이를 뒷받침한다 —— 서브 에이전트는 곧 프로세스 내부 스레드로, 스케줄링 오버헤드가 제로다. 전체 멀티 에이전트 시스템 역시 하나의 파일이다. (V4 계획 중, task 도구는 이미 explore/worker 기반을 마련함)
생태계 파급: 독립 배포 가능한 5개의 창줴 라이브러리
cjh 개발 과정에서 축적된 자산은 억지로 짜맞춘 기여가 아니다 —— 전부 무의존성 또는 공식 stdx만으로, 독립 배포 가능하다.
라이브러리 · 정체 cjterm · 터미널 UI 컴포넌트 라이브러리(ANSI/차분 렌더링/컴포넌트/크로스 플랫폼 터미널 계층) cjlog · 비동기 로그 라이브러리(레벨/이중 파일/예외 스택) cjconfig · 범용 계층형 설정 라이브러리(환경 변수 > 파일 > 기본값) cjutil · 도구 라이브러리(SHA-256/SM2/UTF-8/웹 페이지 추출/BM25/JSON 복구/SSRF) cjllm · LLM 프로토콜 라이브러리(OpenAI/Anthropic/Ollama/Mock)
이 라이브러리들은 창줴 생태계가 AI 프로그래밍 분야에서 보여주는 플래그십 실천이다 —— 창줴가 무엇을 할 수 있는지, cjh를 보면 안다.
빠른 시작
Linux: 단일 파일을 다운로드해 바로 실행 ./cjh-v1.3.2-linux-x64 # 최초 설정 mkdir -p ~/.cjh && echo '{"api_key": "sk-xxx"}' > ~/.cjh/auth.json # 또는 소스 빌드(창줴 SDK 1.0.5+ 필요) git clone https://github.com/yangyongzhen/cjh cd cjh && source cj-env.sh && cjpm build
소스에서 사용 가능까지의 완전한 품질 보증: 379개의 단위 테스트 전부 통과(별도로 libs/cjterm 라이브러리 패키지 93예) + 61개의 PTY 실제 터미널 통합 테스트 ——每一项 능력에 테스트가 뒷받침하므로, 데모 수준 프로젝트가 아니다.
맺음말
cjh의 가치는 "또 하나의 에이전트"에 있는 것이 아니라, 증명했다는 데 있다. 창제(仓颉) 언어로 코딩 에이전트를 만드는 것은 "창제로 한 번 다시 작성하는" 반복이 아니라, 단일 바이너리, 보안 DNA, 네이티브 동시성, 국밀(国密) 암호화, 다중 백엔드 크로스 플랫폼이라는 특성들이 조합되어 나온 실제 우위다.
당신의 프로젝트도 런타임 의존성, 토큰 비용, 실행 효율 또는 플러그인 보안에 발목이 잡혀 있다면, cjh는 창제 네이티브의 완전한 해답을 제시한다.
🔗 오픈소스 주소: https://github.com/yangyongzhen/cjh