# sider2api
**Repository Path**: liuxinwin_admin/sider2api
## Basic Information
- **Project Name**: sider2api
- **Description**: sider2api的转化过程,方便本地agent使用
- **Primary Language**: Go
- **License**: LGPL-3.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-09-04
- **Last Updated**: 2026-09-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# sider2api
[](https://golang.org/)
[](https://vuejs.org/)
[](LICENSE)
**把 Sider(sider.ai)订阅变成 OpenAI 兼容 API 的网关**
基于 [Wei-Shaw/sub2api](https://github.com/Wei-Shaw/sub2api) 二次开发,感谢上游项目的出色工作。
## 这是什么
在 Edge/Chrome 里登录 Sider 侧边栏订阅后,本项目从浏览器扩展的本地存储提取会话 token,
通过自建网关把 Sider 的模型能力封装成 **标准 OpenAI Chat Completions API**(`/v1/chat/completions`、
`/v1/models`),可以直接接入 ZCode、WorkBuddy、OpenCode、Claude Code 等任何 OpenAI 兼容客户端。
同时保留了 sub2api 的全部能力:多平台账号池(Claude / OpenAI / Gemini / Grok / Kimi / 智谱 /
DeepSeek…)、分组调度、故障转移、用量计费、管理面板。你可以把 Sider 账号和 DeepSeek/GLM 等
账号放进同一个网关,统一分发。
## 双通道设计
Sider 有两套上游接口,网关**按请求的模型名自动路由**,客户端无感知:
| | 聊天通道 | Agent 通道 |
|---|---|---|
| 上游端点 | `POST /api/v3/completion/text` | `POST /api/chat/v1/local_agent/responses` |
| 协议 | Sider 私有(messages 拍平为 prompt + SSE) | **标准 OpenAI Responses** |
| Function calling | ❌(模型只能文本模仿) | ✅ 原生支持(tool_calls / 工具结果回传 / 流式) |
| 上下文限制 | **~48KB** prompt 硬上限(超出返回明确报错) | 100KB+ 实测正常 |
| Token 用量 | 无(网关本地估算) | 上游返回真实 usage |
| 计费方式 | 按次(每条 2~12 credits) | 按 token(input 6667 / output 33334 credits / 1M) |
| 模型 | 36 个启用模型 | 4 个:`gpt-5.6-sol`、`gpt-5.6-luna`、`grok-4.6`、`deepseek-v4-flash-vision-exp` |
路由规则:请求模型属于 Agent 通道 4 模型之一 → 自动走 local_agent 端点;其余模型 → 聊天通道。
`/v1/models` 返回全部 37 个模型,**一个 base_url + 一个 API Key 通吃两种场景**。
## 快速开始
### 1. 提取 Sider token
在 Edge 中安装并登录 [Sider 扩展](https://sider.ai/),然后:
```bash
cd tools
npm install
node extract_token.js # 输出 token 并写入 tools/token.txt
```
> 也可手动获取:浏览器打开 `edge://settings/cookies/detail?site=sider.ai` 复制 `token`,
> 或扩展 DevTools → Application → Local Storage → `token`。token 为 JWT,有效期约一年。
### 2. 启动网关
**Docker(推荐):**
```bash
cd deploy
docker compose -f docker-compose.dev.yml up --build -d
```
**本地编译:**
```bash
# 前端(产物输出到 backend/internal/web/dist)
cd frontend && npm install && npm run build
# 后端(必须带 embed 标签,否则管理面板 404)
cd ../backend
go build -tags embed -o sub2api.exe ./cmd/server
# 启动(需要 PostgreSQL 15+ 与 Redis 7+)
RUN_MODE=simple AUTO_SETUP=true \
DATABASE_HOST=127.0.0.1 DATABASE_PORT=5432 DATABASE_USER=sub2api \
DATABASE_PASSWORD=<密码> DATABASE_DBNAME=sub2api DATABASE_SSLMODE=disable \
REDIS_HOST=127.0.0.1 REDIS_PORT=6379 \
ADMIN_EMAIL=admin@example.com ADMIN_PASSWORD=<密码> \
JWT_SECRET=<随机64位hex> TOTP_ENCRYPTION_KEY=<随机64位hex> \
./sub2api.exe
```
### 3. 配置 Sider 账号
打开管理面板 `http://127.0.0.1:8080`,登录后:
1. **账号管理 → 创建账号** → 平台选 **Sider**(紫色闪电图标)
2. **API Key** 填 `token.txt` 内容(带不带 `Bearer ` 前缀均可)
3. **Base URL** 填 `https://api1.chatgpt-sidebar.com`(国内直连域名池之一,可留空用默认)
4. 保存后把账号绑定到 `sider-default` 分组,再到 **API Keys** 页创建用户 Key
simple 模式首次启动会自动创建 `sider-default` 分组。
### 4. 调用
```bash
curl http://127.0.0.1:8080/v1/chat/completions \
-H "Authorization: Bearer sk-xxxx" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.6-sol","messages":[{"role":"user","content":"你好"}],"stream":true}'
```
客户端配置(以 OpenCode 为例):`base_url = http://127.0.0.1:8080/v1`,`api_key = sk-xxxx`,
模型名从 `/v1/models` 里选。
## 额度与限制
| 项目 | 说明 |
|---|---|
| 聊天通道计费 | 按次扣 `cost.count`(luna=2 分,sol=12 分),与消息长度无关 |
| Agent 通道计费 | 按 token(1 credit ≈ $0.001),大上下文请求单次可达几十~上百分 |
| 额度池 | Unlimited 套餐 basic/advanced 池显示 99999(哨兵值=积分无限),每月重置 |
| **公平使用** | **Unlimited 积分无限,但单月高级积分超过 1500 会被降低输出质量(降智)**。高级积分消耗:聊天通道按次(sol=12 分/条),Agent 通道按 token(input 6667 / output 33334 分/1M,缓存读 667) |
| 额度查询 | `GET {base}/api/v1/completion/limit/user?app_name=ChitChat_Edge_Ext&app_version=5.32.2&tz_name=Asia/Shanghai`(带 Bearer token),看 `advanced_credit.used` 是否逼近 1500 |
| token 续期 | 过期后在扩展里重新登录 Sider,重跑 `node extract_token.js` 更新账号凭据 |
| OCR/图片上传 | 未覆盖(需要完整 CloudFront cookie),纯聊天不受影响 |
## 相对上游的改动
- `internal/pkg/sider`:Sider 模型目录 + CC→Sider 请求转换
- `openai_gateway_sider.go`:聊天通道转发器(SSE 双向转换、上游错误透传、48KB 守卫、tiktoken 估算计费)
- `openai_gateway_sider_agent.go`:Agent 通道转发器(CC↔Responses 转换、local_agent 信封解包、复用上游 Responses→CC 转换器实现完整工具调用)
- 平台接线:常量、账号方法、网关路由、调度归一化、quota 校验、默认分组、`/v1/models`、管理面板 Sider 选项与图标
- `tools/extract_token.js`:Edge 扩展 LevelDB 快照提取 token / 模型列表 / 域名池
详细设计文档见 [SIDER.md](SIDER.md)。
## 免责声明
- 使用本项目可能违反 Sider 及其他上游服务商的服务条款,请自行评估风险,所有后果由使用者自行承担
- 仅供技术学习与研究使用,禁止任何形式的商业运营
- 上游 sub2api 采用 LGPL-3.0 协议,本项目遵循同一协议
## 致谢
- [Wei-Shaw/sub2api](https://github.com/Wei-Shaw/sub2api) — 本项目的基础平台
- [qfcy/sider-ai-api](https://github.com/qfcy/sider-ai-api) — Sider API 逆向参考