Remove user-facing new-api naming; Docker/network/container names use heicode. Go imports updated; Dockerfiles and workflows ldflags fixed. Made-with: Cursor
158 lines
5.0 KiB
Markdown
158 lines
5.0 KiB
Markdown
# HeiCode
|
||
|
||
> 基于 [`cc-haha`](https://github.com/NanmiCoder/cc-haha) 二次开发的 Claude Code 客户端,登录后通过 **TaijiAICloud** 或 **ClawdRouter** 直接使用各家主流大模型,零配置开箱即用。
|
||
|
||
---
|
||
|
||
## 当前形态
|
||
|
||
- **登录方式**:用户启动 HeiCode 后只看到两个登录入口
|
||
- **TaijiAICloud**(自建网关,基于 [`heicode`](https://github.com/Calcium-Ion/heicode))
|
||
- **ClawdRouter**(聚合网关)
|
||
- **支持模式**:
|
||
- 浏览器跳转 OAuth(推荐 / 平台支持后启用)
|
||
- 复制 API Key 粘贴登录(兼容入口 / 立即可用)
|
||
- **协议**:两个平台均原生支持 Anthropic `/v1/messages`,HeiCode 直接调用,无需中台代理。
|
||
- **模型矩阵**:登录后自动从平台 `/v1/models` 拉取,覆盖 GPT / Claude / Gemini 全家桶。
|
||
|
||
---
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
heicode/
|
||
├── bin/ # CLI 入口(heicode / claude-haha 兼容别名)
|
||
├── src/ # CLI + Server(Bun + TypeScript + Ink)
|
||
│ ├── server/ # 桌面端用的本地 HTTP/WS Server
|
||
│ │ ├── config/providerPresets.json # ★ 仅保留 TaijiAICloud / ClawdRouter
|
||
│ │ ├── api/heicode-auth.ts # ★ 双 Provider 登录入口
|
||
│ │ └── api/providers.ts # ★ 加了 /v1/models 探活
|
||
│ └── ...
|
||
├── desktop/ # Tauri 2 + React 桌面端
|
||
└── docs/ # 文档(含 HEICODE-PLAN.md 路线图)
|
||
```
|
||
|
||
---
|
||
|
||
## 快速开始
|
||
|
||
### 1. 准备依赖
|
||
|
||
```bash
|
||
# macOS / Linux
|
||
curl -fsSL https://bun.sh/install | bash
|
||
|
||
# Windows (PowerShell)
|
||
powershell -c "irm bun.sh/install.ps1 | iex"
|
||
```
|
||
|
||
### 2. 安装项目
|
||
|
||
```bash
|
||
cd heicode
|
||
bun install
|
||
```
|
||
|
||
### 3. 启动 CLI(终端版)
|
||
|
||
```bash
|
||
./bin/heicode # 交互 TUI
|
||
./bin/heicode -p "your prompt" # 无头模式
|
||
```
|
||
|
||
### 4. 启动桌面端
|
||
|
||
```bash
|
||
# Terminal A — 本地 Server
|
||
SERVER_PORT=3456 bun run src/server/index.ts
|
||
|
||
# Terminal B — 桌面前端
|
||
cd desktop && bun run dev --host 127.0.0.1 --port 2024
|
||
```
|
||
|
||
浏览器打开 `http://127.0.0.1:2024`。
|
||
|
||
---
|
||
|
||
## HeiCode Auth API
|
||
|
||
供桌面端 / CLI 调用的双 Provider 登录入口。
|
||
|
||
| Method · Path | 用途 |
|
||
|---|---|
|
||
| `GET /api/heicode-auth/providers` | 列出 2 个登录入口(TaijiAICloud / ClawdRouter)+ OAuth 是否就绪 |
|
||
| `POST /api/heicode-auth/login` | 粘贴 API Key 登录:校验 → 拉模型 → 保存 → 激活 |
|
||
| `POST /api/heicode-auth/oauth/start` | OAuth 启动(**当前为占位**,等平台支持) |
|
||
| `GET /api/heicode-auth/oauth/callback` | OAuth 回跳(**当前为占位**,等平台支持) |
|
||
| `GET /api/heicode-auth/status` | 当前登录状态 |
|
||
| `POST /api/heicode-auth/logout` | 登出 |
|
||
|
||
### 粘贴 API Key 登录示例
|
||
|
||
```bash
|
||
curl -X POST http://127.0.0.1:3456/api/heicode-auth/login \
|
||
-H 'Content-Type: application/json' \
|
||
-d '{"providerId":"taijiaicloud","apiKey":"sk-xxx"}'
|
||
```
|
||
|
||
返回:
|
||
|
||
```json
|
||
{
|
||
"ok": true,
|
||
"provider": {
|
||
"id": "...",
|
||
"presetId": "taijiaicloud",
|
||
"name": "TaijiAICloud",
|
||
"baseUrl": "https://api.taijiaicloud.com",
|
||
"apiFormat": "anthropic",
|
||
"models": { "main": "claude-sonnet-4-6", "haiku": "...", "sonnet": "...", "opus": "..." }
|
||
},
|
||
"availableModels": [{ "id": "..." }, ...]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 给两个平台的对接清单
|
||
|
||
详见 [`docs/HEICODE-PLAN.md`](./docs/HEICODE-PLAN.md)。简版:
|
||
|
||
### TaijiAICloud(基于 heicode)
|
||
|
||
- 必备:`/v1/messages`(Anthropic 原生协议) · `/v1/models` · API Key 子分组管理
|
||
- 推荐:OAuth2 Authorization Code + PKCE 端点;Webhook(额度告警)
|
||
|
||
### ClawdRouter
|
||
|
||
- 必备:`/v1/messages` · `/v1/models`(已支持)
|
||
- 推荐:管理面 API(颁发短期 token);OAuth2 端点
|
||
|
||
---
|
||
|
||
## 路线图
|
||
|
||
- [x] **S0 品牌剥离**:包名 / Tauri / Cargo / 安装钩子改为 HeiCode
|
||
- [x] **S0 双 Provider 预设**:providerPresets.json 仅保留 TaijiAICloud / ClawdRouter
|
||
- [x] **S0 模型自动发现**:`/v1/models` 探活 + 默认模型自动选取
|
||
- [x] **S0 双 Provider 登录后端**:`/api/heicode-auth/*` 完整就绪(OAuth 占位)
|
||
- [ ] **S1 桌面端登录页**:替换现有 Settings 的 Provider 列表为 2 卡片登录
|
||
- [ ] **S1 CLI Onboarding**:原 `Onboarding.tsx` / `ConsoleOAuthFlow` 改为 HeiCode 双卡片
|
||
- [ ] **S1 OAuth 真实接入**:等 TaijiAICloud / ClawdRouter 提供 OAuth endpoints 后补全
|
||
- [ ] **S2 模型选择器 UX**:登录后 `/api/providers/:id/models` 渲染下拉选择默认模型
|
||
- [ ] **S2 配额状态栏**:拉平台 `/v1/usage` 实时展示余量
|
||
- [ ] **S3 Taiji Agent 工具融合**:MCP 自动挂载 / Skills 同步 / Agent 导入
|
||
|
||
---
|
||
|
||
## License
|
||
|
||
继承上游 cc-haha 的 License。再往上游溯源是 Anthropic Claude Code 泄露源码,**仅供学习研究使用**。
|
||
|
||
---
|
||
|
||
## 致谢
|
||
|
||
- 上游 [`cc-haha`](https://github.com/NanmiCoder/cc-haha) — 提供基础工程
|
||
- [`heicode`](https://github.com/Calcium-Ion/heicode) — 模型网关后端
|