본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 05. 20. 02:39

코딩 에이전트 구축을 위한 완전한 Rust SDK

요약

Cersei는 프로덕션급 코딩 에이전트 구축을 위해 설계된 완전한 Rust SDK입니다. 도구 실행, LLM 스트리밍, 서브 에이전트 오케스트레이션 및 MCP 통합 등 핵심 기능을 라이브러리 형태로 제공하여 Claude Code와 같은 에이전트를 직접 구축하거나 앱에 내장할 수 있게 합니다.

핵심 포인트

  • Rust 언어를 기반으로 하여 높은 성능과 메모리 효율성을 제공합니다.
  • 도구 실행, 지속성 메모리, 서브 에이전트 오케스트레이션 등 에이전트 구축에 필요한 모든 구성 요소를 포함합니다.
  • Claude Code의 아키텍처를 역공학하여 포팅하였으며, 멀티 프로바이더를 지원합니다.
  • Cersei를 기반으로 구축된 CLI 에이전트인 Abstract는 Claude Code 대비 압도적인 시작 시간과 낮은 메모리 점유율을 보여줍니다.

코딩 에이전트 (coding agents) 구축을 위한 완전한 Rust SDK입니다.

Cersei는 도구 실행 (tool execution), LLM 스트리밍 (LLM streaming), 서브 에이전트 오케스트레이션 (sub-agent orchestration), 지속성 메모리 (persistent memory), 기술 (skills), MCP 통합 (MCP integration) 등 프로덕션급 코딩 에이전트 구축에 필요한 모든 구성 요소를 조합 가능한 라이브러리 함수로 제공합니다. Claude Code의 대체제를 구축하거나, 앱에 에이전트를 내장하거나, 완전히 새로운 것을 만들어보세요.

use cersei::prelude::*;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
...

MIT License | Adib Mohsin 제작 | Docs | GitHub

Claude CodeOpenCodeCersei SDKAbstract CLI
형태 (Form factor)CLI 앱CLI 앱라이브러리 (Library)CLI 앱
내장 가능 여부 (Embeddable)아니요아니요아니요 (SDK 사용)
제공자 (Provider)Anthropic 전용멀티 프로바이더 (Multi-provider)멀티 프로바이더 (Multi-provider)멀티 프로바이더 (Multi-provider)
언어 (Language)TypeScriptTypeScriptRustRust
커스텀 도구 (Custom tools)플러그인 (Plugins)플러그인 (Plugins)impl Tool / #[derive(Tool)]SDK를 통해
시작 시간 (Startup)~269ms~300ms해당 없음 (라이브러리)~34ms
바이너리 / RSS174MB / 330MB해당 없음5.8MB / 4.9MB
메모리 (Memory)파일 기반 (File-based)SQLite파일 + 그래프 (File + Graph)파일 + 그래프 (File + Graph)
기술 (Skills).claude/commands/.claude/skills/두 형식 모두두 형식 모두

Cersei는 Claude Code의 아키텍처를 기반으로 구축되었으며 (역공학을 통한 Rust 포팅), 누구나 Claude Code, OpenCode 또는 모든 코딩 에이전트를 라이브러리 호출만으로 완벽하게 대체할 수 있도록 설계되었습니다.

Abstract는 Cersei를 기반으로 구축된 완전한 CLI 코딩 에이전트입니다. 단일 바이너리, 런타임 의존성 없음, 기본적으로 그래프 메모리 (graph memory)를 사용합니다.

# 설치 (Install)
cargo install --path crates/abstract-cli
# 사용 (Use)
...

모든 수치는 run_tool_bench.sh --full에서 가져왔습니다.

지표 (Metric)AbstractClaude Code승자 (Winner)
시작 시간 (Startup, warm)32ms266msAbstract (8.2배)
바이너리 크기 (Binary size)6.0 MB174 MBAbstract (29배)
메모리 (Memory, RSS)4.9 MB333 MBAbstract (68배)
도구 디스패치 (Tool dispatch)0.02-17ms5-265ms+Abstract
메모리 회상 (Memory recall)98us (그래프)7,545ms (LLM)Abstract (77,000배)
메모리 쓰기 (Memory write)30us (그래프)20,687ms (에이전트)Abstract (689,000배)
MEMORY.md 로드9.6us17.1msAbstract (1,781배)
순차 처리량 (Sequential throughput)906ms/req12,079ms/reqAbstract (13.3배)
시스템 프롬프트 토큰 (System prompt tokens)~2,200~8,000+Abstract (3.6배 적음)
회상을 위한 LLM 호출 (LLM call for recall)불필요필요 (Sonnet)Abstract

