REPO DEEP DIVE · 2026-07-29 · 1JEHUANG/JCODE · Rust로 만든 초경량 코딩 에이전트 하네스

1jehuang/jcode 딥다이브
RAM을 가장 적게 먹는 Rust 코딩 에이전트 하네스

jcodeRust로 처음부터 새로 짠 터미널 기반 코딩 에이전트(AI 코딩 비서) 하네스다. "하네스(harness)"란 LLM에게 도구·기억·화면·세션 관리를 붙여 실제로 코드를 짜게 만드는 바깥 껍데기 프로그램을 말한다. Claude Code·Codex CLI·Cursor Agent·OpenCode 같은 도구와 같은 계열이지만, jcode는 "자원 효율"이라는 한 축에 모든 걸 몰아넣었다.

숫자가 곧 이 레포의 정체성이다. 세션 1개당 램 27.8 MB(로컬 임베딩 끔 기준) — Claude Code(386.6 MB)의 1/14. 첫 화면이 뜨는 시간 14 ms — Claude Code(3,437 ms)보다 245배 빠르다. 세션 10개를 동시에 띄우면 격차가 더 벌어진다(jcode 260 MB vs Claude Code 2,300 MB). 이 수치들은 저자가 같은 리눅스 머신에서 잰 것이다.

하지만 jcode는 단순히 가벼운 CLI가 아니다. 사람처럼 자동으로 기억을 떠올리는 메모리 그래프, 여러 에이전트가 한 저장소에서 협업하는 스웜(swarm), 에이전트가 자기 소스코드를 직접 고치는 셀프-데브(self-dev), 30개 넘는 LLM 제공자 로그인까지 담은 거대한 프로젝트다. 소스는 80개 Rust 크레이트로 쪼개져 있고, TUI 크레이트 하나만 19만 줄이 넘는다.

(저장소 1jehuang/jcode · 제작 Jehu Huang(1jehuang) · 라이선스 MIT · 버전 v0.61.2 · Rust 2024 에디션 · 80개 워크스페이스 크레이트 · ratatui TUI + tokio 비동기 + tract-onnx 로컬 임베딩 · Linux/macOS/Windows · TrendShift 데일리 13위 · 최신 커밋 2026-07-28)
목차
  1. 프로젝트 한 줄 요약
  2. 왜 지금 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 — 이 레포에서 배울 것
  7. 하드웨어 / 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한 줄 요약

한 문장으로: "메모리를 극한까지 아끼도록 Rust로 새로 짠, 기억·스웜·셀프데브까지 갖춘 터미널 코딩 에이전트"

jcode는 터미널에서 실행하는 AI 코딩 에이전트다. curl -fsSL https://jcode.sh/install | bash 한 줄로 설치하고, 터미널에 jcode를 치면 대화형 화면(TUI)이 뜬다. 자연어로 "이 버그 고쳐줘"라고 말하면 에이전트가 파일을 읽고, 코드를 수정하고, 명령을 실행하고, 테스트를 돌린다. 한 번만 실행하는 스크립트 모드(jcode run "...")도 있다.

한눈에 비유

"똑같은 AI 두뇌를 태우는 자동차인데, jcode는 경차 엔진 · 남들은 SUV 엔진"

Claude Code, Codex CLI, Cursor Agent, jcode는 모두 "바깥 껍데기 프로그램(하네스)"이다. 안에 태우는 LLM(두뇌)은 같을 수 있다 — jcode도 Claude·GPT·Gemini를 그대로 쓴다. 차이는 껍데기가 얼마나 무거운가다.

대부분의 하네스는 자바스크립트(Node.js)로 만들어져, 실행하면 무거운 런타임이 통째로 메모리에 올라온다. jcode는 Rust로 밑바닥부터 새로 짜서 그 무게를 걷어냈다. 그래서 세션 하나에 28 MB — 스마트폰 사진 몇 장 용량으로 완전한 코딩 에이전트가 돌아간다. 세션을 10개, 20개 띄우는 다중 세션 작업에서 이 차이가 결정적이 된다.

