
1. WSL 里跑 newapi到底解决什么问题如果你在 Windows 上做本地模型服务调用大概率遇到过这种局面本地 Ollama 一个地址、公司网关一个地址、云端模型又一个地址每个工具都要单独填一套 baseURL 和 api-key。换台机器、换个编辑器配置就得重来一遍。newapi 就是冲着这个痛点来的——它把各个模型服务提供商的 api-key 统一管理起来对外只暴露一个地址、一套 Key内部再分发到不同厂商的模型服务上。我这次把它装在 WSL 里原因很直接WSL 的 Ubuntu 环境跟生产服务器几乎一致docker 命令、systemd、目录挂载都能原样复用调试通了直接搬到云主机上不用改。而且 WSL 和 Windows 宿主之间网络互通Windows 侧的编辑器、脚本、浏览器都能直接访问 WSL 里跑的服务比纯虚拟机省事。这篇要交付的东西很具体在 WSL 里用 docker 把 newapi 跑起来配好渠道和模型然后给出一个可复制的settings.json配置骨架把 TaoToken 的统一 Key 和 API 通道接进去最后用一条 curl 请求验证整条链路是通的。适合谁看手上有一堆模型 Key 需要归拢的人、想给团队做模型分发入口的人、以及本地部署了模型想统一对外提供调用的人。整个过程不需要你懂 Go 或前端会敲命令、会改 JSON 就够了。2. 前置准备WSL、Docker 与 TaoToken 统一 Key2.1 WSL 环境确认先确认你的 WSL 是 WSL2并且用的是 Ubuntu 发行版。在 PowerShell 里执行wsl -l -v输出里 VERSION 那一列应该是 2。如果是 1用wsl --set-version Ubuntu 2升级。WSL2 才有完整的网络栈和 systemd 支持后面 docker 服务才能正常托管。进入 WSL 后先更新一次包索引sudo apt-get update sudo apt-get install -y ca-certificates curl apt-transport-https2.2 安装 DockerWSL 里装 docker 有两种路子一是用 Docker Desktop 的 WSL 集成二是直接在发行版里装 docker-ce。我选后者因为不依赖 Windows 侧的 Docker Desktop纯命令行可控性更强。添加 Docker 的 GPG 密钥和软件源sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc /dev/null sudo chmod ar /etc/apt/keyrings/docker.asc echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.asc] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(. /etc/os-release echo $VERSION_CODENAME) stable | \ sudo tee /etc/apt/sources.list.d/docker.list /dev/null然后安装sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin装完检查服务状态sudo systemctl status docker看到Active: active (running)就对了。如果提示 systemd 没启动在/etc/wsl.conf里加上[boot] systemdtrue然后wsl --shutdown重进一次。2.3 配置镜像加速默认的 Docker Hub registry 在国内网络下经常拉不动改一下/etc/docker/daemon.json。没有这个文件就新建{ exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m }, storage-driver: overlay2, registry-mirrors: [ https://docker.m.daocloud.io, https://hub.uuuadc.top, https://docker.oneindex.cf ] }重启生效sudo systemctl daemon-reload sudo systemctl restart docker2.4 拿到 TaoToken 的统一 Keynewapi 本身是个分发平台它需要上游有可用的模型服务通道。这里用 TaoToken 作为统一的上游入口好处是一个 Key 就能覆盖多种模型不用在 newapi 里逐个厂商配。先去控制台创建 API Key地址是https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentwsl_newapi。创建完把 Key 复制出来形如sk-开头的一串字符后面配置渠道时要用。API 的基础地址是https://taotoken.net/api注意这个地址不带 UTM 参数直接填就行。注意Key 只在创建时完整显示一次建议先存到密码管理器里别直接贴在聊天记录或公开仓库。3. 可复制配置newapi 容器启动与 settings.json 骨架3.1 启动 newapi 容器拉取镜像并启动。个人使用直接用 SQLite 就够了数据目录挂载到宿主机容器删了数据还在docker pull calciumion/new-api:latest docker run --name new-api -d --restart always \ -p 3000:3000 \ -e TZAsia/Shanghai \ -v ./data:/data \ calciumion/new-api:latest如果你要上 MySQL 做高可用把SQL_DSN环境变量加上docker run --name new-api -d --restart always \ -p 3000:3000 \ -e SQL_DSNroot:123456tcp(localhost:3306)/oneapi \ -e TZAsia/Shanghai \ -v ./data:/data \ calciumion/new-api:latest启动后看日志确认没有报错docker ps docker logs new-api --tail20 -f日志里出现任务进度轮询、数据看板保存这类信息说明服务已经正常跑起来了。浏览器打开http://localhost:3000按引导创建 admin 账号。3.2 配置渠道指向 TaoToken登录后台后进「渠道管理」新建渠道。关键字段这样填字段填写内容渠道类型OpenAI 兼容模式API 地址https://taotoken.net/apiAPI Key你在 TaoToken 控制台创建的 Key模型按需添加或点「获取模型列表」自动拉取API 地址这里不要带/v1也不要带结尾反斜杠newapi 会自己拼接路径。模型名要和实际调用时填的 model 参数保持一致比如gpt-4o、claude-sonnet-4-5这类。配完点「测试」按钮如果返回绿色成功提示说明 newapi 到 TaoToken 这一段通了。如果失败先检查 Key 有没有多余空格、地址有没有写错。3.3 settings.json 配置骨架newapi 跑起来后对外就是一个 OpenAI 兼容的端点。各种工具接入时本质就是填 baseURL 和 apiKey。下面给一个通用的settings.json骨架你可以按自己用的工具调整字段名{ provider: openai-compatible, baseURL: http://localhost:3000/v1, apiKey: sk-你的newapi令牌, models: { default: { name: gpt-4o, maxTokens: 16384, temperature: 1 }, reasoning: { name: claude-sonnet-4-5, maxTokens: 32768, thinking: { type: enabled, budgetTokens: 204800 } } } }几个要点解释一下。baseURL指向 newapi 的地址加/v1这是 OpenAI 兼容协议的标准路径。apiKey填的是 newapi 里创建的令牌不是 TaoToken 的 Key——TaoToken 的 Key 已经在渠道里配好了工具侧只认 newapi 的令牌。models里可以放多个模型别名调用时用别名或真实模型名都行。如果你用的是 opencode 这类工具配置结构类似只是字段名不同{ minimax-tokenplan: { npm: ai-sdk/openai-compatible, options: { baseURL: http://localhost:3000/v1, apiKey: sk-你的newapi令牌 }, models: { MiniMax-M2.7: { name: MiniMax-M2.7, tool_call: true, thinking: { type: enabled, budgetTokens: 204800 } } } } }其他编辑器或 CLI 工具照着这个模式改 baseURL 和 apiKey 就行核心就这两个字段。4. 验证请求从 curl 到编辑器实测4.1 用 curl 打通链路先在 WSL 里用 curl 发一条请求确认 newapi 能正常转发到上游模型curl -X POST http://localhost:3000/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-你的newapi令牌 \ -d { model: gpt-4o, messages: [ {role: user, content: 用一句话说明什么是模型分发平台} ], temperature: 1, max_tokens: 256, stream: false }如果返回里带了choices数组和正常的 content说明整条链路是通的curl → newapi → TaoToken → 上游模型 → 原路返回。想测流式输出把stream改成true你会看到一行行data:开头的 SSE 数据往下刷。这一步能过说明流式转发也没问题。4.2 在编辑器里实测把上面settings.json骨架里的 baseURL 和 apiKey 填进你常用的工具然后发一条测试消息。以 opencode 为例配置写好后重启工具在对话里选MiniMax-M2.7这个模型发一句「你好确认一下连通性」。如果正常回复说明编辑器侧的配置也生效了。这里有个容易忽略的点WSL 里的localhost和 Windows 侧的localhost是互通的但如果你在 Windows 原生程序里填localhost:3000连不上试试用 WSL 的 IP。在 WSL 里执行hostname -I拿到 IP比如172.18.134.180Windows 侧就用这个地址。4.3 验证模型列表想确认 newapi 到底暴露了哪些模型直接请求 models 接口curl http://localhost:3000/v1/models \ -H Authorization: Bearer sk-你的newapi令牌返回的 JSON 里data数组就是当前可用的模型列表。这个列表来自你在渠道里配置的模型如果某个模型没出现回渠道管理里检查是不是没添加或没启用。5. 本篇常见错排查5.1 容器起来了但页面打不开先看容器状态docker ps里 STATUS 是不是Up。如果是Exited用docker logs new-api看报错。常见原因是端口 3000 被占用换成-p 3001:3000重新起。另外 WSL 里如果 systemd 没开--restart always可能不生效确认/etc/wsl.conf里systemdtrue已配置。5.2 渠道测试报 401 或 403大概率是 Key 或地址的问题。检查三点TaoToken 的 Key 有没有复制完整、API 地址是不是https://taotoken.net/api不带/v1、Key 有没有多余空格。如果 Key 是在控制台刚创建的确认没有误删。5.3 调用返回 model not found说明请求里的 model 名和渠道里配置的模型名对不上。去「模型广场」看实际可用的模型名调用时严格照抄。newapi 支持模型重定向如果你想让gpt-4o实际指向别的模型可以在渠道的模型映射里配。5.4 流式输出卡住或截断检查max_tokens是不是设得太小或者上游模型对max_tokens有上限。另外 WSL 的网络转发在高并发流式场景下偶尔会有缓冲问题可以试试把stream关掉先确认非流式正常再排查流式。5.5 重启后数据丢了确认启动时-v ./data:/data挂载路径写对了而且是在你执行docker run的目录下。如果用了相对路径换目录启动容器会找不到原来的数据。建议用绝对路径挂载比如-v /home/yourname/newapi-data:/data。6. 后续接入与 Key 管理newapi 跑通之后日常维护主要就是两件事管渠道和发令牌。渠道对应上游模型服务令牌对应下游调用方。你可以给不同项目发不同的令牌设置额度和过期时间这样某个令牌泄露了也不影响全局。如果你要长期做编码或 Agent 类应用建议把模型调用统一走 newapi再在 newapi 里配好 TaoToken 的通道。这样换模型、加模型都只改一处下游工具完全不用动。TaoToken 的 Coding Plan 适合这种长期高频调用的场景地址是https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentwsl_newapi。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentwsl_newapi里面有各语言 SDK 的调用示例。API Key 管理入口在https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentwsl_newapi需要新建或轮换 Key 时从这里进。想直接在网页里试模型效果用模型对话页https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentwsl_newapi最快。最后提醒一句WSL 里的服务默认只监听本机如果你想让局域网其他设备也能访问 newapi需要在 Windows 侧做端口转发或者把 WSL 网络模式改成 mirrored。这一步涉及 Windows 防火墙规则改之前先确认你的网络环境允许。