🚀 Coro Code
September 18, 2025 · View on GitHub
Coro Code 是一个用 Rust 编写的高性能 AI 编码代理,带有丰富的终端界面。此前名为 Trae Agent Rust,现已更名并聚焦于速度、稳定性与优秀的使用体验,同时保持与原始工具规范的兼容性。
✨ 亮点
- 🦀 纯 Rust 内核与简洁清晰的架构,输出层抽象良好
- 🎨 基于 iocraft 的交互式终端 UI,实时状态与动画
- 🛠️ 强大的工具系统:bash、edit、json_edit、thinking、task_done、ckg、mcp
- 🤖 模型提供商:已支持 OpenAI;Anthropic 与 Google 即将到来
- 🔍 智能文件搜索:@path 语法、感知 Git、极速匹配
🚀 快速开始
📋 前置条件
- 🦀 Rust 稳定版(1.70+)
- 🔑 模型 API Key(推荐 OpenAI;Anthropic/Google 即将支持)
📦 安装
cargo install --git https://github.com/Blushyes/coro-code --bin coro
▶️ 运行
# 交互模式(推荐)
coro
# 单次任务
coro "Fix the bug in main.rs"
⚙️ 最简配置
可用环境变量或 JSON 文件进行配置。
方案 A: 环境变量
# OpenAI
export OPENAI_API_KEY="your_openai_api_key"
export OPENAI_MODEL="gpt-4o"
# 可选:为 OpenAI 兼容 API 设置自定义 base URL 和模型
export OPENAI_BASE_URL="https://api.deepseek.com"
export OPENAI_MODEL="deepseek-chat"
# 或使用通用覆盖(适用于任何协议)
export CORO_BASE_URL="https://api.custom.com"
export CORO_MODEL="custom-model"
方案 B: 工作目录中的 JSON 文件(coro.json)
{
"protocol": "openai",
"base_url": "https://api.deepseek.com",
"api_key": "your-api-key",
"model": "deepseek-chat",
"params": {
"max_tokens": 131072,
"temperature": 0.7,
"top_p": 0.9
}
}
🤖 支持的模型
| 提供商 | 模型 | 状态 |
|---|---|---|
| 🟢 OpenAI | gpt-4o, gpt-4o-mini | ✅ 已支持 |
| 🟡 Anthropic | claude-3.5 系列 | 🚧 计划中 |
gemini-1.5 系列 | 🚧 计划中 |
🔧 环境变量参考
| 变量名 | 描述 | 示例 |
|---|---|---|
OPENAI_API_KEY | OpenAI API 密钥 | sk-... |
OPENAI_BASE_URL | OpenAI 兼容 API 的自定义 base URL | https://api.deepseek.com |
OPENAI_MODEL | OpenAI 兼容 API 的自定义模型 | gpt-4o, deepseek-chat |
ANTHROPIC_API_KEY | Anthropic API 密钥 | sk-ant-... |
ANTHROPIC_BASE_URL | Anthropic API 的自定义 base URL | https://api.anthropic.com |
ANTHROPIC_MODEL | Anthropic API 的自定义模型 | claude-3-5-sonnet-20241022 |
GOOGLE_API_KEY | Google AI API 密钥 | AIza... |
GOOGLE_BASE_URL | Google AI API 的自定义 base URL | https://generativelanguage.googleapis.com |
GOOGLE_MODEL | Google AI API 的自定义模型 | gemini-pro, gemini-1.5-pro |
AZURE_OPENAI_API_KEY | Azure OpenAI API 密钥 | ... |
AZURE_OPENAI_BASE_URL | Azure OpenAI 端点 | https://your-resource.openai.azure.com |
AZURE_OPENAI_MODEL | Azure OpenAI 的自定义模型 | gpt-4, gpt-35-turbo |
CORO_BASE_URL | 通用 base URL 覆盖(适用于任何协议) | https://api.custom.com |
CORO_PROTOCOL | 强制指定协议 | openai, anthropic |
CORO_MODEL | 通用模型覆盖(适用于任何协议) | gpt-4o, claude-3-5-sonnet |
🗺️ 开发路线图
状态说明: ✅ 已完成 | 🚧 进行中 | 📋 计划中
🚀 第一阶段:核心体验
| 优先级 | 状态 | 功能特性 | 描述 |
|---|---|---|---|
| 🔥 高 | 🚧 | 首次进入配置管理 | 引导式向导(检测/创建 openai.json 或环境变量),校验 API Key,提供默认模型与示例 |
| 🔥 高 | ✅ | 重构、优化配置加载逻辑 | 统一优先级(CLI 参数 > 环境变量 > JSON 文件)、更友好的错误提示与诊断、可选热加载 |
| 🔥 高 | 📋 | Tool Call 权限系统 | 按工具/命令/目录白名单、交互确认、防越权与敏感操作提示 |
🎨 第二阶段:用户体验增强
| 优先级 | 状态 | 功能特性 | 描述 |
|---|---|---|---|
| 🟡 中 | 📋 | 支持 CORO.md 自定义提示词 | 项目/子目录级覆盖、场景化模板(bugfix/重构/文档/测试) |
| 🟡 中 | 🚧 | UI 布局优化与统一化 | Header/Status/Input 风格统一、键位与交互一致性优化 |
| 🟡 中 | 📋 | 轨迹回放与导出 | Trajectory 可视化、一键回放、导出为 JSON/Markdown |
| 🎨 低 | 📋 | 需要一个和 gemini-cli 风格类似的 logo | 视觉标识设计 |
🤖 第三阶段:智能化与性能
| 优先级 | 状态 | 功能特性 | 描述 |
|---|---|---|---|
| 🟡 中 | 📋 | 多模型与自动路由 | 按任务类型自动选择模型,失败自动降级与重试策略 |
| 🟡 中 | 📋 | 上下文优化与缓存 | 文件摘要缓存、重复引用去重、Token 预算控制 |
| 🟡 中 | ✅ | Token 压缩 | 智能上下文压缩、选择性 Token 减少、自适应上下文窗口 |
| 🔵 低 | 📋 | MCP 扩展生态 | 常用 Provider 预设与模板,一键启停外部工具 |
🌐 第四阶段:平台与生态
| 优先级 | 状态 | 功能特性 | 描述 |
|---|---|---|---|
| 🔵 低 | 📋 | core 支持打包为 WASM | 浏览器/插件环境可用,同构工具接口与最小运行时 |
| 🔵 低 | 📋 | 跨平台增强 | macOS/Linux/Windows/WSL 细节适配与稳定性提升 |
| 🔵 低 | 📋 | 插件化工具系统 | 第三方工具注册规范、版本与依赖声明 |
🛡️ 第五阶段:安全与质量
| 优先级 | 状态 | 功能特性 | 描述 |
|---|---|---|---|
| 🟡 中 | 📋 | 安全与速率限制 | 沙箱模式(受限 bash/网络开关)、并发与速率限制 |
| 🔵 低 | 📋 | 测试与基准 | 端到端测试样例、性能基准与对比报告 |
🛠️ 开发
📦 上下文导出/恢复(持久化)
核心库已提供上下文持久化能力,可将会话与执行上下文导出为 JSON,并在稍后恢复继续对话:
use coro_core::agent::{AgentBuilder, PersistedAgentContext};
// 导出
let json = agent.export_context_json()?; // 导出为 JSON 字符串
agent.export_context_to_file(".coro/context.json")?; // 或写入文件
// 恢复
agent.restore_context_from_json(&json)?; // 从 JSON 恢复
agent.restore_context_from_file(".coro/context.json")?; // 或从文件恢复
// 如果需要自行读写:
let snap = agent.export_context_snapshot()?; // 获取结构化快照
let json2 = snap.to_json()?; // 自行序列化
let snap2 = PersistedAgentContext::from_json(&json2)?; // 自行反序列化
agent.restore_context_from_snapshot(snap2)?; // 应用到 Agent
说明:
- 快照包含
conversation_history与AgentExecutionContext,以及可选的AgentConfig。 - 恢复后会沿用保存时的配置(若快照内存在),并在后续执行时自动处理未配对的工具调用结果。
- 导入后无需手动插入系统提示;代理在需要时会自动注入或压缩上下文。
Pre-commit Hooks
我们强烈建议设置 pre-commit hooks 来维护代码质量。仓库包含了自动安装 hooks 的脚本,这些 hooks 会在每次提交前运行格式化、代码检查和测试。
根据你的平台选择合适的脚本:
# Linux/macOS
./scripts/setup-pre-commit-hooks.sh
# Windows PowerShell
.\scripts\setup-pre-commit-hooks.ps1
# Windows 命令提示符
scripts\setup-pre-commit-hooks.bat
Pre-commit hook 会自动运行:
- 代码格式化 (
cargo fmt --check) - 代码检查 (
cargo clippy) - 测试 (
cargo test)
更多详情请参见 scripts/README.md。
贡献代码
- Fork 仓库
- 创建功能分支
- 设置 pre-commit hooks(推荐)
- 进行修改
- 确保所有测试通过
- 提交 Pull Request
📄 许可证
双许可证,任选其一:
- Apache-2.0 (LICENSE-APACHE)
- MIT (LICENSE-MIT)
🙏 致谢
- Trae Agent 原始 Python 实现与规范
- iocraft 优秀的终端 UI 框架
- OpenAI、Anthropic、Google 模型与 API
- Rust 社区 出色的生态与工具
用 ❤️ 和 Rust 制作