용어
하네스 (Harness)
LLM 자체는 "다음 단어를 예측하는 함수"에 불과하다. 여기에 파일 읽기·쓰기·명령 실행·화면 표시·대화 기록·도구 호출을 붙여 "실제로 일하는 에이전트"로 만드는 감싸는 프로그램이 하네스다. jcode·Claude Code·Codex CLI가 모두 하네스다.
용어
TUI (Terminal User Interface)
그래픽 창(GUI)이 아니라 터미널(검은 콘솔 화면) 안에 그려지는 화면. 텍스트 문자로 패널·표·다이어그램·색상을 그린다. jcode는 ratatui라는 Rust 라이브러리로 TUI를 그리고, 초당 1,000프레임 이상 렌더링할 수 있다.

2왜 지금 주목받는가

"AI 코딩 도구 홍수" 속에서 성능 수치와 독특한 기능 셋으로 차별화했기 때문

2026년 현재 코딩 에이전트 하네스는 수십 개가 경쟁 중이다(TrendShift 데일리 상위권이 죄다 하네스·스킬·에이전트다). 이 레드오션에서 jcode가 순위에 오른 이유는 "측정 가능한 우위"와 "남들이 안 한 기능" 두 가지다.

① 벤치마크로 증명한 압도적 자원 효율

jcode는 README 첫 화면을 경쟁 도구 8종과의 정량 비교표로 채운다. 자원 효율을 마케팅이 아니라 재현 가능한 숫자로 내세운 것이다.

지표 (1 세션 기준)jcodeClaude CodeCodex CLI
램(PSS) · 임베딩 끔27.8 MB386.6 MB140.0 MB
첫 화면까지 시간14.0 ms3,436.9 ms882.8 ms
첫 입력 반응48.7 ms3,512.8 ms905.8 ms
세션 10개 총 램260.8 MB2,300.6 MB334.8 MB
세션 추가당 램 증가~10.4 MB~212.7 MB~21.6 MB
왜 이게 중요한가

혼자 세션 한 개만 쓰면 386 MB든 28 MB든 체감이 없다. 하지만 요즘 에이전트 워크플로는 여러 세션을 동시에 띄워 병렬로 일을 시킨다(스웜). Claude Code로 세션 10개를 띄우면 램 2.3 GB가 날아가지만, jcode는 261 MB로 끝난다. 노트북 한 대에서 몇 배 많은 에이전트를 동시에 굴릴 수 있다는 뜻이다.

② 사람처럼 "저절로 떠오르는" 메모리 시스템

대부분의 하네스에서 기억(memory)은 에이전트가 "메모리 저장 도구"를 직접 불러야 작동한다. 토큰도 많이 먹고, 자주 까먹는다. jcode는 여기에 임베딩 기반 자동 회상을 넣었다. 대화의 매 턴을 의미 벡터로 바꿔 저장하고, 새 턴마다 코사인 유사도로 관련 기억을 그래프에서 찾아 자동으로 대화에 끼워 넣는다. 에이전트가 도구를 부르지 않아도, 사람이 문득 관련 기억을 떠올리듯 정보가 딸려 온다는 것이다.

③ 스웜 · 셀프데브 — 남들이 안 하는 기능

같은 저장소에 에이전트 여럿을 띄우면 서버가 이들을 자동 관리한다. A가 파일을 고치면, 그 파일을 읽었던 B에게 "발밑의 코드가 바뀌었다"고 알린다. 에이전트끼리 DM·브로드캐스트로 메시지도 주고받는다. 여기에 셀프데브(self-dev) — 에이전트에게 "자기 개발 모드로 들어가"라고 하면 jcode가 자기 자신의 소스코드를 고치고, 빌드하고, 자기 바이너리를 새로 로드해 계속 작업한다. 자기를 개조하는 하네스라는 점이 커뮤니티의 흥미를 끌었다.

주의 · 성숙도
아직 1인 개발 · 0.x 버전

인상적인 수치와 기능에도 불구하고 jcode는 버전 0.61.2, 사실상 1인(Jehu Huang) 프로젝트다. iOS 앱·자체 터미널(handterm)·새 git 대체 원시타입 등은 아직 "계획/진행 중"이다. 벤치마크도 저자 본인 머신 단일 측정치라 환경에 따라 달라질 수 있다. 프로덕션 도입 전엔 직접 재보는 것이 안전하다.

