# 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 [![Go](https://img.shields.io/badge/Go-1.27-00ADD8.svg)](https://golang.org/) [![Vue](https://img.shields.io/badge/Vue-3.4+-4FC08D.svg)](https://vuejs.org/) [![License](https://img.shields.io/badge/License-LGPL--3.0-blue.svg)](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 逆向参考