内容
# 开源代码编排器
多模型编排工作器 [MCP](https://modelcontextprotocol.io/) 扩展,适用于 Opencode,带有基于浏览器的仪表盘。路由提示到具有 VRAM 感知热交换的专用工作器模型。
**由 Specific Labs 制作**
## 功能特点
- **自动任务路由** — 编排 LLM 将提示分解为子任务的依赖图,每个子任务分配给专用工作角色
- **专用工作器** — 每个角色都使用自己的模型、温度和上下文窗口运行
- **VRAM 感知模型池** — LRU 逐出确保本地模型在可配置的内存预算内;API 模型绕过池
- **推测性预加载** — 路由器预测下一个需要的工作器并在当前步骤期间开始加载
- **并行执行** — 独立步骤并发运行,最高可达可配置的工作器限制
- **浏览器仪表盘** — 完整的 React UI,具有 Blueprint 设计系统(暗色主题、实时执行监控、配置管理)
- **macOS .app 启动器** — 双击启动服务器并打开 UI
- **多提供商** — 支持 Ollama(本地)、OpenAI 兼容 API 和 Anthropic
- **OpenCode MCP 集成** — 还可以通过 MCP 工具作为原生 Goose 扩展
## 默认工作角色
| 角色 | 默认模型 | 温度 | 优化目标 |
|------|--------------|------|---------------|
| `deep_research` | `qwen3:32b` | 0.4 | 多跳网页研究、论文分析 |
| `local_rag` | `qwen3:8b` | 0.2 | 本地文档检索、代码搜索 |
| `code_gen` | `qwen2.5-coder:32b` | 0.3 | 代码生成、重构、调试 |
| `summarizer` | `qwen3:8b` | 0.5 | 压缩输出、报告撰写 |
| `math_reasoning` | `qwen3:32b` | 0.1 | 形式证明、计算、逻辑 |
| `creative` | `llama3:70b` | 0.9 | 创意写作、集思广益 |
所有角色均可通过 UI 或 MCP 工具完全自定义。
## 快速入门
### 先决条件
- Python 3.12+
- [uv](https://docs.astral.sh/uv/)
- Node.js 18+(用于前端构建)
- [Ollama](https://ollama.ai/) 和/或 OpenAI/Anthropic 的 API 密钥
### 安装和运行(浏览器 UI)
```bash
git clone https://github.com/santiagoaraoz2001-sketch/opencode-orchestrator.git
cd opencode-orchestrator
# 构建所有内容
uv sync
cd frontend && npm install && npm run build && cd ..
# 启动(打开浏览器到 http://localhost:7432)
uv run opencode-orchestrator-ui
```
### macOS 应用(一键启动器)
```bash
bash build-app.sh
cp -r "dist/OpenCode Orchestrator.app" /Applications/
```
然后从 Spotlight 或应用程序文件夹启动。
### OpenCode MCP 扩展
添加到 `~/.config/goose/config.yaml`:
```yaml
extensions:
multi_model_orchestrator:
enabled: true
type: stdio
name: 多模型编排器
cmd: uv
args:
- run
- --project
- /path/to/opencode-orchestrator
- opencode-orchestrator
timeout: 600
```
## 架构
```
用户提示 → 编排 LLM(任务分类)
↓
任务计划(依赖图)
↓
┌───────────┼───────────┐
↓ ↓ ↓
工作器 A 工作器 B 工作器 C (并行)
(研究) (代码生成) (摘要)
↓ ↓ ↓
└───────────┼───────────┘
↓
汇总响应
```
**模型池** 强制执行严格的 VRAM 预算,并使用 LRU 逐出。编排模型被固定且从不逐出。API 支持的模型具有零本地 VRAM 成本。
## API 端点
| 方法 | 路径 | 描述 |
|--------|------|-------------|
| `GET` | `/api/config` | 完整的配置 |
| `PATCH` | `/api/config/orchestrator` | 更新编排模型 |
| `GET` | `/api/config/workers` | 列出所有工作角色 |
| `PATCH` | `/api/config/workers/{role}` | 更新工作角色 |
| `POST` | `/api/config/workers/{role}` | 创建工作角色 |
| `DELETE` | `/api/config/workers/{role}` | 删除工作角色 |
| `PATCH` | `/api/config/resources` | 更新资源限制 |
| `GET` | `/api/status` | 模型池状态 |
| `POST` | `/api/orchestrate` | 运行编排(REST) |
| `WS` | `/api/ws` | 实时执行流式传输 |
| `GET` | `/api/models/{provider}` | 列出可用模型 |
## 开发
```bash
# 后端(热重载)
uv run uvicorn opencode_orchestrator.backend.app:app --reload --port 7432
# 前端(Vite 开发服务器,带代理)
cd frontend && npm run dev
# 测试
uv run --extra dev pytest tests/ -v
```
## 许可证
[MIT](LICENSE)