3기술 스택 전체 지도

"전부 Rust" — 언어 하나로 CLI·TUI·서버·LLM 클라이언트·로컬 임베딩까지 통합

jcode의 핵심 설계 결정은 "모든 걸 Rust 하나로"다. Node.js·Python 런타임을 끼지 않기 때문에 시작이 빠르고 메모리가 작다. Rust 2024 에디션을 쓰며, 워크스페이스는 80개 크레이트로 잘게 나뉘어 있다.

런타임 · 비동기 기반

영역사용 기술역할
언어Rust (2024 edition)메모리 안전 + 무 GC + 네이티브 속도
비동기 런타임tokio네트워크·파일·프로세스·시그널 동시 처리
메모리 할당자jemalloc (tikv-jemallocator)다중 세션에서 파편화 억제, 램 절감
HTTP 클라이언트reqwest (rustls-tls)LLM API 호출 · OpenSSL 불필요(순수 Rust TLS)
웹소켓tokio-tungstenite스트리밍 응답 · 실시간 세션 통신
직렬화serde / serde_jsonNDJSON 프로토콜 프레임 인코딩

프론트엔드 (터미널 UI)

영역사용 기술역할
TUI 프레임워크ratatui 0.30터미널에 패널·표·위젯 렌더링
터미널 백엔드crossterm 0.29키 입력·마우스·화면 제어(크로스 플랫폼)
다이어그램mermaid-rs-renderer (자작)브라우저·TS 없이 mermaid 렌더 · 1800배 빠름
자체 터미널handterm (자작, WIP)네이티브 스크롤 API + 고효율 스크롤백
데스크탑 앱jcode-desktop / desktop2GUI 클라이언트(7만+2.5만 줄)

AI · 메모리 · 도구

영역사용 기술역할
로컬 임베딩tract-onnx + tract-hir + tokenizers순수 Rust ONNX 추론 — PyTorch 없이 벡터 생성
메모리 회상의미 벡터 그래프 + 코사인 유사도관련 기억 자동 주입 · 세션 RAG 검색
도구 프로토콜MCP (stdio 서버)외부 도구 연결 · Claude Code 설정 호환
제공자(Provider)30+ (claude/openai/gemini/copilot…)OAuth 구독 로그인 + OpenAI 호환 엔드포인트
용어
tract-onnx · 로컬 임베딩
ONNX는 학습된 신경망 모델의 표준 파일 포맷. tract는 이를 순수 Rust로 실행하는 추론 엔진이다. 덕분에 jcode는 무거운 Python·PyTorch·CUDA 없이도, 텍스트를 의미 벡터로 바꾸는 임베딩 모델을 프로그램 안에 통째로 담아 돌린다. 이게 "로컬 임베딩"이고, 램 27.8 MB는 이걸 끈 기준·167 MB는 켠 기준이다.
용어
Provider (제공자) · OAuth 구독 로그인
jcode는 API 키를 새로 사지 않고 이미 구독 중인 계정으로 로그인해 쓰게 해준다(jcode login --provider claude). Claude·ChatGPT·Gemini·Copilot은 물론 OpenRouter·DeepSeek·Ollama·vLLM 같은 OpenAI 호환 엔드포인트까지 30종 이상. /account로 계정 여러 개를 즉시 갈아탈 수도 있다(토큰 소진 시 유용).

4아키텍처 심화 분석

"서버가 세션을 소유하고, 클라이언트는 붙었다 떨어지는" 클라이언트-서버 하네스

jcode의 뼈대는 서버-클라이언트 분리다. 에이전트의 실제 두뇌(런타임)는 백그라운드 서버에 살고, TUI·데스크탑·스크립트는 그 서버에 붙는 화면(클라이언트)일 뿐이다. 그래서 Claude Code로 시작한 세션을 jcode로 이어받거나, 한 세션에 여러 클라이언트가 붙는 게 가능하다.