Claude Code의 메모리 회상은 관련성이 높은 상위 5개 파일을 순위 매기기 위해 매 턴마다 Sonnet을 호출합니다 (측정값 7.5초). Abstract의 그래프는 98마이크로초(microseconds) 내에 인덱싱된 조회를 수행합니다. 동일한 기능을 제공하면서도 LLM 호출이 필요 없으며, API 비용도 발생하지 않습니다.

전체 벤치마크: crates/abstract-cli/benchmarks/REPORT.md

  • 34개의 내장 도구 (파일, 셸, 웹, 계획, 오케스트레이션, 스케줄링)
  • 멀티 프로바이더 (Multi-provider): Anthropic + OpenAI (+ Ollama, Azure, vLLM)
  • 그래프 메모리 (Grafeo) 기본 활성화
  • 자동 압축 (Auto-compact), 자동 드림 (Auto-dream), 노력 수준 (Low/Medium/High/Max)
  • MCP 서버 지원
  • 세션 지속성 (Claude Code 호환 JSONL)
  • 세션 캐싱을 포함한 대화형 권한 설정
  • 12개의 슬래시 명령어 (/help, /commit, /review, /memory, /model, /diff 등)
  • 구문 강조(Syntax highlighting)가 포함된 스트리밍 마크다운 렌더링
  • TOML 설정: ~/.abstract/config.toml + .abstract/config.toml
  • 파이핑(Piping)을 위한 JSON 출력 모드 (--json)
[dependencies]
cersei = { git = "https://github.com/pacifio/cersei" }
tokio = { version = "1", features = ["full"] }
...

그래프 기반 메모리 사용 시 (선택 사항):

cersei-memory = { git = "https://github.com/pacifio/cersei", features = ["graph"] }

cersei Facade crate — cersei::prelude::*;
cersei-types Provider-agnostic messages, errors, stream events (공급자 불가지론적 메시지, 오류, 스트림 이벤트)
cersei-provider Provider trait + Anthropic/OpenAI implementations (Provider 트레이트 + Anthropic/OpenAI 구현체)
...

어떤 LLM 백엔드(backend)든 가능합니다. 내장 기능: Anthropic (OAuth 포함), OpenAI (Ollama, Azure, vLLM과 호환).

Agent::builder().provider(Anthropic::from_env()?) // Anthropic API key
Agent::builder().provider(OpenAi::builder()
.base_url("http://localhost:11434/v1") // Ollama
.model("llama3.1:70b").api_key("ollama").build()?)
Agent::builder().provider(MyCustomProvider) // impl Provider

코딩 에이전트(coding agent)에 필요한 모든 도구(tool)가 세트로 구성되어 있습니다:

cersei::tools::all() // 30개 이상의 도구
cersei::tools::coding() // 파일 시스템 (filesystem) + 셸 (shell) + 웹 (web)
cersei::tools::filesystem() // 읽기 (Read), 쓰기 (Write), 편집 (Edit), Glob, Grep, NotebookEdit
...

10줄 만에 만드는 커스텀 도구(custom tools):

#[derive(Tool)]
#[tool(name = "search", description = "Search docs", permission = "read_only")]
struct SearchTool;
...

병렬 워커(parallel workers)를 생성하고, 작업을 조정하며, 에이전트(agent) 간에 메시지를 전달합니다:

// AgentTool — 모델이 자율적으로 하위 에이전트(sub-agents)를 생성함
Agent::builder()
.tool(AgentTool::new(|| Box::new(Anthropic::from_env()?), cersei::tools::coding()))
...
use cersei::memory::manager::MemoryManager;
let mm = MemoryManager::new(project_root)
.with_graph(Path::new("./memory.grafeo"))?; // 선택적 그래프 (graph) 레이어
...
// 다음으로부터 기술(skills)을 자동 검색:
// .claude/commands/*.md (Claude Code 형식)
// .claude/skills/*/SKILL.md (OpenCode 형식)
...

세 가지 관찰(observation) 메커니즘:

