Coder 是一款基于 Rust 的 AI 编程辅助工具,融合了 Claude Code 和 OpenCode 的核心能力,在终端中提供智能代码开发体验。它支持多种 AI 提供商、丰富的工具系统、多 Agent 协作以及可扩展的插件体系。
- 多模式运行:TUI 交互模式(默认)、Headless 非交互模式、Print 一次性查询模式
- 多 AI 提供商:支持 OpenAI 兼容接口、Anthropic Claude、Google Gemini 及自定义提供商
- 丰富的工具系统:文件操作、代码搜索、命令执行、Web 搜索等
- Slash 命令:内置 Git 操作、代码审查、测试、搜索等命令
- Agent 系统:多种专业 Agent 类型(编程、研究、调试、规划、审查)
- 可扩展:基于 Feature Flag 的阶段化功能(团队协作、技能系统、MCP、LSP 等)
# 克隆项目
git clone <repository-url>
cd coder
# 默认构建(TUI + OpenAI + Anthropic + 核心工具)
cargo build --release
# 安装到系统路径
cargo install --path .Coder 使用 Cargo Feature Flags 控制功能开关,可按需启用:
# 等价于默认特性集
cargo build --release --features "tui,ai-openai,ai-anthropic,ai-opencode"# 启用全部功能
cargo build --release --features "tui,ai-openai,ai-anthropic,ai-google,ai-opencode,tools-git,tools-docker,tools-db,tools-oauth,team,skill,subagent,memory,storage,server,mcp,lsp,sync,voice,oauth,analytics,permission,computer,worktree"| 阶段 | 功能 | 说明 |
|---|---|---|
| 核心 | tui, ai-openai, ai-anthropic, ai-opencode |
基础使用必备 |
| Phase 1 | team, skill, subagent, memory, storage, lsp, mcp |
团队协作、技能系统、MCP、LSP |
| Phase 2 | server, permission, sync, voice, oauth, analytics, computer, worktree, tools-git, tools-docker, tools-db, tools-oauth |
HTTP API、权限控制、云同步、语音、桌面自动化 |
常用构建示例:
# 开发调试(含 Git 工具)
cargo build --features "tui,ai-openai,ai-anthropic,ai-opencode,tools-git"Coder 使用 TOML 格式的配置文件,配置优先级从高到低:
- CLI 参数(最高优先级):
--model、--provider - 环境变量:
CODER_PROVIDER、CODER_MODEL、CODER_CONFIG - 项目配置:
./coder.toml(项目目录下) - 用户配置:
~/.coder/config.toml - 默认值(最低优先级)
# ~/.coder/config.toml 或 ./coder.toml
[ai]
default_provider = "openai"
[ai.provider.openai]
type = "openai"
api_key = "${OPENAI_API_KEY}" # 支持环境变量引用
base_url = "https://api.openai.com/v1"
model = "gpt-4o"
max_tokens = 4096
temperature = 0.7
top_p = 0.9
[ai.provider.claude]
type = "anthropic"
api_key = "${ANTHROPIC_API_KEY}"
# base_url 可选,默认使用 Anthropic API
model = "claude-sonnet-4-6"
max_tokens = 4096
temperature = 0.7
top_p = 0.9
[ai.provider.deepseek]
type = "openai"
api_key = "${DEEPSEEK_API_KEY}"
base_url = "https://api.deepseek.com/v1"
model = "deepseek-chat"
[ai.provider.gemini]
type = "google"
api_key = "${GEMINI_API_KEY}"
model = "gemini-2.0-flash"
[ai.provider.ollama]
type = "openai"
api_key = "ollama"
base_url = "http://localhost:11434/v1"
model = "llama3"
[ui]
theme = "coder-dark" # 主题:coder-dark, high-contrast
show_line_numbers = true # 代码块显示行号
syntax_highlight = true # 启用语法高亮
mouse_support = true # 启用鼠标支持
[tools]
confirm_before_exec = false # 工具执行前是否确认
timeout_seconds = 300 # 工具执行超时(秒)
max_output_bytes = 1_000_000 # 工具输出最大字节数
allowed_tools = [] # 允许的工具列表(空=全部允许)
[session]
auto_save_interval = 60 # 自动保存间隔(秒)
max_messages_before_compact = 100 # 触发消息压缩的阈值
max_context_tokens = 128000 # 最大上下文 Token 数
[storage]
db_type = "sqlite" # 数据库类型(sqlite / postgres)
db_url = "" # 数据库连接 URL配置文件中使用 ${VAR_NAME} 语法引用环境变量,运行时自动替换:
api_key = "${OPENAI_API_KEY}" # 读取环境变量 OPENAI_API_KEY
base_url = "${CUSTOM_BASE_URL}" # 读取环境变量 CUSTOM_BASE_URL若引用的环境变量未设置,则保留原字符串。
🦀 Coder - AI-powered development tool
Usage: coder [OPTIONS]
Options:
-c, --config <FILE> 配置文件路径(环境变量: CODER_CONFIG)
-d, --directory <DIR> 工作目录 [默认: .]
-h, --help 显示帮助信息
--headless Headless 模式(无 TUI 界面)
--model <MODEL> AI 模型名称(环境变量: CODER_MODEL)
--print <QUERY> Print 模式:一次性查询后退出
--provider <NAME> AI 提供商(环境变量: CODER_PROVIDER)
-s, --session <ID> 恢复指定会话
-v, --verbose 启用详细日志输出
-V, --version 显示版本信息# 直接启动 TUI
coder
# 指定工作目录
coder -d /path/to/project
# 指定 AI 提供商和模型
coder --provider claude --model claude-sonnet-4-6
# 使用自定义配置文件
coder -c /path/to/config.toml
# 恢复历史会话
coder -s session-id-here
# 启用详细日志
coder -v在终端中运行,无 TUI 界面,适合在 CI 或远程 SSH 会话中使用:
coder --headless一次性查询,结果输出到 stdout 后退出,适合脚本中使用:
# 一次性查询
coder --print "解释 Rust 的所有权系统"
# 结合管道使用
coder --print "生成一个快速排序函数" > quicksort.rs
# 在脚本中使用
RESULT=$(coder --print "将 JSON 转为 TOML 格式")TUI 界面从上到下分为四个区域:
┌──────────────────────────────────────────────────────┐
│ 🦀 Coder v0.1.0 · 8 tools · 3 msgs │ 标题栏
├──────────────────────────────────────────────────────┤
│ │
│ ┌─ Message ──────────────────────────────────────┐ │
│ │ user: 实现一个二分查找 │ │ 聊天面板
│ │ assistant: 好的,这里是 Rust 实现... │ │
│ │ ┌─ Tool ──────────────────────────────────┐ │ │
│ │ │ file_write: src/binary_search.rs ✅ │ │ │
│ │ └─────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
│ │
├──────────────────────────────────────────────────────┤
│ > 输入文本... Enter to send │ 输入区
├──────────────────────────────────────────────────────┤
│ 🦀 tools:8 | session:3 | tokens:1.2k/128k | input │ 状态栏
└──────────────────────────────────────────────────────┘
TUI 支持四种输入模式:
| 前缀 | 模式 | 示例 | 说明 |
|---|---|---|---|
文本 |
Chat | 写一个 Rust 斐波那契函数 |
发送给 AI 处理 |
! |
Shell | !git status |
直接执行 Shell 命令 |
? |
Help | ?git |
查询帮助信息 |
/ |
Slash | /help |
执行 Slash 命令 |
| 按键 | 功能 |
|---|---|
Enter |
发送消息 |
Alt+Enter |
输入换行 |
Ctrl+C |
清空输入 |
Ctrl+U |
清空输入 |
Ctrl+W |
删除前一个词 |
Ctrl+O |
打开详情面板 |
Ctrl+A / Home |
光标到行首 |
Ctrl+E / End |
光标到行尾 |
Ctrl+B / Left |
光标左移 |
Ctrl+F / Right |
光标右移 |
Ctrl+D / Delete |
删除光标处字符 |
Up |
上一条输入历史 |
Down |
下一条输入历史 |
Tab |
触发 @ 提及(输入中包含 @ 时) |
Esc |
切换到 Normal 模式 |
| 按键 | 功能 |
|---|---|
Ctrl+C |
中断 AI 回复 |
Ctrl+O |
打开详情面板 |
| 按键 | 功能 |
|---|---|
i |
切换到输入模式 |
/ |
切换到输入模式并输入 / |
! |
切换到输入模式并输入 ! |
? |
切换到输入模式并输入 ? |
Up / PageUp |
上滚聊天面板 |
Down / PageDown |
下滚聊天面板 |
Ctrl+O |
切换详情面板 |
Esc |
退出(按两下) |
输入 @ 触发自动补全弹窗,支持选择:
- 工具:
@bash、@file_read、@file_write、@file_edit、@glob、@grep、@web_fetch、@web_search等 - Agent 类型:
@agent:coding、@agent:research、@agent:debug、@agent:plan、@agent:review - 技能:
@skill:brainstorm、@skill:code-review、@skill:plan、@skill:debug、@skill:tdd
操作方式:
| 按键 | 功能 |
|---|---|
Tab / Down |
选择下一项 |
Up |
选择上一项 |
Enter |
确认选择 |
Esc |
取消 |
| 命令 | 别名 | 功能 | 示例 |
|---|---|---|---|
/help |
h |
显示分类帮助 | /help, /help git |
/tools |
t |
列出所有可用工具 | /tools |
/model |
m |
显示/切换 AI 模型 | /model, /model claude-sonnet-4-6 |
/context |
ctx |
显示上下文使用情况 | /context |
| 命令 | 别名 | 功能 | 示例 |
|---|---|---|---|
/status |
st |
显示 Git 状态 | /status |
/diff |
- | 显示 Git 差异 | /diff, /diff --staged |
/commit |
- | 创建 Git 提交 | /commit Add login feature |
/pr |
- | 创建 Pull Request | /pr |
| 命令 | 别名 | 功能 | 示例 |
|---|---|---|---|
/search |
s |
使用 ripgrep 搜索代码 | /search fn main, /search TODO src/ |
/web_search |
ws |
搜索网络 | /web_search Rust async patterns |
/fetch |
f |
获取网页内容 | /fetch https://example.com |
| 命令 | 别名 | 功能 | 示例 |
|---|---|---|---|
/clear |
c |
清空当前对话 | /clear |
/compact |
- | 压缩对话上下文(保留最近 10 条) | /compact |
/summarize |
- | 对话摘要 | /summarize |
/review |
r |
审查代码变更 | /review |
/plan |
- | 创建实施计划 | /plan Add authentication |
/test |
- | 运行测试 | /test, /test src/auth.rs |
/lint |
- | 代码质量检查 | /lint, /lint src/ |
/fix |
- | 修复问题 | /fix unused variables |
/explain |
- | 解释代码 | /explain src/main.rs |
/doc |
- | 生成文档 | /doc src/lib.rs |
| 命令 | 别名 | 功能 | 示例 |
|---|---|---|---|
/config |
- | 查看/设置配置 | /config, /config theme dark |
/init |
- | 初始化配置文件 | /init |
/memory |
- | 查看内存和会话信息 | /memory |
/quit |
q, exit |
退出 Coder | /quit |
支持所有兼容 OpenAI API 格式的提供商,包括 OpenAI、DeepSeek、Ollama、Groq、MiniMax 等。
[ai.provider.openai]
type = "openai"
api_key = "${OPENAI_API_KEY}"
base_url = "https://api.openai.com/v1"
model = "gpt-4o"
[ai.provider.deepseek]
type = "openai"
api_key = "${DEEPSEEK_API_KEY}"
base_url = "https://api.deepseek.com/v1"
model = "deepseek-chat"
[ai.provider.ollama]
type = "openai"
api_key = "ollama"
base_url = "http://localhost:11434/v1"
model = "llama3"[ai.provider.claude]
type = "anthropic"
api_key = "${ANTHROPIC_API_KEY}"
model = "claude-sonnet-4-6"
# 可选:自定义 API 版本
# api_version = "2024-10-01"需要启用 ai-google 特性:
[ai.provider.gemini]
type = "google"
api_key = "${GEMINI_API_KEY}"
model = "gemini-2.0-flash"对于不完全兼容上述类型的 API,可使用 custom 类型,自定义请求和响应模板:
[ai.provider.custom]
type = "custom"
api_key = "${CUSTOM_API_KEY}"
base_url = "https://custom-api.example.com/v1"
model = "custom-model"
request_template = "..." # 自定义请求模板
response_parser = "..." # 自定义响应解析器所有提供商支持以下可选参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
max_tokens |
u64 | 4096 | 最大生成 Token 数 |
temperature |
f64 | 0.7 | 采样温度(0-1) |
top_p |
f64 | 0.9 | Top-p 采样 |
Coder 内置丰富的工具,通过 Feature Flag 控制启用。
| 工具名 | 功能 | 说明 |
|---|---|---|
bash |
执行 Shell 命令 | 在指定目录运行命令,支持超时控制 |
file_read |
读取文件内容 | 支持指定行范围 |
file_write |
写入文件 | 创建新文件或覆盖 |
file_edit |
编辑文件 | 精确字符串替换 |
glob |
文件模式匹配 | 按 Glob 模式查找文件 |
grep |
内容搜索 | 基于 ripgrep 的正则搜索 |
question |
向用户提问 | 获取用户输入 |
web_fetch |
获取网页内容 | 抓取 URL 并转为 Markdown |
web_search |
网络搜索 | 搜索互联网信息 |
| 工具名 | 功能 |
|---|---|
git |
Git 版本控制操作 |
worktree |
Git Worktree 管理 |
| 工具名 | 功能 |
|---|---|
docker |
Docker 容器操作 |
| 工具名 | 功能 |
|---|---|
db_query |
数据库查询 |
| 工具名 | 功能 |
|---|---|
oauth |
OAuth 2.0 授权流程 |
| 工具名 | 功能 | 备注 |
|---|---|---|
docs |
文档查询 | - |
ci |
CI 操作 | - |
task |
任务管理 | - |
plan |
规划工具 | - |
Coder 提供多种专业化 Agent 类型,适用于不同场景。
| 类型 | 显示名 | 说明 | 适用场景 |
|---|---|---|---|
Coding |
coding(默认) |
完整工具访问,通用编码 | 日常编程、代码生成、调试 |
Research |
research |
网络搜索和研究为主 | 技术调研、文档查阅、方案对比 |
Debug |
debug |
系统性调试,使用 Bash/Grep/LSP | Bug 定位、故障排查 |
Plan |
plan |
规划和分析模式(只读工具) | 需求分析、架构设计、实施规划 |
Review |
review |
代码审查专家 | 代码质量检查、安全审查 |
在 TUI 中使用 /model 切换,或通过 @agent:type 提及在对话中临时调佣特定 Agent。
多 Agent 协作系统,基于 tokio 通道进行消息传递:
team:团队管理task:任务分配teammate:团队成员communication:团队通信
可重用的命名能力模块,支持结构化输入输出:
brainstorm:头脑风暴code_review:代码审查debug:调试plan:规划
可通过 @skill:name 在对话中调用。
短期存活、隔离上下文的子 Agent,由 Supervisor 生成并管理:
supervisor:子 Agent 管理器spawn:生成子 Agent- 独立上下文,不影响主会话
跨会话记忆持久化,通过 JSON 文件存储在 ~/.coder/memory/:
store:记忆存储retrieve:关键字检索autodream:AutoDream 后台整合
基于 libsql(SQLite)的数据持久化:
sqlite:SQLite 数据库migrate:数据库迁移db:数据库操作
Language Server Protocol 客户端,提供代码智能:
- 自动补全(Completion)
- 悬停信息(Hover)
- 跳转定义(Go-to-definition)
- 诊断信息(Diagnostics)
Model Context Protocol 实现:
client:连接 MCP 服务器server:暴露 Coder 工具给 MCPcontext7:Context7 文档集成
基于 Axum 的 HTTP API 服务,支持:
- SSE 流式响应
- WebSocket 通信
- 会话管理
- 工具调用
# 启动 HTTP 服务
cargo run --features server基于策略的工具访问控制:
allow:允许deny:拒绝ask:询问用户
跨设备数据同步:
- 配置同步
- 会话同步
- 记忆同步
音频输入支持:
- 基于 cpal 的音频捕获
- 语音转文字
OAuth 2.0 授权码流程,用于第三方服务集成。
使用追踪和遥测:
- 命令使用统计
- 性能指标
桌面自动化操作:
- 截图
- 鼠标控制
- 键盘输入
Git Worktree 管理:
- 创建隔离的工作目录
- 并行分支开发
将 Coder 集成到即时通讯平台(特性尚未实现):
Telegram:通过 Telegram Bot 使用 Coder(计划中)Feishu:飞书集成(计划中)Slack:Slack 集成(计划中)
会话默认每 60 秒自动保存到 ~/.coder/sessions/,可通过 session.auto_save_interval 配置。
# 列出已有会话(查看 sessions 目录)
ls ~/.coder/sessions/
# 恢复指定会话
coder -s <session-id>当消息数量达到 session.max_messages_before_compact(默认 100)时,自动触发压缩。也可通过 /compact 手动压缩(保留最近 10 条消息)。
除自动保存外,每次发送消息后自动触发保存。
~/.coder/
├── config.toml # 用户配置文件
├── sessions/ # 会话文件(JSON 格式)
│ ├── <session-id>.json
│ └── ...
└── memory/ # 记忆存储
├── *.json
└── ...
# 进入项目目录,启动 TUI
cd my-project
coder
# 在 TUI 中输入
# > 为这个项目添加一个配置文件解析模块# 修改代码后运行审查
/review
# 查看变更
/diff
# AI 自动审查变更代码# 搜索代码中的问题
/search unwrap\()
# 定位后分析
/explain src/main.rs# 查看当前状态
/status
# 查看差异
/diff
# 提交
/commit Add user authentication
# 创建 PR
/pr# 搜索网络技术方案
/web_search Rust web framework comparison 2026
# 获取文档
/fetch https://docs.rs/tokio在对话中通过 @ 提及切换 Agent:
> @agent:research 研究一下当前 Rust 生态中最流行的 Web 框架
> @agent:debug 帮我分析这个崩溃日志
> @agent:plan 设计一个用户认证系统的架构
# 在 CI 脚本中使用 Print 模式进行代码审查
coder --print "审查以下变更: $(git diff)" --provider claude[ai]
default_provider = "deepseek"
[ai.provider.deepseek]
type = "openai"
api_key = "${DEEPSEEK_API_KEY}"
base_url = "https://api.deepseek.com/v1"
model = "deepseek-chat"
[ai.provider.claude]
type = "anthropic"
api_key = "${ANTHROPIC_API_KEY}"
model = "claude-sonnet-4-6"# 使用默认提供商(DeepSeek)
coder
# 临时切换到 Claude
coder --provider claude --model claude-sonnet-4-6确保终端支持 UTF-8 和真彩色(true color)。如界面显示异常,尝试调整终端设置或使用 --headless 模式。
检查配置路径:默认查找 ~/.coder/config.toml 和 ./coder.toml,也可通过 -c 参数指定。
- 检查 API Key 是否有效(环境变量是否正确设置)
- 检查网络连接(是否需要代理)
- 查看详细日志:
coder -v
调整 tools.timeout_seconds 配置值(默认 300 秒)。
检查 ~/.coder/sessions/ 目录是否存在且可写。使用 -s 参数指定会话 ID 恢复。
# 如果通过 cargo 安装
cargo uninstall coder
# 删除配置和数据
rm -rf ~/.coder