┌──────────────────────────────────────────────────────────────┐ │ 사용자 (터미널 / 데스크탑) │ └───────────────┬──────────────────────────┬───────────────────┘ │ NDJSON 프레임(1줄=1이벤트) │ ┌───────▼────────┐ ┌────────▼────────┐ │ TUI 클라이언트 │ │ 데스크탑 클라이언트 │ ← "surface" │ (ratatui) │ │ (desktop2) │ 세션의 뷰 └───────┬────────┘ └────────┬────────┘ └────────────┬─────────────┘ │ jcode-harness-api │ (버전드 안정 API · v1.0) ┌─────────▼──────────┐ │ jcode 서버 │ ← 세션의 "진실의 원천" │ (harness-api-server)│ └─────────┬──────────┘ ┌──────────────────┼───────────────────────┐ ┌──────▼──────┐ ┌───────▼────────┐ ┌──────────▼─────────┐ │ 에이전트 런타임 │ │ 메모리 그래프 │ │ 도구 실행 │ │(agent-runtime)│ │ (임베딩+코사인) │ │ (tool-core · MCP) │ └──────┬──────┘ └───────┬────────┘ └──────────┬─────────┘ │ │ │ ┌──────▼───────────────────▼───────────────────────▼─────────┐ │ Provider 계층: claude / openai / gemini / copilot / …(30+) │ │ OAuth 로그인 · OpenAI 호환 · 스트리밍 chat completions │ └────────────────────────────────────────────────────────────┘ ▲ 스웜 모드: 같은 저장소에 서버가 세션 여러 개를 소유 → "파일 충돌 알림 · 에이전트 간 메시징"을 서버가 자동 중재

핵심 설계 패턴 1 — NDJSON 버전드 프로토콜

클라이언트와 서버는 jcode-harness-api라는 "안정된 계약"으로만 대화한다. 규칙이 엄격하다. 모든 프레임은 한 줄짜리 JSON 객체(NDJSON), 매 프레임은 프로토콜 버전 v를 달고 다니며, 클라이언트는 모르는 필드·이벤트는 무시해야 한다. 덕분에 서버가 새 기능을 추가해도(마이너 버전↑) 옛 클라이언트가 깨지지 않는다. 깨는 변경만 메이저 버전을 올리고 핸드셰이크에서 협상한다.

비유

이건 "국제 우편 규격" 같은 것이다. 봉투 겉면(버전·주소)만 표준을 지키면, 안에 새로운 서류를 넣어도 우체국이 문제없이 배달한다. 받는 쪽이 모르는 서류가 들어 있으면 그냥 무시하고 아는 것만 처리한다. 그래서 보내는 쪽과 받는 쪽이 서로 다른 버전이어도 통신이 안 끊긴다.

핵심 설계 패턴 2 — 컴파일 타임 격리(크레이트 경계)

80개 크레이트로 쪼갠 건 취향이 아니라 전략이다. ...-types 크레이트(예: jcode-message-types, jcode-memory-types)는 데이터 모양만 정의하고, ...-runtime 크레이트가 실제 동작을 담는다. AGENTS.md에는 "의존성 경계 래칫(dependency-boundary ratchet)"과 "와일드카드 재수출 금지" 가드레일이 있어, CI가 크레이트 간 잘못된 의존을 자동으로 막는다. 이렇게 잘게 나눠야 부분 재컴파일이 빨라지고, 셀프데브에서 에이전트가 자기 코드를 고칠 때 영향 범위가 좁아진다.

핵심 설계 패턴 3 — 프레임 성능 래칫

Cargo.toml에는 ratatui·crossterm 같은 렌더링 크레이트를 디버그 빌드에서도 최적화(opt-level)해 컴파일하라는 특수 프로파일이 잔뜩 있다. "매 TUI 프레임이 ratatui 버퍼를 셀 단위로 훑는다"는 주석과 함께다. 즉 렌더 핫패스만 골라 최적화해, 개발 중에도 초당 1,000프레임을 유지한다. "키 입력→화면 반영" 시간을 매 프레임 기록·노출하는 계측까지 최근 커밋에 들어갔다.

설계에서 배울 점
"성능은 기능이다"를 코드 구조로 강제

jcode는 성능을 나중에 튜닝하는 대상이 아니라 아키텍처 제약으로 못 박았다. 타입/런타임 크레이트 분리, 의존성 래칫, 렌더 크레이트 선택적 최적화, 코드-크기·패닉·삼킨-에러 래칫까지 — CI가 이 모든 걸 회귀 방지선으로 지킨다. "빠르고 작게"를 사람의 의지가 아니라 자동 게이트로 유지하는 방식이 이 레포의 가장 큰 교훈이다.

