本地 AI 网关与 CLI 配置管理中心
功能特性 • 应用截图 • 技术栈 • 快速开始 • 开发指南 • 架构设计 • 安全说明
使用指南 • English Guide • English README
- AI 网关管理:集中管理多 LLM 供应商(OpenAI、Anthropic、Gemini、OpenRouter 等),支持多协议与多种认证方式。
- 本地 API 网关:在
127.0.0.1:54321暴露统一本地接口,通过{provider_slug}/{model_id}路由到真实供应商。 - 虚拟供应商:以一个固定对外模型 ID(
{alias}/{model_id})隐藏底层真实供应商,支持候选路由优先级与自动故障转移——供应商增减或不可用时客户端无需感知、无缝切换。 - CLI 配置档案:为 Claude Code、Codex、Gemini CLI 等维护配置档案,可直连供应商或路由到本地网关。
- 聊天界面:内置聊天 UI,支持发送消息、流式响应、错误气泡展示,消息以 JSONL 格式存储。
- 图像生成:内置视觉生成工作台与画廊,直连图像生成供应商,支持文生图与产物本地化存储,并保留生成历史与调用统计。
- 敏感数据加密:API Key 等敏感数据通过 AES-GCM 加密存储,配置文件中仅存
$SECRET:{uuid}$引用。 - 额度与调用监控:支持供应商额度查询与模型调用记录统计。
- 备份与恢复:支持本地备份与 WebDAV 备份,使用 SQLite Online Backup API。
- 应用内诊断日志:双日志机制,分别服务开发调试与业务运行时诊断。
- 脚本模板与模板市场:支持 Rhai 额度监控脚本模板的增删改查与生命周期管理(草稿/启用/禁用)、CodeMirror 编辑器(内置 snippet 与系统变量/函数文档)与沙箱试运行,并可在应用内浏览公共模板仓库、一键应用为本地模板。
- Cline 免费模型代理:内置 Cline Free 供应商预设(自动附带
x-client-type: cline-cli请求头,默认关联 DeepSeek V4 Flash 免费模型),可经本地网关统一代理访问免费模型。 - 轻量社区:内置轻量社区模块(帖子 / 回复 / 积分 / 外链分享),支持 Markdown 渲染,无需离开应用即可交流与沉淀内容。
| 层级 | 技术 |
|---|---|
| 桌面框架 | Tauri 2.x(Rust + WebView) |
| 前端 | React 19 + TypeScript 5 |
| 路由 | TanStack Router |
| UI | shadcn/ui + Tailwind CSS + Font Awesome |
| 状态 | Zustand(前端)+ Tauri State(后端) |
| 表单 | react-hook-form + zod |
| 国际化 | i18next(zh-CN / en) |
| 后端 HTTP 网关 | axum |
| 数据库 | SQLite(rusqlite + r2d2) |
| 加密 | AES-GCM |
| 类型同步 | ts-rs(Rust → TypeScript) |
# 克隆仓库
git clone https://github.com/xucux/i-code.git
cd i-code
# 安装依赖
pnpm install# 桌面端开发模式(推荐)
pnpm tauri:dev
# 仅前端开发
pnpm devpnpm dev # 仅前端 Vite 开发服务器
pnpm tauri:dev # 桌面端开发
pnpm tauri:build # 桌面端打包
pnpm type-check # TypeScript 类型检查
pnpm lint # ESLint
pnpm test # Vitest 前端测试
pnpm test:rust # Rust 单元测试
pnpm check # TypeScript + Rust 检查
pnpm check:all # 完整检查 + 测试i-code/
├── docs/ # 设计文档与提案
├── scripts/ # 工具脚本
├── src/ # 前端 React 应用
│ ├── components/ # UI 组件
│ ├── core/ # 类型、错误、事件、工具函数
│ ├── hooks/ # 共享 hooks
│ ├── modules/ # 业务模块
│ └── routes/ # TanStack 文件路由
├── src-tauri/ # Rust 后端
│ ├── data/ # 内置供应商/模型 JSON
│ ├── src/ # Rust 源码
│ └── tauri.conf.json
└── README.md
CLI / 外部客户端
↓
本地网关 (axum) @ 127.0.0.1:54321
↓
解析 model = {provider_slug}/{model_id}
↓
虚拟供应商故障转移路由(如启用)
↓
解析 $SECRET:{uuid}$ 引用
↓
转发至真实上游供应商
↓
拦截器异步写入 logger + call-records
- API Key / Token 禁止以明文形式存储或写入日志。
- 配置文件与数据库中仅保存加密引用:
$SECRET:{uuid}$。 - 加解密操作仅在 Rust 后端完成。
- 前端仅在输入时接触明文,一次性传往后端,不缓存。
- 内部 CLI 请求必须携带
inner-cli-api请求头;否则需提供有效的Authorization: Bearer {gateway_key}。
本工具仅限于代理已有供应商 API,请求体几乎完全透传,不涉及逆向、不涉及破解等操作;如果您的供应商账户在使用过程中,出现封禁、限速、订阅取消等问题,作者不承担任何责任。
- 供应商 / 模型 CRUD 与设置
- 敏感数据本地加密
- 网关运行时(health / models / chat / messages)
- 虚拟供应商路由
- 备份与恢复
- 完整的 CLI 管理业务流程
- 应用内聊天模块
- 系统密钥链 Secret 存储
- i-code-script-templates — 可复用 Rhai 脚本模板公共仓库,用于额度监控等场景。
- 感谢 vscode-unify-chat-provider 在供应商/模型统一方面提供的宝贵参考数据与设计灵感。
MIT © i-code



