opencode2api 是一个本地 HTTP 代理,把 OpenAI Chat Completions、OpenAI Responses 和 Anthropic Messages 风格的请求转发到 OpenCode 上游接口,并提供模型别名、reasoning/thinking 兼容、SOCKS5 / sing-box 代理和一个轻量管理面板。
这个项目不是 OpenAI、Anthropic 或 OpenCode 的官方项目。请遵守上游服务条款,并只在你有权限的环境中使用。
- OpenAI 兼容接口:
/v1/chat/completions、/v1/models - OpenAI Responses 兼容接口:
/v1/responses - Anthropic Messages 兼容接口:
/v1/messages - 流式 SSE 转换和 token 用量统计
- 模型别名、reasoning effort 映射、强制禁用 thinking
- 免费模型
-free后缀隐藏与自动还原,统一走 OpenCode public 免费通道 - 项目自身 API 密钥管理:
/api/apikeys生成、刷新、删除对外密钥 - SOCKS5 直连、指定代理和轮询代理,支持 Clash 订阅导入与节点一键测速
- VLESS / Trojan / SS / VMess / Hysteria2 节点经 sing-box 本地转换,代理节点一键测速
- Web 管理面板:配置、用量统计、密钥管理、代理测速、版本检测与手动更新指引
- GitHub Actions 自动构建并发布 Docker 镜像到 GHCR
git clone https://github.com/super-mortal/opencode2api.git
cd opencode2api
cp config.example.json config.json
go run . -port 52000 -config config.json -password "change-me"或使用 Docker 部署(推荐):
docker run -d --name opencode2api --restart unless-stopped \
-p 52000:52000 \
-e OPENCODE2API_PASSWORD="change-me" \
-v opencode2api-data:/data \
ghcr.io/super-mortal/opencode2api:latest数据卷 /data 持久化 config.json 与统计,容器重建不丢配置。
健康检查:
curl http://127.0.0.1:52000/health查看模型:
curl http://127.0.0.1:52000/v1/models认证模式:
服务统一走 OpenCode public 免费通道,无需携带真实上游 key。客户端访问 /v1/* 接口的鉴权完全由本项目自身负责:
- 未在管理面板配置任何对外密钥时,鉴权关闭,任意请求放行。
- 配置了对外密钥后,客户端需携带
Authorization: Bearer <sk-…>或x-api-key: <sk-…>,否则返回401 invalid api key。 - 对外密钥在管理面板「密钥」页维护:支持多个、可删除、可刷新,刷新后旧密钥立即失效。
Chat Completions 示例:
curl http://127.0.0.1:52000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "hello"}],
"stream": false
}'免费模型示例(gpt-4o-mini 会经别名解析为 gpt-4o-mini-free):
curl http://127.0.0.1:52000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-YOUR_API_KEY" \
-d '{
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "hello"}],
"stream": false
}'-port string
服务端口,默认 52000
-config string
配置文件路径,默认 config.json
-password string
管理面板密码,默认 123456;留空表示不启用登录验证
-debug
输出调试日志(等价于将 -log-level 提升到 debug)
-log-level string
日志级别: debug/info/warn/error,默认 info
-log-file string
日志文件路径,默认 opencode2api.log;配合自动轮换
-log-stdout
是否同时写 stdout,默认 true
-log-max-size int
单日志文件最大 MB,默认 100
-log-max-backups int
保留旧日志个数,默认 7
-log-max-age int
旧日志保留天数,默认 14
-log-compress
轮换后 gzip 压缩,默认 true
-log-bodies
Debug 下记录截断的 body 形状摘要,默认 false
-version
显示构建版本
第一次部署请务必修改 -password。如果把服务暴露到公网,建议只通过反向代理、访问控制或 VPN 暴露管理面板。
打开 http://127.0.0.1:52000/ 可进入管理面板(默认密码 123456,首次部署必须修改)。面板支持:
- 模型别名、reasoning effort 映射、强制禁用 thinking 配置
- SOCKS5 / VLESS / Trojan / SS / VMess / Hysteria2 代理的增删改与一键测速
- Clash / Clash Verge 订阅链接导入,识别节点后批量测速或逐个添加
- token 用量统计(按模型汇总,可一键清空)
- 对外 API 密钥管理(生成 / 刷新 / 删除
sk-密钥) - GitHub 最新版本检测与手动更新命令指引
面板后端接口(均受 requireAuth 保护,未设密码时自动放行):
| 路由 | 方法 | 说明 |
|---|---|---|
/login /logout |
POST / GET | 管理面板登录登出 |
/admin |
GET | 管理面板页面 |
/api/config |
GET / POST | 读取 / 保存配置(含运行时日志字段) |
/api/stats |
GET / DELETE | 读取 / 清空 token 统计 |
/api/reload |
POST | 刷新 OpenCode 会话和模型列表 |
/api/apikeys |
GET / POST / DELETE | 列出 / 生成 / 删除对外 API 密钥 |
/api/apikeys/regenerate |
POST | 刷新指定密钥(旧密钥立即失效) |
/api/models |
GET | 返回模型列表(面板配置用) |
/api/clash/import |
POST | 导入 Clash 订阅链接并识别节点 |
/api/proxy/test |
POST | 代理节点一键测速 |
/api/update/check |
GET | GitHub 最新版本检测(仅检测不更新) |
默认同时写文件与 stdout。每个请求带 request_id(响应头 X-Request-Id),可串联:
request_started → request_plan → upstream_attempt* → upstream_result → stream_result|request_result → request_done
常见排查:
rg 'empty_reply=true' opencode2api.log
rg 'request_id=XXXX' opencode2api.log
rg 'promoted_reasoning=true' opencode2api.log容器内默认日志路径是 /data/opencode2api.log(挂载卷持久化),可用环境变量覆盖:
OPENCODE2API_LOG_FILEOPENCODE2API_LOG_LEVELOPENCODE2API_LOG_STDOUT
项目提供单独运行、Tor 代理、WARP 代理三套 compose 模版:
export OPENCODE2API_PASSWORD="change-me"
docker compose -f deploy/compose/compose.yml up -d代理部署见 Docker Compose 部署模版。
本项目采用 MIT 许可证,自托管网关,代码完全开源,欢迎 Star 与贡献。