5디렉토리 구조 해부

루트는 얇고, 무게는 전부 crates/ 아래 80개 크레이트에 있다
jcode/ ├── Cargo.toml ← 워크스페이스 정의(80 멤버) · 프로파일 · 의존성 핀 ├── Cargo.lock ← 26만 줄(!) 의존성 잠금 ├── README.md ← 39KB · 벤치마크표 · 프로바이더 · 기능 설명 ├── AGENTS.md ← 에이전트/기여자용 개발 규칙(가드레일·빌드) ├── OAUTH.md ← 프로바이더 OAuth 흐름 상세 ├── TELEMETRY.md ← 텔레메트리 정책(20KB) ├── src/ ← 얇은 진입점(bin) — 실제 로직은 crates로 위임 ├── crates/ ← ★ 본체: 80개 크레이트 │ ├── jcode-tui/ (194,673줄) 터미널 UI 본체 │ ├── jcode-app-core/ (128,711줄) 애플리케이션 코어 │ ├── jcode-base/ (101,751줄) 최하위 공통 기반 │ ├── jcode-desktop/ ( 73,041줄) 데스크탑 GUI │ ├── jcode-desktop2/ ( 25,051줄) 차세대 데스크탑 │ ├── jcode-embedding/ 로컬 ONNX 임베딩(tract) │ ├── jcode-harness-api/ 클라이언트↔서버 안정 프로토콜 │ ├── jcode-harness-api-server/ 서버 구현 │ ├── jcode-agent-runtime/ 에이전트 루프 │ ├── jcode-memory-types/ 메모리 그래프 자료형 │ ├── jcode-swarm-core/ 스웜(다중 에이전트 협업) │ ├── jcode-selfdev-types/ 셀프데브 자료형 │ ├── jcode-provider-*/ 제공자별 클라이언트(anthropic/openai/gemini…) │ ├── jcode-tui-mermaid/ (11,193줄) mermaid 렌더 │ └── … (총 80개, ...-types / ...-runtime 로 계층 분리) ├── docs/ ← 40+ 설계 문서(아키텍처·감사·제안) ├── changelog/ ← 버전별 JSON(v0.34 ~ v0.61) ├── ios/ ← iOS 네이티브 앱(진행 중) ├── telemetry-worker/ ← 텔레메트리 수집 워커 ├── scripts/ ← 빌드·설치·가드레일·원격빌드 스크립트 ├── tests/ ← 통합 테스트 └── .jcode/skills/ ← jcode 자체 스킬(예: optimization/SKILL.md)

구조에서 두 가지가 눈에 띈다. 첫째, 루트 src/는 얇고 크레이트가 무겁다 — 진입점만 루트에 두고 로직은 전부 크레이트로 위임하는 전형적인 대형 Rust 워크스페이스 패턴이다. 둘째, docs/40개가 넘는 설계 문서가 있다(멀티세션·스웜·메모리 아키텍처, 코드 품질 감사, 제안서 등). 1인 프로젝트치고 문서화 밀도가 매우 높은데, 이는 AI 에이전트가 이 문서를 읽고 셀프데브를 하도록 의도된 것이기도 하다.

6학습 포인트 — 이 레포에서 배울 것

Rust 대형 워크스페이스 설계 · 성능 엔지니어링 · AI 하네스 내부 구조

배울 것 1 — Rust 워크스페이스 모듈화

80개 크레이트가 어떻게 순환 의존 없이 계층을 이루는지가 살아있는 교과서다. 타입 크레이트(-types)를 바닥에 깔고, 런타임 크레이트가 그 위에 얹히는 패턴, Cargo.toml[profile.*.package.*]로 특정 크레이트만 최적화하는 기법, CI 가드레일로 경계를 강제하는 방법을 실전 규모로 볼 수 있다.

배울 것 2 — 임베딩 기반 자동 메모리 · RAG

