Evidence-first local agent harness + OPENCODE-grade TUI = auditable Rust CLI coding agent
Charm์ Windsurf Cascade๊ธ agent harness์ OPENCODE๊ธ TUI/๋๊ตฌ๋ฅผ ๊ฒฐํฉํ Rust ๊ธฐ๋ฐ AI ์ฝ๋ฉ ์์ด์ ํธ CLI์ ๋๋ค. ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค ์์ ์ ์ํ ๋ํํ ์์ด์ ํธ๋ก, ์๋ํ๋ ์ธ๋ฑ์ฑ, ๋๊ตฌ ํธ์ถ, ์ธ์ ๊ด๋ฆฌ, ๋ฉํฐ๋ชจ๋ธ ์ง์์ ์ ๊ณตํฉ๋๋ค.
Charm์ ์ฅ๊ธฐ ๋ชฉํ๋ ๋จ์ํ ํฐ๋ฏธ๋ ์ฑ๋ด์ด ์๋๋ผ ๊ทผ๊ฑฐ ์ถ์ ๊ฐ๋ฅํ ๋ก์ปฌ ์ฝ๋ฉ ์์ด์ ํธ OS์ ๋๋ค. Charm์ ๋ชจ๋ธ์๊ฒ API์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๊ธฐ์ตํ๋ผ๊ณ ์ํค์ง ์๊ณ , ๋๊ตฌ์ ๋ ํผ๋ฐ์ค๋ก ๊ฒ์ฆ๋ ๊ทผ๊ฑฐ๋ฅผ ๊ฐ์ ธ์จ ๋ค ๊ทธ ๊ทผ๊ฑฐ๋ฅผ ํ์ฌ ์ฝ๋๋ฒ ์ด์ค์ ๋ง๊ฒ ์ ์ฉํฉ๋๋ค.
Charm์ ํต์ฌ ์ ํ ๊ฐ์น๋ ๋ชจ๋ธ์ ๋ ๋๋ํ๊ฒ ๋ณด์ด๊ฒ ๋ง๋๋ ๊ฒ์ด ์๋๋ผ ์ด๋ค ๋ชจ๋ธ์ ์ฐ๋๋ผ๋ ์์ ์ ์ ์ ๋์ด๋ ๊ฒ์ ๋๋ค. ๋ชจ๋ธ์ ๊ธฐ์ต๊ณผ ์์ ๊ฐ์ ๊ธฐ๋์ง ์๊ณ , ๋ฐํ์์ด ๋จผ์ ์์ ์ ๊ตฌ์ฒดํํ๊ณ , ๊ทผ๊ฑฐ๋ฅผ ๋ชจ์ผ๊ณ , ๊ฒ์ฆ ๊ฐ๋ฅํ ํ๋กฌํํธ๋ฅผ ์ปดํ์ผํฉ๋๋ค.
- Cascade์ ๊ฐ์ : ๋ฐ์ด๋ ์ฝ๋๋ฒ ์ด์ค ์ดํด, ์ปจํ ์คํธ ๊ด๋ฆฌ, ํด ํธ์ถ ์ํฌํ๋ก์ฐ
- OPENCODE์ ๊ฐ์ : ๊ฐ๋ ฅํ TUI, ํ๋ถํ ๋๊ตฌ ์ธํธ, ์ ์ฐํ ํ์ฅ์ฑ
- Charm์ ์ฐจ๋ณ์ฑ: evidence-first, tool-first, reference-first, trace-first ํ๋ค์ค
- ๊ฒฐํฉ: ๋ก์ปฌ์์ ๋น ๋ฅด๊ฒ ์คํ๋์ง๋ง ๋ชจ๋ ํ๋จ๊ณผ ๋ณ๊ฒฝ์ ์ค๋ช ํ ์ ์๋ AI ์ฝ๋ฉ ์์ด์ ํธ
- ๋ชจ๋ธ ๋ ๋ฆฝ์ฑ: ๊ฐํ ๋ชจ๋ธ์ ๋ ๋น ๋ฅด๊ฒ ์ผํ๊ณ , ์ฝํ ๋ชจ๋ธ๋ ๊ฐ์ gate์ evidence spine์ ๋ฐ๋ผ ์ต์ ํ์ง์ ์ ์งํฉ๋๋ค.
๋๋ถ๋ถ์ ์์ด์ ํธ๋ ์์ ์ปจํ ์คํธ์์ ์์ํด ๋ชจ๋ธ์ด ํ์ํ๋ค๊ณ ํ๋จํ ๋๋ง ๋๊ตฌ์ ๊ฒ์์ ํ์ฅํฉ๋๋ค. Charm์ ๋ฐ๋๋ก ๋์ํฉ๋๋ค.
์ผ๋ฐ ์์ด์ ํธ:
3์์ ์์ -> ํ์ํ๋ฉด 10๊น์ง ํ์ฅ
Charm:
10 ์์ค์ ์์
์ ์ฐจ๋ฅผ ๊ธฐ๋ณธ ๊ฐ์ -> ํ์ ์๋ ๊ฒ์ ์์ ํ๊ฒ ๊ฐ์ฐ
์ด ์ฒ ํ์ ํ ํฐ ๋ญ๋น๋ฅผ ์๋ฏธํ์ง ์์ต๋๋ค. Charm์ ๋ด๋ถ์ ์ผ๋ก๋ ์ถฉ๋ถํ ๊น๊ฒ ์กฐ์ฌํ๊ณ , ๋ชจ๋ธ์๊ฒ๋ TokenSaver์ PromptCompiler๋ฅผ ๊ฑฐ์น ์ต์ํ์ ์ง์คํ ์ปจํ
์คํธ๋ง ์ ๋ฌํ๋ ๋ฐฉํฅ์ ์งํฅํฉ๋๋ค.
ํต์ฌ ์์น:
- Tool-first: ์ฝ๋, ํ์ฌ ์ํ, ๋น๋, ํ ์คํธ, ํ์ผ ๋ด์ฉ์ ๋ํ ํ๋จ์ ๋๊ตฌ ์ฌ์ฉ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. ๋๊ตฌ ์๋ต์ ๋ชจ๋ธ์ ๊ฐ์ด ์๋๋ผ skip gate๊ฐ ํ์ฉํด์ผ ํฉ๋๋ค.
- Reference-first: ์ธ๋ถ API, ํ๋ ์์ํฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ ์ Context7 ๊ฐ์ docs MCP, ์ค์น๋ ํจํค์ง ์์ค, ๊ณต์ ๋ฌธ์๋ฅผ ์ฐ์ ํฉ๋๋ค.
- Concretize-first: ์ถ์์ ์ธ ์์ฒญ์ ๋ฐ๋ก ์คํํ์ง ์๊ณ ๋ชฉํ, ๋ฒ์, ์ฑ๊ณต ์กฐ๊ฑด, ๊ฒ์ฆ ๋ฐฉ๋ฒ์ด ๋ด๊ธด task contract๋ก ๋ฎ์ถฅ๋๋ค.
- Token-minified: raw output์ trace์ ๋ณด์กดํ๊ณ , ๋ชจ๋ธ์๊ฒ๋ line/span/error๋ฅผ ์์ง ์๋ ์ต์ evidence view๋ง ์ ๋ฌํฉ๋๋ค.
- Verification-first completion: ์๋ฃ ์ ์ธ์ ํ ์คํธ, ๋น๋, ํ์ ์ฒดํฌ, ์๋ ์ฌํ ๊ฐ์ ๊ฒ์ฆ ๊ทผ๊ฑฐ ๋ค์๋ง ๊ฐ๋ฅํฉ๋๋ค.
- Trace-first: ๋ชจ๋ ๋๊ตฌ ํธ์ถ, ํธ์ง, ํ ์คํธ, ๋ ํผ๋ฐ์ค๋ ๋์ค์ ์ค๋ช ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
Charm์ ๋ชจ๋ธ์ ์คํ ์ฃผ์ฒด๋ก๋ง ๋์ง ์๊ณ , ํ๋ค์ค๋ฅผ ์คํ ํต์ ์ธต์ผ๋ก ๋ก๋๋ค.
User request
-> TaskContract
-> EvidencePack
-> ReferencePack
-> PromptSections
-> Model/tool loop
-> Verification
-> Trace
์ด ๊ตฌ์กฐ์์ ๋ชจ๋ธ์ "๋ชจ๋ ๊ฒ์ ๊ธฐ์ตํ๋ ๋๋"๊ฐ ์๋๋ผ, Charm์ด ์์งํ ๊ทผ๊ฑฐ์ ๊ณ์ฝ์ ๋ฐํ์ผ๋ก ํ๋จํ๋ ์คํ ์์ง์ ๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ธ์ด ๋ฐ๋์ด๋ ์์ ํ์ง์ ์ข์ฐํ๋ ํต์ฌ ์ ์ฐจ๋ ์ ์ง๋ฉ๋๋ค.
์์ธํ ์ ๋ต๊ณผ ์ฒ ํ์ docs/charm-strategy.md๋ฅผ ๋ณด์ธ์.
- Rust 1.85+ (2024 edition)
- Git
# ํด๋ก
git clone <repository-url>
cd charm
# ๋น๋
rtk cargo build --release
# ๋๋ ๊ฐ๋ฐ ๋น๋
rtk cargo build# ์ ์ฒด ํ
์คํธ
rtk cargo test
# ์ฒดํฌ๋ง (๋น ๋ฅธ ๊ฒ์ฆ)
rtk cargo check# ๊ธฐ๋ณธ ๋ชจ๋ธ๋ก ์์ (๊ธฐ๋ณธ: moonshotai/kimi-k2.6)
charm
# ํ๋กฌํํธ ์ง์ ์ ๋ฌ
charm "์ด ํ๋ก์ ํธ ์ค๋ช
ํด์ค"
# ํน์ ๋ชจ๋ธ ์ฌ์ฉ
charm model claude-sonnet-4-5 "๋ฆฌํฉํ ๋งํด์ค"
charm model openai/gpt-4.1 "๋ฒ๊ทธ ์์ ํด์ค"
# ์ ์ธ์
์์
charm new
# ๋ง์ง๋ง ์ธ์
์ด์ดํ๊ธฐ
charm resume
# ํน์ ์ธ์
ID๋ก ์ฌ๊ฐ
charm session <session-id>
# ๋ค๋ฅธ ์ํฌ์คํ์ด์ค์์ ์์
charm workspace /path/to/project
# ๋ค๋ฅธ ์ํฌ์คํ์ด์ค์์ ๋ช
๋ น ์คํ
charm workspace /path/to/project indexcharm init
# .charm/ ๋๋ ํ ๋ฆฌ ์์ฑcharm index
# ์ํฌ์คํ์ด์ค ํ์ผ ๋ฐ ์ฌ๋ณผ ์ธ๋ฑ์ฑcharm toolscharm exec <tool-name> --args '{"key": "value"}'# ํ๋๋ ๋ชจ๋ธ์ด ์์
์ ๋ถํดํ๊ณ ์คํ
charm delegate "๋ฆฌํฉํ ๋ง: ์๋ฌ ์ฒ๋ฆฌ ๊ฐ์ "
# ์ปค์คํ
ํ๋๋ ๋ชจ๋ธ ์ง์
charm delegate "API ์ถ๊ฐ" --planner-model claude-opus-4Charm์ ๋ค์ AI providers๋ฅผ ์ง์ํฉ๋๋ค. ๊ธฐ๋ณธ UX๋ REPL ์์์ /provider connect <id>๋ก ์ฐ๊ฒฐํ๊ณ ~/.charm/auth.json์ ์ ์ฅํ๋ ๋ฐฉ์์
๋๋ค. ํ๊ฒฝ ๋ณ์๋ ๊ณ์ ์ง์ํฉ๋๋ค.
| Provider | ํ๊ฒฝ ๋ณ์ | ๋น๊ณ |
|---|---|---|
| OpenAI | OPENAI_API_KEY |
OpenAI API ํค |
| OpenAI Codex | CODEX_HOME ๋๋ ~/.codex/auth.json |
Codex CLI ์ธ์ฆ ํ์ผ ์ฌ์ฌ์ฉ |
| Anthropic | ANTHROPIC_API_KEY |
Claude API ํค |
| Google (Gemini) | GEMINI_API_KEY ๋๋ GOOGLE_API_KEY |
Google AI API ํค |
| OpenRouter | OPENROUTER_API_KEY |
๊ธฐ๋ณธ๊ฐ (moonshotai/kimi-k2.6) |
| Ollama | OLLAMA_API_KEY (์ ํ) |
๋ก์ปฌ ๋ชจ๋ธ, ๊ธฐ๋ณธ๊ฐ "ollama" |
# OpenAI
export OPENAI_API_KEY="sk-..."
# Anthropic
export ANTHROPIC_API_KEY="sk-ant-..."
# Google/Gemini
export GEMINI_API_KEY="..."
# ๋๋
export GOOGLE_API_KEY="..."
# OpenRouter (๊ธฐ๋ณธ๊ฐ)
export OPENROUTER_API_KEY="sk-or-..."
# Ollama (๋ก์ปฌ)
export OLLAMA_API_KEY="ollama" # ์ ํ์ฌํญTUI์์๋ Ctrl+Shift+P ๋๋ /provider๋ก provider ์ฐ๊ฒฐ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
mac/terminal์ด Ctrl+Shift+letter๋ฅผ ์ฑ๊น์ง ์ ๋ฌํ์ง ๋ชปํ๋ฉด Ctrl+O ๋๋ Ctrl+Option+P๋ฅผ ์ฌ์ฉํ์ธ์.
์ฐ๊ฒฐ๋ provider๋ฅผ ์ ํํ๋ฉด ํด๋น provider ๋ชจ๋ธ ๋ชฉ๋ก์ผ๋ก ๋ฐ๋ก ์ด๋ํ๊ณ , ๋ฏธ์ฐ๊ฒฐ provider๋ฅผ ์ ํํ๋ฉด REPL ์์์ auth wizard๊ฐ ์ด๋ฆฝ๋๋ค.
# provider/model ํ์
charm model anthropic/claude-sonnet-4-5
charm model openai/gpt-4.1
charm model google/gemini-2.5-pro
charm model ollama/qwen3-coder:30b
# ์๋ provider ๊ฐ์ง
charm model claude-... # anthropic
charm model gpt-... # openai
charm model gemini-... # google
charm model <name>:<tag> # ollama์ธ์
์ค์๋ /model provider/model-id๋ก provider client๊น์ง ์ฌ์ฐ๊ฒฐํฉ๋๋ค.
์: /model ollama/qwen3-coder:30b, /model openai/gpt-4.1.
charm/
โโโ cli.rs # CLI ์ธ์ ํ์ฑ (clap)
โโโ main.rs # ์ง์
์ , ๋ช
๋ น ๋ผ์ฐํ
โโโ runtime/
โ โโโ session_runtime.rs # ์ธ์
๊ด๋ฆฌ, TUI ํตํฉ
โ โโโ router.rs # ๋ฉ์์ง ๋ผ์ฐํ
โ โโโ mcp.rs # MCP ํ๋กํ ์ฝ
โ โโโ workspace.rs # ์ํฌ์คํ์ด์ค ์ํ
โโโ providers/
โ โโโ factory.rs # Provider ํฉํ ๋ฆฌ, ์ธ์ฆ ํด๊ฒฐ
โ โโโ client.rs # ๊ณตํต ํด๋ผ์ด์ธํธ ํธ๋ ์ดํธ
โ โโโ openai.rs # OpenAI ๊ตฌํ
โ โโโ anthropic.rs # Anthropic ๊ตฌํ
โ โโโ google.rs # Google/Gemini ๊ตฌํ
โ โโโ openrouter.rs # OpenRouter ๊ตฌํ
โ โโโ ollama.rs # Ollama ๋ก์ปฌ ๋ชจ๋ธ
โ โโโ openai_codex.rs # OpenAI Codex
โโโ tools/
โ โโโ mod.rs # ๋๊ตฌ ๋ ์ง์คํธ๋ฆฌ
โ โโโ command.rs # ์
ธ ๋ช
๋ น ์คํ
โ โโโ file.rs # ํ์ผ ์กฐ์
โ โโโ search.rs # ์ฝ๋ ๊ฒ์
โ โโโ browser.rs # ์น ๋ธ๋ผ์ฐ์ง
โ โโโ web_search.rs # ์น ๊ฒ์
โ โโโ github_cli.rs # GitHub CLI ํตํฉ
โ โโโ retrieval.rs # ์ปจํ
์คํธ ๊ฒ์
โ โโโ ...
โโโ agent/
โ โโโ runner.rs # ์์ด์ ํธ ์คํ๊ธฐ
โ โโโ loop_agent.rs # ๋ฉ์ธ ๋ฃจํ
โ โโโ prompt.rs # ํ๋กฌํํธ ์์ง๋์ด๋ง
โ โโโ task_concretizer.rs # ์์ฒญ์ task contract๋ก ๊ตฌ์ฒดํ
โ โโโ reference_broker.rs # ์ธ๋ถ/ํจํค์ง ๋ ํผ๋ฐ์ค pack ์ค๋น
โ โโโ token_saver.rs # raw output -> minified evidence view
โ โโโ prompt_compiler.rs # typed prompt section ์ปดํ์ผ
โ โโโ context_compressor.rs # ์ปจํ
์คํธ ์์ถ
โโโ indexer/
โ โโโ parser.rs # ์ฝ๋ ํ์ฑ (tree-sitter)
โ โโโ store.rs # ์ธ๋ฑ์ค ์ ์ฅ
โ โโโ types.rs # ์ธ๋ฑ์ค ํ์
โโโ harness/
โ โโโ checkpoint.rs # ์คํ ์ฒดํฌํฌ์ธํธ
โ โโโ memory.rs # ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
โโโ tui/
โ โโโ app.rs # Ratatui ๊ธฐ๋ฐ TUI
โโโ orchestrator/
โโโ broker.rs # ๋ฉํฐ์์ด์ ํธ ์ค์ผ์คํธ๋ ์ด์
- CLI ํ์ฑ (
cli.rs): ๋ช ๋ นํ ์ธ์ ํด์ - Provider ํด๊ฒฐ (
providers/factory.rs): ๋ชจ๋ธ ๋ฌธ์์ด โ Provider + ์ธ์ฆ - ์ธ์
๋ถํธ (
runtime/session_runtime.rs): TUI + ์์ด์ ํธ ์ด๊ธฐํ - ์์ด์ ํธ ๋ฃจํ (
agent/): LLM ํธ์ถ โ ๋๊ตฌ ์คํ โ ์๋ต - TUI ๋ ๋๋ง (
tui/): Ratatui๋ก ์ธํฐ๋ํฐ๋ธ ์ธํฐํ์ด์ค
์ด ๊ธฐ๋ณธ ํ๋ฆ์ ํ์ฌ ์คํ ๊ฐ๋ฅํ ์ ํ ๋ผ๋์ ๋๋ค. ์๋ ์ต์ข ํ ํ๋ค์ค ํ๋ฆ์ ์ด ๋ผ๋ ์์ ๊ฐ์ gate์ evidence compiler๋ฅผ ๋ผ์ ๋ฃ๋ ๋ฐฉํฅ์ ๋๋ค.
User task
-> TaskConcretizer
-> ReferenceGate
-> FastContextWorker
-> TokenSaver
-> PromptCompiler
-> Model/tool loop
-> VerificationGate
-> AgentTraceStore
-> SessionInsights
์ด ํ๋ฆ์ ์์ง ์ ๋ถ ๊ตฌํ๋ ์ต์ข ์ํ๊ฐ ์๋๋ผ Charm์ด ํฅํด์ผ ํ ์ ํ ์ค๊ณ ๋ฐฉํฅ์ ๋๋ค.
ํ์ฌ ์ผ๋ถ ์ปดํฌ๋ํธ๋ ์ค์ผ๋ ํค ๋๋ ๋ถ๋ถ ๊ตฌํ ์ํ์
๋๋ค. ์ค์ํ ๋ค์ ๋จ๊ณ๋ ์ ๊ฐ๋
์ ๋ ์ถ๊ฐํ๋ ๊ฒ์ด ์๋๋ผ, ์ด๋ฏธ ์๋ TaskConcretizer, ReferenceBroker, TokenSaver, PromptCompiler๋ฅผ ์ธ์
๋ฐํ์์ ํ์ ๊ฒฝ๋ก๋ก ์ฐ๊ฒฐํ๋ ๊ฒ์
๋๋ค.
- Task contract ๊ธฐ๋ณธ ๊ฒฝ๋ก: ์ธ์
์
๋ ฅ์ด
TaskConcretizer๋ฅผ ๊ฑฐ์ณ ๋ชฉํ, ์์ฉ ์กฐ๊ฑด, ๊ฒ์ฆ ์กฐ๊ฑด์ ๊ฐ์ง contract๋ก ๋ฎ์์ง๋๋ค. - Reference-first ๊ฒฝ๋ก:
ReferenceBroker๊ฐ Context7, local package source, registry, web fallback ์์๋กReferencePack์ ์ค๋นํฉ๋๋ค. outbound HTTP๋ URL guard์ DNS pinning์ ํต๊ณผํด์ผ ํฉ๋๋ค. - Prompt compiler ๊ฒฝ๋ก:
PromptAssembler๊ฐ task contract, reference pack, verification gate, autonomy policy๋ฅผ typed prompt section์ผ๋ก ๋ ๋๋งํฉ๋๋ค. - Trace/minification ๊ฒฝ๋ก: command full output์
.charm/logs/commands/<command_id>.log์ ์ ์ฅํ๊ณlog_ref/output_hash/byte count๋ฅผ tool metadata์ trace์ ๋จ๊น๋๋ค. ๋ชจ๋ธ-facing view๋TokenSaver/RTK filter๋ก ์ค์ด๋ full log reference๋ ์ ์งํฉ๋๋ค. - Runtime gates: ํ์ผ ํธ์ง ์ repo evidence gate, completion claim ์ verification gate, ์ํ๋ ๊ธฐ๋ฐ approval gate๊ฐ ์ธ์ ๋ฐํ์์์ ๋์ํฉ๋๋ค.
- Command lifecycle: non-blocking command๋
poll_command๋ก ์กฐํํ๊ณcancel_command๋ก ์ทจ์ํ ์ ์์ต๋๋ค. - Read path cache:
ToolRegistry์read_range๋.charm/cache/file-cache.jsonbackedFileCache๋ฅผ ์ฌ์ฉํด ์ธ์ ๊ฐ ๋ฐ๋ณต ํ์ผ ์ฝ๊ธฐ ๋น์ฉ์ ์ค์ ๋๋ค. - Slash command modal:
/help,/audit,/audit insights,/audit replay,/evidence*,/mcp,/lsp*,/provider์ฒ๋ผ ๊ธด ์ถ๋ ฅ์ transcript๋ฅผ ์ค์ผ์ํค์ง ์๊ณ scrollable modal๋ก ํ์๋ฉ๋๋ค. - Provider connector:
/provider์ provider overlay๊ฐ ์ธ์ฆ ์ํ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ,/model provider/model-id๋ ์ธ์ pinned model๋ฟ ์๋๋ผ ์ค์ provider client๋ ๊ต์ฒดํฉ๋๋ค. - Evidence browser:
/evidence,/evidence repo,/evidence refs๊ฐ ์ ์ฅ๋ ์ธ์ evidence/reference pack์.charm/sessions/<id>/์์ ์ฝ์ด ์์ฝํฉ๋๋ค. - Audit insights:
/audit insights [n]๊ฐ ๋ฐ๋ณต ์คํจ, missed context, missing reference risk๋ฅผ trace์์ ๋ถ์ํ๊ณ candidate workflow/rule/memory๋ฅผ ์ ์ํฉ๋๋ค. - Sub-agent export:
/agent export <id>๊ฐ sub-agent worktree status/diff/file snapshot์.charm/exports/markdown artifact๋ก ์ ์ฅํฉ๋๋ค. - Sub-agent PR draft:
/agent pr <id>๊ฐ remote ์ธ์ฆ ์์ด ๊ฒํ ๊ฐ๋ฅํ PR title/body/test plan markdown์ ์์ฑํฉ๋๋ค.
# ์ปดํ์ผ ์ฒดํฌ
rtk cargo check
# ํ
์คํธ ์คํ
rtk cargo test- Rust ์ฌ๋ณผ ์ธ๋ฑ์ฑ: ํจ์, ๊ตฌ์กฐ์ฒด, enum, impl ๋ฉ์๋ ์ง์ (๋งคํฌ๋ก, const/static, ๊ณ ๊ธ trait/generic ์ฒ๋ฆฌ๋ ์ ํ์ )
- ์ปดํ์ผ ์๋: CI๋
cargo clippy --all-targets --all-features -- -D warnings๋ก warning-free ์ํ๋ฅผ ๊ฐ์ ํฉ๋๋ค. - Fast Executor:
AgentLoop์ TUISessionRuntime์ ๋ ๋ฆฝ read-only batch ๊ฒฝ๋ก์ ์ฐ๊ฒฐ๋จ. TUI๋ mixed tool-call ์๋ต์์๋ consecutive read/search chunk๋ฅผ ๋ณ๋ ฌ ์คํํ๊ณ , start/finish event ordering, trace, providertool_call_idalignment๋ฅผ ๋ณด์กดํ๋ฉฐ mutating/approval-gated tools๋ ์์ฐจ ์คํํฉ๋๋ค. ์คํจ/์ ์ฑ ์ฐจ๋จ/์คํ์ค mutation ๋ค์ ์ถ๊ฐ mutation์mutating_schedulersynthetic result๋ก ์ฐจ๋จํด partial write ํ์ฐ์ ๋ง์ต๋๋ค. - ์บ์ ์์คํ
:
ToolCache๋ ๊ฒ์๋ฅ ๊ฒฐ๊ณผ,FileCache๋ persistentread_rangeํ์ผ ์ฝ๊ธฐ์ ์ ์ฉ๋ฉ๋๋ค. - Delegate ๋ชจ๋: ์คํ์ ๊ธฐ๋ฅ
- ์ปจํ ์คํธ ์์ถ ์ต์ ํ
- ๋ฉํฐ๋ชจ๋ฌ ์ ๋ ฅ ์ง์
- MCP ์๋ฒ ํตํฉ ํ์ฅ
[๋ผ์ด์ ์ค ์ ๋ณด ์ถ๊ฐ ์์ ]
์ด ํ๋ก์ ํธ๋ Windsurf Cascade์ ์ํฌํ๋ก์ฐ์์ ์๊ฐ์ ๋ฐ์ ๊ฐ๋ฐ๋์์ต๋๋ค.