# opencode-free-api **Repository Path**: nachao/opencode-free-api ## Basic Information - **Project Name**: opencode-free-api - **Description**: OpenCode Free API 本地代理服务,提供 OpenAI / Anthropic 兼容格式端点,支持 Windows / Linux 单文件部署。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-05-21 - **Last Updated**: 2026-06-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenCode Free API [![Gitee Release](https://img.shields.io/badge/release-v1.0.3-blue)](https://gitee.com/nachao/opencode-free-api/releases) [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE) OpenCode Free API 的本地代理服务,提供 **OpenAI** 与 **Anthropic** 兼容格式的 API 端点,转发至 opencode.ai 的免费模型。 ## 下载 各平台预编译二进制文件,**无需 Python 环境**,下载即用: | 平台 | 文件 | 下载 | |------|------|------| | Windows (x64) | `opencode-free-api-windows-v1.0.3.exe` | [⬇ 下载](https://gitee.com/nachao/opencode-free-api/releases/download/v1.0.3/opencode-free-api-windows-v1.0.3.exe) (41MB) | | Linux (x64) | `opencode-free-api-linux-v1.0.3` | [⬇ 下载](https://gitee.com/nachao/opencode-free-api/releases/download/v1.0.3/opencode-free-api-linux-v1.0.3) (13MB) | > 全部版本见 [Releases 页面](https://gitee.com/nachao/opencode-free-api/releases)。 ## 功能 - **OpenAI 兼容端点**:`/v1/chat/completions`、`/v1/models` - **Anthropic 兼容端点**:`/zen/v1/messages`、`/zen/v1/models` - **工具调用转换**:自动转换 OpenAI `tools` / `tool_choice` 为 Anthropic 格式 - **流式输出**:支持 SSE 流式响应 - **DeepSeek 兼容**:自动处理 `reasoning_content` 字段 - **系统托盘**(Windows):后台运行,带 Help / Exit 菜单 - **请求日志**:按天轮转的文本日志 ## 目录结构 ``` . ├── app.py # Flask 核心服务(Anthropic + OpenAI 端点) ├── main.py # 托盘入口(同进程:Flask + 托盘一体化) ├── tray.py # 托盘入口(子进程:启动 app.py + 托盘监控) ├── scripts/ │ ├── start.sh # Linux 一键启动脚本 │ ├── start.vbs # Windows 无窗口启动脚本 │ └── build-linux.sh # Linux 单文件构建脚本 ├── config/ │ └── opencode-free-api.service # systemd 服务单元文件(Linux) ├── opencode-free-api-windows.spec # PyInstaller 构建配置(Windows) ├── resources/ │ ├── help.html # 帮助页面 │ ├── icon.png # 托盘图标 │ └── icon.ico # exe 图标(由 icon.png 转换生成) └── logs/ └── proxy-YYYY-MM-DD.log ``` ## 依赖 ```bash pip install -r requirements.txt ``` 依赖列表:`flask`、`requests`、`Pillow`、`pystray` ## 启动方式 ### 1. 命令行启动服务 ```bash python app.py ``` 服务运行在 `http://0.0.0.0:3579` ### 2. 带系统托盘启动(推荐桌面使用) ```bash python main.py ``` 或 ```bash python tray.py ``` ### 3. Windows 无窗口启动 双击 `scripts/start.vbs`,后台运行且不出黑框。 ## 使用示例 把 API Base URL 设为 `http://localhost:3579`,Key 任意填写即可。 ```bash curl http://localhost:3579/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "qwen3.6-plus-free", "messages": [{"role": "user", "content": "你好"}], "stream": true }' ``` ## 配置 通过环境变量 `OPENCODE_FREE_API_PORT` 修改端口,默认 **3579**: ```bash set OPENCODE_FREE_API_PORT=3579 python main.py ``` 所有入口(`app.py`、`main.py`、`tray.py`)共用此变量。 ## Linux 服务器部署 ### 1. 安装依赖(无需 Pillow / pystray) ```bash pip install flask requests ``` ### 2. 一键启动 ```bash chmod +x scripts/start.sh ./scripts/start.sh ``` ### 3. systemd 服务化(推荐) ```bash # 复制服务文件 sudo cp config/opencode-free-api.service /etc/systemd/system/ ``` 服务默认监听 `0.0.0.0:3579`,如需改端口,修改 service 文件中的 `Environment=OPENCODE_FREE_API_PORT=3579`。 ## 构建 Linux 单文件可执行程序 由于 PyInstaller 无法跨平台编译(Windows 不能生成 Linux 二进制),需在 Linux 服务器上执行构建。 ### 1. 上传代码到 Linux 服务器 ```bash scp -r opencode-free-api user@server:/opt/ ssh user@server "cd /opt/opencode-free-api && chmod +x scripts/build-linux.sh && ./scripts/build-linux.sh" ``` ### 2. 产物 构建完成后,单文件位于: ``` dist/opencode-free-api-linux ``` 复制到任意 Linux 服务器即可直接运行,**无需安装 Python**: ```bash chmod +x opencode-free-api-linux OPENCODE_FREE_API_PORT=3579 ./opencode-free-api-linux ``` **特性**: - 单文件、无依赖、复制即用 - 默认不写日志文件(与 Windows exe 一致) - 端口通过环境变量 `OPENCODE_FREE_API_PORT` 控制 ## 构建单文件 exe(Windows) ### 1. 安装构建依赖 ```bash pip install pyinstaller ``` ### 2. 执行构建 ```bash pyinstaller "opencode-free-api-windows.spec" --noconfirm ``` ### 3. 产物 构建完成后,单文件 exe 位于: ``` dist/opencode-free-api-windows.exe ``` 直接复制到别的 Windows 电脑即可双击运行,**无需安装 Python**。 ### 构建说明 - 图标来源 `resources/icon.png`,构建时自动转换为 `resources/icon.ico` 并嵌入 exe。 - 资源文件(`resources/`)会被打包进 exe 内部,运行时解压到临时目录。 - **exe 模式不写日志文件**;如需调试,请使用源码启动(`python app.py` / `python tray.py` / `scripts/start.vbs`),日志会写入 `logs/` 目录。 ## 健康检查 ```bash curl http://localhost:3579/health ``` ## 注意事项 - 免费模型 ID 通常以 `-free` 结尾,且 `owned_by` 为 `opencode`。 - 源码启动时日志自动写入 `logs/` 目录,按天分割;exe 启动时仅输出到控制台。 ## 测试 ```bash pip install pytest pytest tests/ -v ``` 测试覆盖: - Flask 路由(`/health`、`/help`、模型列表、聊天补全、Anthropic 端点) - CORS 响应头 - OpenAI ↔ Anthropic 格式转换(tools、tool_choice、system 消息) - 上游请求异常处理