"매 턴을 벡터로 저장 → 코사인 유사도로 관련 기억 회수 → 대화에 주입"이라는 RAG(검색 증강 생성)의 최소 실전 형태를 하네스 안에서 볼 수 있다. 게다가 이 임베딩을 클라우드 API가 아니라 로컬 ONNX로 돌린다는 점이, "프라이버시 + 비용 0 + 오프라인"을 어떻게 달성하는지 보여준다.

배울 것 3 — 성능 계측과 벤치마킹 문화

"첫 프레임 14 ms", "세션당 램 10 MB" 같은 수치를 어떻게 재현 가능하게 측정하는지(PTY 10회 실행, p50/p95 범위)가 README에 그대로 있다. tui_bench·memory_recall_bench 같은 벤치 바이너리를 직접 돌려보며 "성능을 숫자로 말하는" 습관을 익힐 수 있다.

배울 것 4 — 코딩 에이전트 하네스의 내부

Claude Code 같은 도구를 "블랙박스"로 쓰기만 했다면, jcode는 그 뚜껑을 열어준다. 프로바이더 추상화, 스트리밍 처리, 도구 호출(MCP), 세션 저장·재개, KV 캐시 최적화, 권한 UI가 각각 어떤 크레이트에 어떻게 구현됐는지 추적할 수 있다. "에이전트 grep"(파일 구조 정보를 grep 결과에 얹어 컨텍스트 절약) 같은 실전 최적화 아이디어도 얻는다.

실습 아이디어

작게 시작하는 3가지

① 벤치 재현: jcode를 설치해 jcode를 띄우고, 다른 CLI 하네스와 /usr/bin/time -v·ps로 램을 직접 비교해 본다. README 수치가 내 환경에서 얼마나 재현되는지 확인.

② 로컬 모델 붙이기: Ollama를 깔고 jcode login --provider ollama로 로컬 LLM을 연결해, API 비용 0으로 에이전트를 돌려 본다.

③ 크레이트 그래프 그리기: cargo tree로 크레이트 의존 관계를 뽑아, -types/-runtime 계층이 실제로 어떻게 갈리는지 직접 시각화.

7하드웨어 / 시스템 요구사항

쓰기는 매우 가볍지만, 소스 빌드는 무겁다
구분요구사항
실행 OSLinux · macOS · Windows 11(PowerShell 5.1+)
설치바이너리 1개 — curl … | bash 또는 irm …ps1 | iex
실행 램세션당 ~28 MB(임베딩 끔) / ~167 MB(로컬 임베딩 켬)
런타임 의존성없음(정적 바이너리) · Node/Python 불필요
LLM구독 계정(Claude/ChatGPT 등) 또는 API 키, 혹은 로컬 Ollama/LM Studio/vLLM
소스 빌드Rust stable + cargo · 증분 디버그 빌드 약 1분(저자 머신) — 리소스 부족 시 scripts/remote_build.sh로 원격 빌드 권장
함정 주의
"가벼운 실행" ≠ "가벼운 빌드"

jcode를 쓰는 것은 초경량이지만, 소스에서 컴파일하는 것은 무겁다. 80개 크레이트 + 26만 줄 Cargo.lock 탓에 최초 빌드는 오래 걸리고 램·CPU를 많이 쓴다. 셀프데브를 진짜로 돌리려면 넉넉한 개발 머신(또는 원격 빌드)이 필요하다. 저자도 "빌드가 죽으면 리소스 부족 때문이니 원격 빌드를 쓰라"고 안내한다.

8직접 해볼 수 있는 실습 과제

난이도별 5개 — 설치·사용부터 소스 개조까지
난이도 ★☆☆☆☆

과제 1 · 설치하고 첫 세션 띄우기 입문

curl -fsSL https://jcode.sh/install | bash로 설치 후 jcode 실행. 구독 계정으로 jcode login --provider claude(또는 openai) 로그인하고, "이 폴더 구조 설명해줘" 같은 간단한 요청을 던져 본다. Alt+C로 정렬 전환, /model로 모델 변경도 시도.

난이도 ★★☆☆☆

과제 2 · 램·속도 벤치 재현 초중급

jcode와 다른 하네스(Claude Code 등)를 각각 띄우고 ps -o rss·time으로 램과 시작 시간을 직접 측정해 README 표와 비교. 로컬 임베딩을 켠/끈 두 경우(167 MB vs 28 MB) 차이도 확인한다.

