README.zh-CN.md

June 15, 2026 · View on GitHub

Crab Code

Claude Code 的开源替代品,完全用 Rust 从零构建。

Rust License CI PRs Welcome

English | 中文


积极开发中 — 4970 测试 · 26 crate · ~161k LOC

Crab Code 是一个 Rust 原生的 Agentic Coding CLI。它对齐 Claude Code 的工具集、权限模型和交互方式,同时支持任意 LLM 提供商(Anthropic / OpenAI / DeepSeek / Bedrock / Vertex)。

快速开始

git clone https://github.com/lingcoder/crab-code.git && cd crab-code
cargo build --release
export ANTHROPIC_API_KEY=sk-ant-...

./target/release/crab                   # 交互式 TUI
./target/release/crab "解释这段代码"      # 单次模式
./target/release/crab -p "修复 bug"      # 非交互

更多用法见 crab --help。配置在 ~/.crab/config.toml(snake_case TOML),完整加载与合并规范见 docs/config-design.md

配置

配置来源优先级(低 → 高):

defaults  <  plugin  <  user  <  project  <  local  <  --config <file>     (file 层)
                                                            <
                                                       env  <  CLI flag    (runtime 层)
  • User~/.crab/config.toml(或 $CRAB_CONFIG_DIR/config.toml
  • Project$PWD/.crab/config.toml(入 git)
  • Local$PWD/.crab/config.local.toml(gitignored)
  • --config <path>:CLI 注入文件
  • -c key.path=value:dotted runtime 覆盖(TOML 语法,可重复)

config.toml 示例:

api_provider = "deepseek"
base_url = "https://api.deepseek.com/v1"
model = "deepseek-chat"
api_key = "sk-..."           # 可选;env 同时设置时 env 赢

[permissions]
allow = ["Bash(git:*)", "Read", "Edit"]
deny  = ["Bash(rm:*)"]       # deny 永远赢 allow

环境变量

env(runtime 层)永远赢 file。互斥变量按"高优先级先生效"。

分类变量用途
ProviderCRAB_API_PROVIDER覆盖 provider:anthropicopenaideepseekbedrockvertexcustom
ProviderCRAB_API_KEY通用 API key(任意 provider,最高优先级)
ProviderCRAB_MODEL覆盖模型名
ProviderCRAB_BASE_URL通用 base URL 覆盖
ProviderCRAB_CONFIG_DIR重定位配置根(默认 ~/.crab/
ProviderANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN仅 anthropic provider
ProviderANTHROPIC_BASE_URLAnthropic base URL(仅当 CRAB_API_PROVIDER=anthropic
ProviderOPENAI_API_KEYOpenAI provider
ProviderOPENAI_BASE_URLOpenAI base URL(仅当 CRAB_API_PROVIDER=openai
ProviderDEEPSEEK_API_KEYDeepSeek provider
ProviderDEEPSEEK_BASE_URLDeepSeek base URL(仅当 CRAB_API_PROVIDER=deepseek
BedrockAWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY静态凭证
BedrockAWS_SESSION_TOKEN可选 session token(用于临时凭证)
BedrockAWS_REGION / AWS_DEFAULT_REGIONAWS 区域
BedrockAWS_ROLE_ARN要扮演的 IAM role ARN
BedrockAWS_WEB_IDENTITY_TOKEN_FILEOIDC token 文件(web-identity 扮演角色)
BedrockAWS_EXTERNAL_ID跨账户扮演角色的 External ID
BedrockAWS_ROLE_SESSION_NAME扮演角色时的 session 名
VertexGOOGLE_CLOUD_PROJECT / GCLOUD_PROJECTGCP project ID
VertexGOOGLE_CLOUD_REGIONGCP 区域(默认 us-central1
VertexGOOGLE_APPLICATION_CREDENTIALSService account key JSON 路径
ShellCRAB_SHELLbash/zsh 路径(覆盖 Bash 工具的自动探测)
ShellSHELLPOSIX 标准变量,CRAB_SHELL 未设置时作为 fallback
ShellCRAB_USE_POWERSHELL_TOOL真值在 Windows 上启用 PowerShell 工具(默认关闭)
AgentCRAB_COORDINATOR_MODE1 启用 Agent Teams 协调模式
AgentCRAB_AUTO_DREAM1 启用会话间后台记忆整理
AgentCRAB_AUTO_DREAM_MIN_HOURS两次整理的最小间隔小时数(默认 6)
AgentCRAB_AUTO_DREAM_MIN_SESSIONS触发整理的最小会话数(默认 2)
TLSCRAB_CA_BUNDLE自定义 CA 证书 bundle 路径(PEM 格式)
TLSSSL_CERT_FILE / SSL_CERT_DIR标准 OpenSSL CA 覆盖

对比

Crab CodeClaude CodeOpenCodeCodex CLI
开源Apache 2.0闭源MITApache 2.0
语言RustTypeScriptTypeScriptRust
模型任意Anthropic任意仅 OpenAI
MCP3 传输6 传输LSP2 传输

架构

26 个 Rust crate,4 层依赖。详见 docs/architecture.md

入口    cli
编排    agents · engine · session · tui · remote
服务    api · tools · commands · hooks · mcp · acp · skills · plugin · telemetry · ide · sandbox · swarm · cron · fs · memory · process
基础    core · utils · config · auth

构建与测试

cargo build --workspace
cargo nextest run --workspace          # 或: cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings

贡献

欢迎 PR。

许可证

Apache License 2.0