// 1. 콜백 (Callback)
Agent::builder().on_event(|e| match e {
AgentEvent::TextDelta(t) => print!("{}", t),
...
Agent::builder()
.auto_compact(true) // 컨텍스트 (context) 사용량이 90%에 도달하면 이전 메시지 요약
.compact_threshold(0.9) // 트리거 임계값 (threshold)
...
let mcp = McpManager::connect(&[
McpServerConfig::stdio("db", "npx", &["-y", "@my/db-mcp"]),
McpServerConfig::sse("docs", "https://mcp.example.com"),
...
// 브라우저 실행, PKCE 플로우, 토큰 저장, 리프레시
cargo run --example oauth_login
Agent::builder()
// 프로바이더 (Provider, 필수)
.provider(Anthropic::from_env()?)
...

Apple Silicon에서 측정되었으며, 릴리스 빌드(release build) 기준, 3회의 워밍업(warmup) 실행을 포함한 100회 반복 측정 결과입니다.

도구 (Tool)평균 (Avg)최소 (Min)최대 (Max)
Edit0.04ms0.02ms0.05ms
...

참고: Cersei는 라이브러리(library)이므로 도구 디스패치(tool dispatch)가 프로세스 내부(in-process)에서 발생합니다. Claude Code는 각 서브 에이전트(sub-agent)가 포크(fork)될 때마다 전체 시작 비용을 지불해야 하는 CLI(Command Line Interface)입니다. 이들은 서로 다른 계층이며, 아래 비교는 프로세스 내부 디스패치와 CLI 프로세스 오버헤드(overhead) 사이의 격차를 보여줍니다.

지표 (Metric)Cersei (SDK)Claude Code (CLI)비고 (Notes)
도구 디스패치 (Read)0.09ms~5-15ms (추정)프로세스 내부 vs Node.js fs
...

동일 조건의 CLI 비교를 보려면 Abstract CLI 벤치마크를 참조하십시오.

작업 (Operation)Abstract (Cersei)Claude Code (측정값)비율 (Ratio)
100개 파일 스캔1.2ms26.6ms (find)22x
MEMORY.md 로드9.6μs17.1ms1,781x
메모리 회상 (그래프)98μs7,545ms (LLM 호출)77,000x
메모리 회상 (텍스트)1.3ms17.5ms (grep)13x
세션 쓰기27μs/entry해당 없음 (N/A)
세션 로드 (100)268μs해당 없음 (N/A)
그래프 저장30μs/node해당 없음 (그래프 없음)
주제 쿼리77μs해당 없음 (그래프 없음)

각 벤치마크(bench)는 자체 러너(runner)와 결과 스키마(schema)를 가진 독립된 디렉토리에 존재합니다. 새로운 벤치마크를 추가할 때는 형제 디렉토리로 추가하십시오.

스위트 (Suite)경로 (Path)측정 항목 (What it measures)러너 (Runner)
일반 에이전트 프레임워크 (General-agent frameworks)bench/general-agents/에이전트별 메모리, 인스턴스화 시간, 최대 동시 에이전트 수 — Cersei vs Agno / PydanticAI / LangGraph / CrewAI../bench/general-agents/run.sh
Terminal Bench 2.0bench/term-bench/전체 abstract CLI를 사용하여 Daytona 샌드박스 내부에서 수행하는 엔드 투 엔드 (End-to-end) 코딩 작업 (Linux x86_64 / arm64 바이너리가 트리 내에 포함됨)../bench/term-bench/run.sh
LongMemEval (장기 메모리)bench/long-mem/ICLR-25 LongMemEval 500개 질문 벤치마크에 대한 회상 정확도 — 동일한 프롬프트와 LLM-as-judge 루브릭을 사용하여 Mastra / Zep / Supermemory와 정면 대결. 네 가지 Cersei 설정: 전체 컨텍스트 베이스라인 (full-context baseline), usearch-HNSW 시맨틱 (semantic), grafeo-graph 서브스트링 (substring), LLM 사실 추출 + RRF 퓨전 (fusion)이 결합된 하이브리드 방식.cargo run --release -p longmem-bench -- --dataset s --config all
압축 (실제 LLM)crates/cersei-agent/tests/e2e_openai_compression.rsOpenAI (gpt-4o-mini) 및 Gemini (gemini-2.5-flash)에서 cersei-compression을 통한 입력 토큰 절감량. #[ignore] 처리됨, 실제 API 키로 실행됨.cargo test -p cersei-agent --test e2e_openai_compression -- --ignored --nocapture
SDK 도구 I/O (SDK Tool I/O)examples/benchmark_io.rsRead / Write / Edit / Grep / Bash / Glob에 대한 프로세스 내 도구 디스패치 지연 시간 (In-process tool dispatch latency).cargo run --example benchmark_io --release
SDK 메모리 I/O (SDK Memory I/O)crates/abstract-cli/examples/memory_bench.rs그래프 메모리 (Graph-memory) vs 파일 시스템 (filesystem) vs Claude Code 스타일 경로 비교.cargo run -p abstract-cli --example memory_bench --release
vs Claude Code CLIrun_tool_bench_claude.sh · run_tool_bench_codex.shCLI 대 CLI 시작, 메모리 및 디스패치 오버헤드 (overhead)../run_tool_bench.sh --iterations 20 --full
# Rust 측 SDK 벤치마크 (외부 서비스 없음)
cargo run --example benchmark_io --release
cargo run --release -p abstract-cli --example memory_bench
...
cargo run --example stress_core_infrastructure --release # 시스템 프롬프트 (system prompt), 압축 (compact), 컨텍스트 (context), bash 분류기 (bash classifier)
cargo run --example stress_tools --release # 30개 이상의 모든 도구 (tools), 레지스트리 (registry), 성능 (performance)
cargo run --example stress_orchestration --release # 하위 에이전트 (sub-agents), 코디네이터 (coordinator), 작업 (tasks), 메시징 (messaging)
...
예제 (Example)설명 (Description)
simple_agent3줄로 구성된 최소한의 에이전트
custom_tools커스텀 도구 (custom tools) 정의 및 등록
streaming_events색상이 적용된 출력을 제공하는 실시간 run_stream()
multi_listener다중 소비자 (multiple consumers)를 가진 브로드캐스트 채널 (broadcast channel)
resumable_sessionJsonlMemory를 사용한 영속화 및 재개
custom_provider에코 프로바이더 (Echo provider) + OpenAI 호환 엔드포인트 (endpoints)
hooks_middleware비용 가드 (cost guard) + 감사 로거 (audit logger) + 도구 차단기 (tool blocker)
benchmark_io전체 I/O 벤치마크 (benchmark) 스위트
usage_report토큰 (token)/비용 (cost) 추적 및 과금 추정
coding_agentPython Todo CLI 구축 (엔드 투 엔드)
oauth_loginAnthropic OAuth PKCE 로그인 흐름

cargo run --example simple_agent --release

# 160개의 모든 유닛 테스트 (unit tests) 실행
cargo test --workspace
# 그래프 메모리 (graph memory)로 실행 (grafeo 필요)
...

160개 유닛 테스트 (unit tests) | 262개 스트레스 체크 (stress checks) | 0개 실패 (failures) | I/O 회귀 (regression) 0건

항목 (What)방법 (How)예제 (Example)
커스텀 프로바이더 (Custom provider)impl Provider로컬 LLM, Azure, Bedrock
커스텀 도구 (Custom tool)#[derive(Tool)] 또는 impl ToolDB 쿼리 (query), 배포 (deploy), 검색 (search)
커스텀 권한 (Custom permissions)impl PermissionPolicyRBAC, OAuth 범위 지정 (OAuth-scoped)
커스텀 메모리 (Custom memory)impl MemoryPostgreSQL, Redis, S3
커스텀 훅 (Custom hooks)impl Hook비용 게이팅 (cost gating), 감사 로깅 (audit logging)
커스텀 리포터 (Custom reporters)impl Reporter대시보드 (dashboards), WebSocket 릴레이 (relay)
MCP 서버 (MCP servers)빌더 (builder)를 통한 McpServerConfig모든 MCP 호환 서버
스킬 (Skills).claude/commands/*.md커스텀 프롬프트 템플릿 (prompt templates)
그래프 메모리 (Graph memory)features = ["graph"]Grafeo 관계 추적 (relationship tracking)

cersei.pacifio.dev/docs — API 레퍼런스 (reference), 아키텍처 (architecture), 쿡북 (cookbooks), 벤치마크 (benchmarks) 및 llms.txt 지원을 포함한 전체 문서.

섹션 (Section)내용 (Content)
빠른 시작 (Quick Start)10줄로 만드는 첫 번째 에이전트
...

MIT 라이선스 (MIT License)

Copyright (c) 2025 Adib Mohsin

본 소프트웨어(이하 "Software") 및 관련 문서 파일(이하 "Software")의 복제본을 입수하는 모든 사람에게, Software를 제한 없이 취급할 수 있는 권한을 무상으로 허용합니다. 여기에는 Software의 복제본을 사용, 복사, 수정, 병합, 게시, 배포, 서브라이선스 부여 및/또는 판매할 수 있는 권한과 Software를 제공받은 사람에게 동일한 권한을 부여하는 권한이 포함되며, 다음 조건을 준수해야 합니다:

위의 저작권 고지(copyright notice)와 본 허가 고지(permission notice)는 Software의 모든 복제본 또는 상당 부분에 포함되어야 합니다.

본 Software는 상품성, 특정 목적에의 적합성 및 비침해성에 대한 보증을 포함하여(단, 이에 국한되지 않음) 명시적이든 묵시적이든 어떠한 종류의 보증 없이 "있는 그대로" 제공됩니다. 어떠한 경우에도 저자 또는 저작권자는 계약상의 행위, 불법 행위 또는 기타 방식에 관계없이 Software 또는 Software의 사용 또는 기타 거래와 관련하여 발생하는 모든 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Codex tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0