난이도 ★★★☆☆

과제 3 · 로컬 LLM으로 무료 에이전트 만들기 중급

Ollama에 qwen3-coder 같은 코딩 모델을 받고 jcode --provider ollama --model … run "hello"로 연결. vLLM을 띄웠다면 jcode provider add로 OpenAI 호환 엔드포인트를 등록해, API 비용 없이 코딩 에이전트를 굴려 본다.

난이도 ★★★★☆

과제 4 · 스웜으로 병렬 작업 중상급

같은 저장소에 세션 2~3개를 띄워, 한쪽이 파일을 고칠 때 다른 세션에 "코드가 발밑에서 바뀌었다" 알림이 오는지 관찰. 에이전트에게 스웜 툴로 서브 에이전트를 스폰해 작업을 나눠 시켜 본다.

난이도 ★★★★★

과제 5 · 소스 빌드 + 크레이트 하나 읽기 고급

레포를 클론해 cargo build로 직접 빌드하고(원격 빌드 고려), jcode-embedding 또는 jcode-harness-api 크레이트를 통째로 읽어 "로컬 임베딩이 어떻게 벡터를 만드는가" 또는 "NDJSON 프레임이 어떻게 정의되는가"를 추적. 여유가 되면 셀프데브 모드로 사소한 문구 하나를 에이전트에게 고치게 해 본다.

9관련 기술 심화 학습 로드맵

jcode를 완전히 이해하기 위한 4주 코스
주차주제학습 내용
1주차Rust 비동기 · 워크스페이스tokio 기본, 멀티 크레이트 워크스페이스, cargo tree·프로파일. 목표: jcode 크레이트 지도 읽기
2주차터미널 UI(ratatui)ratatui 위젯·버퍼 렌더링, crossterm 입력 처리. 목표: 간단한 TUI 앱 직접 제작
3주차임베딩 · RAG · 로컬 추론문장 임베딩, 코사인 유사도, 벡터 검색, ONNX/tract 로컬 추론. 목표: 미니 메모리 그래프 구현
4주차LLM 하네스 · MCP · 스트리밍프로바이더 추상화, OpenAI/Anthropic 스트리밍, MCP 도구 프로토콜, 세션 저장/재개. 목표: 초소형 하네스 프로토타입

10핵심 키워드 사전

이 문서에 나온 개념 빠른 정리
개념
Harness(하네스)
LLM에 도구·기억·화면·세션을 붙여 "실제로 일하는 에이전트"로 만드는 껍데기 프로그램. jcode·Claude Code·Codex CLI가 여기 속한다.
개념
PSS(Proportional Set Size)
프로세스가 실제로 점유하는 메모리를 공유 페이지까지 안분해 계산한 값. RSS보다 다중 프로세스 비교에 정확하다. jcode의 램 비교 기준.
개념
NDJSON
한 줄에 JSON 객체 하나씩 담는 스트림 포맷(Newline-Delimited JSON). jcode의 클라이언트↔서버 프로토콜 프레임 단위.
개념
코사인 유사도 · 임베딩
텍스트를 숫자 벡터로 바꾼 뒤(임베딩), 두 벡터가 이루는 각도로 "의미가 비슷한 정도"를 잰다. jcode 메모리 회상의 핵심.
개념
MCP(Model Context Protocol)
에이전트가 외부 도구·데이터에 접근하는 표준 프로토콜. jcode는 stdio MCP 서버를 지원하고 Claude Code의 mcp.json 설정도 호환한다.
개념
Swarm(스웜)
같은 저장소에서 여러 에이전트가 협업하는 모드. 서버가 파일 충돌 알림·에이전트 간 메시징을 자동 중재한다.
개념
Self-dev(셀프데브)
에이전트가 자기 자신의 소스코드를 편집·빌드·재로드해 스스로를 개선하는 모드. 프론티어 모델 사용이 권장된다.
개념
Ratchet(래칫) 가드레일
코드 크기·경고·패닉·의존성 경계 등에 "이보다 나빠지면 안 됨" 상한선을 두고 CI가 강제하는 회귀 방지선. jcode 품질 유지의 뼈대.

11참고 링크

원본과 함께 읽으면 좋은 자료