Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
R

reopencode

> 编程语言
Open source

OpenCode Cover.

1.6K stars0 likes0 views
WebsiteGitHub

About

OpenCode Cover.

# ReOpenCode 基于 Rust 的 AI 编程助手,提供完整的 Agent 工具执行能力、终端 TUI 界面和 HTTP REST API。 []() ---

> **[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=reopencode)** 提供兼容 OpenAI 格式的统一 LLM API(支持 Claude、DeepSeek、Qwen 等 59+ 模型),可作为 ReOpenCode 的 LLM 提供商之一直接接入,并通过 Media API 为编程助手扩展图像/视频生成等多模态能力 — [coding plan](https://www.atlascloud.ai/console/coding-plan) All Atlas Cloud LLM models (59) - Anthropic: `anthropic/claude-haiku-4.5-20251001`, `anthropic/claude-opus-4.8`, `anthropic/claude-sonnet-4.6` - OpenAI: `openai/gpt-5.4`, `openai/gpt-5.5` - Google Gemini: `google/gemini-3.1-flash-lite`, `google/gemini-3.1-pro-preview`, `google/gemini-3.5-flash` - Qwen: `qwen/qwen2.5-7b-instruct`, `Qwen/Qwen3-235B-A22B-Instruct-2507`, `qwen/qwen3-235b-a22b-thinking-2507`, `qwen/qwen3-30b-a3b`, `Qwen/Qwen3-30B-A3B-Instruct-2507`, `qwen/qwen3-30b-a3b-thinking-2507`, `qwen/qwen3-32b`, `qwen/qwen3-8b`, `Qwen/Qwen3-Coder`, `qwen/qwen3-coder-next`, `qwen/qwen3-max-2026-01-23`, `Qwen/Qwen3-Next-80B-A3B-Instruct`, `Qwen/Qwen3-Next-80B-A3B-Thinking`, `Qwen/Qwen3-VL-235B-A22B-Instruct`, `qwen/qwen3-vl-235b-a22b-thinking`, `qwen/qwen3-vl-30b-a3b-instruct`, `qwen/qwen3-vl-30b-a3b-thinking`, `qwen/qwen3-vl-8b-instruct`, `qwen/qwen3.5-122b-a10b`, `qwen/qwen3.5-27b`, `qwen/qwen3.5-35b-a3b`, `qwen/qwen3.5-397b-a17b`, `qwen/qwen3.6-35b-a3b`, `qwen/qwen3.6-plus` - DeepSeek: `deepseek-ai/deepseek-ocr`, `deepseek-ai/deepseek-r1-0528`, `deepseek-ai/DeepSeek-V3-0324`, `deepseek-ai/DeepSeek-V3.1`, `deepseek-ai/DeepSeek-V3.1-Terminus`, `deepseek-ai/deepseek-v3.2`, `deepseek-ai/DeepSeek-V3.2-Exp`, `deepseek-ai/deepseek-v4-flash`, `deepseek-ai/deepseek-v4-pro` - Kimi: `moonshotai/Kimi-K2-Instruct`, `moonshotai/Kimi-K2-Instruct-0905`, `moonshotai/Kimi-K2-Thinking`, `moonshotai/kimi-k2.5`, `moonshotai/kimi-k2.6` - GLM: `zai-org/GLM-4.6`, `zai-org/glm-4.7`, `zai-org/glm-5`, `zai-org/glm-5-turbo`, `zai-org/glm-5.1`, `zai-org/glm-5v-turbo` - MiniMax: `MiniMaxAI/MiniMax-M2`, `minimaxai/minimax-m2.1`, `minimaxai/minimax-m2.5`, `minimaxai/minimax-m2.7` - xAI: `xai/grok-4.3` - KAT: `kwaipilot/kat-coder-pro-v2` - Other: `owl` --- ## 项目特点 - **纯 Rust 实现**:单一二进制文件,无运行时依赖,不依赖 Node.js/npm - **完整 Agent 循环**:LLM 可调用 18 个工具,结果自动回传,支持最多 20 轮多步推理 - **双向接口**:终端 TUI(ratatui)和 HTTP REST API(axum),均可独立使用 - **安全设计**:危险工具执行前通过权限系统检查,工具执行前后自动打 shadow git 快照 - **高性能**:Rust 编译型语言的零成本抽象和内存安全保证 ## 快速开始 ### 安装依赖 - Rust 1.75+ - macOS / Linux / Windows ### 编译 ```bash git clone https://github.com/MurrayHill1127/reopencode.git cd reopencode cargo build --release ``` ### 配置 API Key 在 `~/.config/roc/roc.toml` 中创建配置文件: ```toml [server] port = 4096 host = "127.0.0.1" [provider.kimi] api-key = "sk-xxxxxxxxxxxxxxxxxx" ``` 或者设置环境变量: ```bash export KIMI_API_KEY="sk-xxxxxxxxxxxxxxxxxx" # 也支持 OPENAI_API_KEY / ANTHROPIC_API_KEY ``` ### 启动 ```bash # 启动服务器(后台) ./target/release/reopencode serve & # 启动 TUI 终端界面 ./target/release/reopencode run ``` TUI 启动后会自动连接 `http://127.0.0.1:4096`。在输入框中输入消息,按 Enter 发送,即可与 AI 对话。 --- ## Agent 工具列表 | 工具 | 功能 | 说明 | |------|------|------| | `bash` | Shell 命令执行 | 30 秒超时,自动重试 2 次 | | `read` | 读取文件 | 支持文本文件读取 | | `write` | 写入文件 | 支持新文件创建和覆盖 | | `edit` | 精确编辑 | 字符串替换,支持 replaceAll | | `apply_patch` | 应用补丁 | 标准 unified diff 格式 | | `multiedit` | 多文件编辑 | 批量修改多个文件 | | `glob` | Glob 搜索 | 通配符文件匹配 | | `grep` | 代码搜索 | 基于 ripgrep 的高性能搜索 | | `ls` | 列出目录 | 文件和目录列表 | | `codesearch` | 语义搜索 | 代码库内容搜索 | | `webfetch` | 网页抓取 | URL 内容获取 | | `websearch` | 网页搜索 | 在线搜索 | | `todo_write` | 任务列表写入 | 创建和管理结构化任务 | | `todo_read` | 任务列表读取 | 读取当前任务状态 | | `task` | Agent 任务 | 启动子 Agent 执行任务 | | `question` | 用户提问 | 挂起等待用户回答 | | `lsp` | LSP 操作 | hover/definition/references | | `mcp_*` | MCP 工具代理 | 自动注册外部 MCP 服务工具 | ## TUI 界面 ### 快捷键 | 按键 | 功能 | |------|------| | `Enter` | 发送消息 | | `Ctrl+J` / `Shift+Enter` | 输入框内换行 | | `Ctrl+B` | 左侧会话侧边栏(会话列表 + Token 用量) | | `Ctrl+R` | 右侧信息侧边栏(上下文/MCP/LSP/Diffs) | | `Alt+E` | 文件树浏览器 | | `Alt+K` | 命令面板(新建会话/列表/MCP/模型/帮助) | | `Ctrl+\`` | 代码块折叠/展开 | | `Ctrl+P` | 会话列表浮层 | | `Ctrl+M` | MCP 服务器状态 | | `Ctrl+C` | 取消流式输出 / 退出 | | `Esc` | 第 1 次:取消流式;第 2 次:清空输入框 | | `↑` / `↓`(空输入) | 提示历史导航 | | `Ctrl+←` / `Ctrl+→` | 按单词跳转 | | `Ctrl+W` / `Alt+Backspace` | 删除前一个单词 | ### 斜杠命令 在输入框中输入以 `/` 开头的命令: | 命令 | 功能 | |------|------| | `/exit` | 退出程序 | | `/new [标题]` | 创建新会话 | | `/clear` | 清空当前对话 | | `/sessions` | 切换会话侧边栏 | | `/undo` / `/redo` | 撤销/恢复上一条消息 | | `/copy` | 复制最后一条 AI 回复到剪贴板 | | `/compact` | 触发 AI 会话压缩(上下文过长时) | | `/debug` | 显示最后一条消息的调试信息 | | `/help` | 显示帮助信息 | ### Shell 模式 输入以 `!` 开头的消息,直接在本机执行命令并将结果显示在对话中。 ``` !ls -la !cargo test --lib ``` ### 界面预览 ``` … ``` ## HTTP API ### 会话管理 | 方法 | 路径 | 功能 | |------|------|------| | `GET` | `/session` | 列出所有会话 | | `POST` | `/session` | 创建新会话 | | `GET` | `/session/{id}` | 获取会话详情 | | `PATCH` | `/session/{id}` | 更新会话(标题/归档) | | `DELETE` | `/session/{id}` | 删除会话 | ### 消息处理 | 方法 | 路径 | 功能 | |------|------|------| | `POST` | `/session/{id}/message` | 同步发送消息(含完整 Agent 循环) | | `POST` | `/session/{id}/stream` | 流式发送消息(SSE) | | `POST` | `/session/{id}/prompt_async` | 异步后台处理(立即返回 204) | | `POST` | `/session/{id}/abort` | 取消当前处理 | ### 会话操作 | 方法 | 路径 | 功能 | |------|------|------| | `POST` | `/session/{id}/fork` | 从指定消息分叉新会话 | | `POST` | `/session/{id}/revert` | 回滚会话到指定消息 | | `POST` | `/session/{id}/unrevert` | 取消回滚状态 | | `POST` | `/session/{id}/undo` | 撤销最后一条消息对 | | `POST` | `/session/{id}/redo` | 恢复被撤销的消息 | | `POST` | `/session/{id}/summarize` | AI 压缩会话上下文 | | `POST` | `/session/{id}/init` | 初始化项目上下文(AGENTS.md 生成) | ### 权限管理 | 方法 | 路径 | 功能 | |------|------|------| | `GET` | `/permission` | 列出待处理的权限请求 | | `POST` | `/permission/{id}/reply` | 回复权限请求(once/always/reject) | | `POST` | `/session/{id}/permissions/{id}` | 会话级权限回复 | ### 工具集成 | 方法 | 路径 | 功能 | |------|------|------| | `GET` | `/mcp` | 列出 MCP 服务器状态 | | `POST` | `/mcp` | 添加 MCP 服务器 | | `POST` | `/mcp/{name}/connect` | 连接 MCP 服务器 | | `POST` | `/mcp/{name}/disconnect` | 断开 MCP 服务器 | | `GET` | `/lsp` | 列出 LSP 连接状态 | | `GET` | `/worktree` | 列出工作区 | | `POST` | `/worktree` | 创建隔离工作区 | | `DELETE` | `/worktree/{name}` | 删除工作区 | ### Provider 认证 | 方法 | 路径 | 功能 | |------|------|------| | `PUT` | `/global/auth/{provider}` | 设置 Provider 认证信息 | | `DELETE` | `/global/auth/{provider}` | 删除 Provider 认证信息 | | `GET` | `/provider` | 列出支持的服务商 | ### 配置与工具 | 方法 | 路径 | 功能 | |------|------|------| | `GET` | `/global/health` | 健康检查 | | `GET` | `/global/config` | 获取全局配置 | | `PATCH` | `/global/config` | 更新全局配置 | | `GET` | `/config` | 获取当前配置 | | `GET` | `/command` | 列出可用命令 | | `GET` | `/skill` | 列出可用技能 | --- ## Provider 支持 | 服务商 | 文本生成 | 工具调用 | 流式输出 | |--------|----------|----------|----------| | OpenAI(兼容 Kimi/Azure 等) | ✅ | ✅ | ✅ | | Anthropic | ✅ | ✅ | ✅ | | Google / Vertex | ✅ | 取决于兼容性 | ✅ | | xAI / Mistral / Groq | ✅ | 取决于兼容性 | ✅ | | OpenRouter | ✅ | ✅ | ✅ | | 智谱 GLM | ✅ | 取决于兼容性 | ✅ | 支持 14 个 Provider,共 2000+ 种模型。 --- ## 架构概览 ``` … ``` --- ## 测试 ```bash # 运行所有测试 cargo test --lib # 运行集成测试(需要真实的 API Key) KIMI_API_KEY="sk-xxx" cargo test --test kimi_integration # 代码检查 cargo clippy -- -D warnings # 格式化检查 cargo fmt -- --check ``` 测试统计: | 类别 | 数量 | 状态 | |------|------|------| | 单元测试 | 1888 | ✅ 全部通过 | | 集成测试 | 3 | ✅ 全部通过 | | 忽略的测试 | 1 | ⏸ 多字节字符处理(TODO) | --- ## 开发指南 ### 添加新工具 1. 在 `src/tool/` 下创建新文件 2. 实现 `Tool` trait(`name()`、`description()`、`parameters()`、`execute()`) 3. 在 `src/server/mod.rs` 的 `build_tool_registry()` 中注册 4. 在 `src/tool/mod.rs` 中添加 `pub mod` ```rust use async_trait::async_trait; use crate::tool::traits::{Tool, ToolResult}; use crate::tool::error::Result; pub struct MyTool; #[async_trait] impl Tool for MyTool { fn name(&self) -> &str { "my_tool" } fn description(&self) -> &str { "Description of my tool" } fn parameters(&self) -> serde_json::Value { serde_json::json!({ "type": "object", "properties": {}, "required": [] }) } async fn execute(&self, args: serde_json::Value) -> Result { Ok(ToolResult::new("done")) } } ``` ### 添加新 Provider 1. 在 `src/provider/` 下创建新文件 2. 实现 `Provider` trait 3. 在 `src/provider/mod.rs` 中导出 --- ## License MIT

GitHub Issues· 0 open

View all on GitHub

No open issues yet, or sync has not completed.

Highlights

  • •Anthropic: anthropic/claude-haiku-4.5-20251001, anthropic/claude-opus-4.8, anthropic/claude-sonnet-4.6
  • •OpenAI: openai/gpt-5.4, openai/gpt-5.5
  • •Google Gemini: google/gemini-3.1-flash-lite, google/gemini-3.1-pro-preview, google/gemini-3.5-flash
  • •Kimi: moonshotai/Kimi-K2-Instruct, moonshotai/Kimi-K2-Instruct-0905, moonshotai/Kimi-K2-Thinking, moonshotai/kimi-k2.5, moonshotai/kimi-k2.6
  • •GLM: zai-org/GLM-4.6, zai-org/glm-4.7, zai-org/glm-5, zai-org/glm-5-turbo, zai-org/glm-5.1, zai-org/glm-5v-turbo
  • •MiniMax: MiniMaxAI/MiniMax-M2, minimaxai/minimax-m2.1, minimaxai/minimax-m2.5, minimaxai/minimax-m2.7
  • •xAI: xai/grok-4.3
  • •KAT: kwaipilot/kat-coder-pro-v2
  • •Other: owl
  • •纯 Rust 实现:单一二进制文件,无运行时依赖,不依赖 Node.js/npm

> Tags

Rust

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言