opencode + oh-my-opencode 的 Rust 重写版本 —— 更快、更安全、零运行时依赖
原 opencode 使用 TypeScript 编写,存在:
- ❌ 运行时依赖复杂(Node.js + 一堆 npm 包)
- ❌ 类型系统不够严格
- ❌ 启动慢、内存占用高
- ❌ 分发需要带整个 node_modules
ROC 用 Rust 重写,目标:
- ✅ 编译时类型安全 - 错误在编译期就暴露
- ✅ 零运行时依赖 - 单个二进制文件,直接跑
- ✅ 性能提升 - 启动快、内存占用低
- ✅ 更好的插件系统 - 从设计初期就考虑可扩展性
| 领域 | 技术 | 理由 |
|---|---|---|
| 语言 | Rust 1.94+ | 编译时安全、零运行时依赖 |
| 异步运行时 | tokio | Rust 最成熟的异步运行时 |
| CLI 框架 | clap | Rust 标准 CLI 库 |
| TUI 框架 | ratatui | Rust 最成熟的 TUI 框架 |
| HTTP 框架 | axum | 轻量、tower 生态 |
| 数据库 | SQLite + sqlx | 轻量、类型安全 |
| LSP | tower-lsp | 基于 tower,与 axum 兼容 |
| AST 分析 | tree-sitter | 多语言支持、性能好 |
- opencode - 核心功能重写参考
- oh-my-opencode - 插件系统设计参考
.
├── src/
│ ├── main.rs # CLI 入口
│ ├── lib.rs # 库入口
│ ├── cli/ # CLI 模块
│ ├── agent/ # Agent 系统
│ ├── tool/ # Tool 系统
│ ├── provider/ # AI Provider
│ ├── session/ # Session 管理
│ └── ...
├── Cargo.toml # 项目配置
├── README.md # 项目说明
└── .gitignore # Git 忽略规则
- 项目初始化
- Agent trait 定义
- Tool trait 定义
- CLI 入口(clap)
- TUI MVP(ratatui)
- 4 个单元测试通过
- Provider 系统(OpenAI API 集成)
- 完整 Tool 系统(26 个工具)
- Session 管理(持久化存储)
- TUI 改进(文件树、语法高亮、主题)
- 基础布局(侧边栏 + 主内容区)
- 文件树浏览
- 对话界面(用户输入 + AI 回复)
- 工具执行结果显示
- 键盘快捷键
- 主题/配色方案
- Hook 系统
- Category 系统
- Skill 系统
- Command 系统
- 性能优化
- 完整测试套件
- 文档完善
- Rust 1.94+
- Cargo
# Debug 模式
cargo build
# Release 模式(推荐)
cargo build --release# 运行 CLI
cargo run --release
# 运行 TUI
cargo run --release -- run
# 运行测试
cargo test
# 运行所有测试(包括集成测试)
cargo test --all<类型>: <简短描述>
[详细描述(可选)]
类型:
feat: 新功能fix: Bug 修复docs: 文档更新style: 代码格式refactor: 重构test: 测试chore: 构建/工具
示例:
feat: add OpenAI provider implementation
- Implement Provider trait for OpenAI
- Add API key management
- Add error handling for rate limits
- 每个核心模块必须包含单元测试
- 测试覆盖率目标:>80%
- 提交前确保
cargo test通过 - 提交前确保
cargo build --release通过
项目处于早期开发阶段。如果你感兴趣,欢迎:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
MIT License - 详见 LICENSE 文件
ReOpenCode Team · 2026
最后更新:2026-03-17