A desktop-first local control plane for coding agents.
发现本机 Agent,比较模型与能力,选择最合适的执行者,并保留可续跑的共享上下文。
当前开发者终端里通常同时安装了多个 Coding Agent:
- Claude Code:擅长复杂架构推理、长上下文理解与大型重构。
- Codex CLI:擅长工具链调用、标准代码补全与紧凑指令执行。
- pi / omp:适合特定轻量任务或垂直模型场景。
痛点:每次切换任务都要手动寻找命令、适配命令行参数、人肉权衡模型成本与上下文窗口。
解决方案:coderelay 是一个桌面优先的本地 Agent 控制平面。Tauri 桌面端、Rust CLI 和 TypeScript SDK 共享同一套 Rust Core,完成 Agent 扫描、模型探测、路由、执行、取消和 SQLite 会话记录。CLI 保留给自动化、诊断和高级用户,不再作为产品主入口。
- 🖥️ Tauri 2 桌面端:工作区扫描、Agent 状态、模型选择、路由预览、流式输出、取消和会话历史。
- 🦀 单一 Rust Core:桌面端与 CLI 直接链接同一套扫描、路由、执行和 SQLite 实现。
- 🔍 环境自动发现:跨平台检测 PATH、npm/Bun/Homebrew 等安装来源,并探测版本与模型目录。
- 🎯 三模智能路由:
local规则与评分、manual显式指定、jev远程决策。 - 💾 跨 CLI 会话:桌面端自动写入 SQLite;续跑会话时把历史上下文安全注入下一位 Agent。
- 🎨 个性化外观:主题预设、浅色/深色切换,支持上传本地图片作为自定义背景并调节不透明度。
- 🧰 自动化 CLI:
run / agents / models / doctor / favorite,适合脚本、CI 和排障。 - 🔌 TypeScript SDK:通过版本化 NDJSON stdio 协议调用本地 host,支持类型化请求和流式事件。
- 🛡️ 受控执行:前端只能提交领域请求,不能传任意 shell 或 argv;取消会回收整个进程组。
coderelay 通过专属与通用适配器统一抽象各 CLI 的调用范式:
| Agent | CLI 命令 | 适配机制 | 说明 |
|---|---|---|---|
| Claude Code | claude |
专属适配器 | 自动注入 --dangerously-skip-permissions、模型切换参数与上下文提示 |
| Codex CLI | codex |
专属适配器 | 支持 --model、--context-window 及配置级额外参数 |
| Pi | pi |
通用适配器 | 参数按标准约定传递,自动版本探针 |
| OMP | omp |
通用适配器 | 参数按标准约定传递,自动版本探针 |
提示:运行
coderelay agents可即时查看本机安装与适配状态。
桌面端(apps/desktop,Tauri 2 + React)是 coderelay 的主入口:
| 模块 | 说明 |
|---|---|
| 工作区 | 通过系统对话框选择目录,下拉列表合并展示最近使用的工作区,切换后自动重新扫描 Agent 与模型。 |
| 对话视图 | 输入任务后实时预览路由结果(Agent / 模型),流式展示输出,支持随时取消。 |
| 会话历史 | 侧边栏按工作区列出历史会话,可展开/收起;续跑时把历史上下文注入下一位 Agent,实现跨 CLI 接力。 |
| Agent 与模型 | 展示各 Agent 的安装状态、版本、来源与探测到的模型目录,可手动指定模型或设置偏好 Agent。 |
| API Key 管理 | 在设置页保存 TYPESAFE_API_KEY(用于 Jev 模式),密钥存于本机 SQLite。 |
| 配置视图 | 查看并校验当前生效的配置与路由规则。 |
| 主题与背景 | 主题预设、浅色/深色模式,自定义背景图及不透明度,设置会持久化保存。 |
当前主入口是 Tauri 桌面应用。Rust CLI 和 TypeScript SDK 与桌面端共享同一核心实现。
从 GitHub Release 下载 macOS DMG 或 Windows NSIS 安装包。
macOS 构建目前为未签名版本;仅对可信来源执行本地临时签名:
xattr -dr com.apple.quarantine /Applications/CodeRelay.app
codesign --force --deep --sign - /Applications/CodeRelay.app
codesign --verify --deep --strict --verbose=2 /Applications/CodeRelay.app
open /Applications/CodeRelay.app桌面与 CLI 共享 Rust Core。推荐通过 Cargo 安装:
cargo install --path crates/coderelay-cli --locked
coderelay agents
coderelay doctor
coderelay run "修复登录鉴权竞态问题"从仓库运行:
cargo run -p coderelay-cli -- agents --json
cargo run -p coderelay-cli -- doctor --jsonnpm 包中的
coderelay/cr命令仍指向旧 Bun 实现,作为迁移期的回退入口;新的原生 CLI 通过 Cargo 安装。
bun add @alkaidstart/coderelay-sdkimport { CoderelayClient } from "@alkaidstart/coderelay-sdk";
const client = new CoderelayClient();
const discovery = await client.discoverAgents({ cwd: process.cwd() });
const run = await client.run({
workspace: { cwd: process.cwd() },
request: { prompt: "Fix the failing tests" },
});
for await (const event of run) {
if (event.kind === "assistant_text") {
process.stdout.write(event.text);
}
}
const result = await run.completed;
await client.close();SDK 默认启动 coderelay sdk,通过版本化 NDJSON stdio 通信。
git clone https://github.com/GeWu-academy/coderelay.git
cd coderelay
bun install
# 默认开发入口:Tauri 桌面端
bun run dev
# Rust CLI
bun run cli agents --json
# 旧 Bun CLI/TUI(迁移兼容,默认不再作为主入口)
bun run legacy:dev# 智能走完整规则与评分路由
coderelay run "重构 router 模块的评分逻辑,补齐 TypeScript 类型"
# 显式使用 Claude Code 跳过自动路由
coderelay run -a claude "执行全量单元测试并修复所有报错"
# 显式指定模型
coderelay run -m codex:gpt-5-codex "优化 SQL 查询性能"
# 附带上下文信号,帮助路由引擎精确评分
coderelay run \
--lang typescript \
--file src/router/scorer.ts \
--strength long-context \
--strength reasoning \
"解析大型 AST 树并提取所有循环依赖"| 选项 | 简写 | 类型 | 说明 |
|---|---|---|---|
--mode <mode> |
-M |
local | manual | jev |
决策模式(默认 local) |
--agent <id> |
-a |
string | 显式指定目标 Agent(跳过路由计算) |
--model <model> |
-m |
string | 显式指定目标模型或 agent:model |
--cwd <path> |
-C |
string | 指定扫描与执行的工作目录 |
--config <path> |
-c |
string | 指定自定义配置文件路径 |
--file <path> |
- | string[] | 任务相关文件路径(可多次传入,供规则匹配) |
--lang <language> |
- | string | 代码语言标识(如 typescript、go) |
--strength <type> |
- | string[] | 期望能力:coding、reasoning、long-context、tool-use、fast、cheap、creative、multimodal |
--context-size <tokens> |
- | number | 预估上下文 Token 规模,参与评分模型加权 |
--timeout <ms> |
- | number | 超时守护:超时后自动中止目标 Agent 进程 |
# 全面诊断:配置文件、路由规则、Agent 安装和模型探测
coderelay doctor
# 查看 Agent 安装状态、版本、运行来源和候选路径
coderelay agents
# 查看本机实际探测到的模型目录
coderelay models
# 机器可读输出
coderelay agents --json
coderelay models --json
coderelay doctor --json设置日常最习惯的默认初始 Agent,配置将保存在本地 SQLite 数据库中:
# 查看当前偏好
coderelay favorite
# 设置 Claude Code 为偏好
coderelay favorite claude
# 清除偏好
coderelay favorite clear旧 Ink TUI 仍保留一个迁移版本,用于对照和回退,但不再新增功能:
bun run legacy:dev新功能应进入 Rust CLI、Tauri 桌面端或 SDK。
| 模式 | 标志 | 机制说明 | 适用场景 |
|---|---|---|---|
| Local 模式 | -M local |
规则优先 + 评分兜底。 按优先级匹配配置中的关键词、正则、语言与文件,无匹配时按 Agent 能力模型与 Token 成本加权计算。 |
日常开发、私密环境、无外部网络调用依赖。 |
| Jev 模式 | -M jev |
AI 意图路由。 调用 Typesafe SystemOne API( jev-latest 模型),结合本地安装候选列表与任务意图做出智能决策。 |
复杂模糊意图、需要高阶语义分析的任务分发。 |
| Manual 模式 | -M manual |
直接穿透。 直接校验指定的 Agent 与模型可用性,跳过所有路由算法。 |
确定只想用某一个 CLI 时的精准分发。 |
启用 Jev 模式:在桌面版设置页填写
TYPESAFE_API_KEY,密钥会保存到本机 SQLite,后续无需再配置环境变量:设置 → TypeSafe API Key → 保存密钥为兼容已有安装,环境变量和本地配置文件中的
TYPESAFE_API_KEY仍会作为兜底读取。
coderelay 会从当前工作目录向上自动递归查找 .coderelay/config.yaml(或 .yml、coderelay.config.yaml)。
所有配置项均有内置默认值且经过 Zod 强类型校验。
version: 1
defaultAgent: codex # 无法命中特定规则时的兜底 Agent
defaultModel: codex:gpt-5-codex # 兜底默认模型
# Agent 自定义配置
agents:
claude:
enabled: true
command: /usr/local/bin/claude # 可选:显式重写二进制文件绝对路径
extraArgs: ["--dangerously-skip-permissions"]
env: {}
codex:
enabled: true
models:
- id: gpt-5-codex
label: GPT-5 Codex
strengths: [coding, tool-use]
cost: 3 # 成本等级:1 (极低) ~ 5 (极高)
default: true
# 路由规则与权重
routing:
strategy: hybrid # hybrid (规则+评分) | rules | score
rules:
- name: 深度重构与长文本任务
priority: 10 # 优先级数值越大越优先匹配
when:
minPromptLength: 2000
keywords: ["refactor", "重构", "架构"]
use:
agent: claude
score: 25 # 命中时为候选目标增加的分值
- name: 前端样式与简单脚本
priority: 5
when:
languages: ["css", "html", "bash"]
use:
agent: pi
score: 15
# 评分权重调整
weights:
strength: 1.0 # 每命中一项 strength 标签的分值
rule: 1.0 # 规则 score 的放大乘数
default: 2.0 # 默认 agent/model 的加权基础分
cost: 0.5 # 成本惩罚系数(cost 越高扣分越多)
context: 1.0 # 大请求匹配 long-context 能力的奖励分coderelay 遵循清晰的单向数据流与分层管道架构:
💡 交互式架构图:在浏览器中打开 assets/architecture.html,可在线缩放、按节点筛选依赖、追踪调用链及切换暗黑/浅色主题。
coderelay/
├── apps/desktop/ # Tauri 2 桌面端(React 前端 + src-tauri Rust 后端)
├── crates/
│ ├── coderelay-core/ # 扫描、路由、执行、SQLite 会话等核心实现
│ ├── coderelay-protocol/ # 版本化 NDJSON 协议类型(CLI / SDK / 桌面共用)
│ └── coderelay-cli/ # Rust CLI(run / agents / models / doctor / favorite / sdk)
├── packages/sdk-ts/ # TypeScript SDK(@alkaidstart/coderelay-sdk)
├── src/ # 旧 Bun CLI/TUI(迁移兼容,不再新增功能)
├── docs/ # 架构与设计文档
├── assets/ # Logo、产品图与架构图
└── .github/workflows/ # ci / desktop-build / release
桌面端与 SDK 的前端工具链使用 Bun,核心、CLI 和 Tauri 后端使用 Rust:
git clone https://github.com/GeWu-academy/coderelay.git
cd coderelay
bun install
# 默认开发入口:Tauri 桌面端
bun run dev
# Rust CLI
bun run cli agents --json
# SDK
bun run sdk:test
bun run sdk:build
# 全量检查
bun run version:check
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
bun test
bun run typecheck
bun run desktop:typecheck
bun run sdk:typecheck
bun run --cwd apps/desktop build旧 Bun TUI 仍可运行:
bun run legacy:dev本项目采用 MIT License 授权许可。

