摘要:这篇文章写给想把“IDE 里用模型”做成稳定工程的人。思路是先用 147API(OpenAI 接口聚合管理)把上游渠道和 key 管理收口,再用 Continue 扩展在 VS Code / Cursor 里配置同一份 config.yaml(apiBase + apiKey),做到可复制、可维护。文中包含 Kotlin 的最小连通性测试,以及排查 401/403/404/超时的顺序。
你在 IDE 里用大模型,体验好不好,往往不取决于“模型有多强”,而取决于两件事:
- 能不能稳定接入(团队里每个人都能用,同一套配置能复用)
- 能不能把 Key、渠道、配额这类“接入层问题”从业务代码里剥离出来
这篇文章参考了 CSDN 上那篇“把 Claude Code 接入 VS Code 与 Cursor”的写法(见文末链接),但我把思路换成更通用、更偏工程的做法:用 147API(147ai.com)这种 OpenAI 接口聚合管理工具,先把上游渠道收口,再把 IDE 接入做成一份可复制的配置。
适用人群
- 你希望团队里所有人用同一套 IDE 接入方式
- 你不想把“换渠道、换 key、控额、限流”写进每个业务项目里
- 你更喜欢“配置化”而不是“到处改代码”
0. 先说明白:本文讲的是哪条路线
本文主线是:
- 你已经有一个 OpenAI 兼容的统一接入(例如 147API),对外提供形如
.../v1的接口 - IDE 侧用 Continue 扩展来连接这个接口(VS Code / Cursor 都能装扩展)
Continue 官方文档明确支持为 OpenAI API compatible provider 配置 apiBase(也就是自定义 /v1 的入口)与 apiKey(见文末参考链接)。
至于“Claude Code 官方扩展”的路线(Anthropic 的那套 VS Code/Cursor 扩展),它更偏官方直连与官方第三方(Bedrock/Vertex/Foundry)接入;如果你要走这条路,建议直接按 Claude Code 官方文档来(也在文末参考里)。
1. 147API(能解决什么问题
我只引用官网能直接公开确认的信息:147ai.com 首页描述中提到它是 OpenAI 接口聚合管理,支持多种渠道(包含 Azure),可用于二次分发管理 key,并且提供单可执行文件与 Docker 镜像“一键部署、开箱即用”的形态(见文末参考链接)。
落到“IDE 接入”这个具体场景,它带来的价值通常是:
- 把团队的 key 管理集中到一处,IDE 侧只配一个 key
- 上游渠道的切换、倍率、限额等策略下沉到接入层(IDE/业务侧配置不频繁改)
- 便于做审计与排查:哪个项目、哪个 key、哪个模型、耗了多少,一眼能追(前提是你自己在接入层做了日志/统计)
2. 准备工作
你需要:
- VS Code 或 Cursor(Cursor 也是基于 VS Code 扩展生态)
- 已部署好的 147API(或你自己的 OpenAI 兼容网关),并确认:
- Base URL:形如
https://你的域名/v1 - API Key:一串你用于鉴权的 key
- Base URL:形如
- Continue 扩展(VS Code / Cursor 都可以安装)
如果你还没部署 147API:官网说明里已经提到有单文件与 Docker 镜像两种交付形态;部署方式、端口、反代、HTTPS 这些细节建议以你自己的实际环境与官网文档为准(见文末参考链接)。
3. VS Code 接入(Continue 方案)
3.1 安装 Continue 扩展
在 VS Code 里按 Cmd+Shift+X(Mac)或 Ctrl+Shift+X(Windows/Linux),搜索并安装 “Continue”。
3.2 打开本地配置文件 config.yaml
Continue 官方给了比较清晰的入口:
- 打开 Continue Chat 侧边栏(VS Code 默认快捷键:
cmd/ctrl + L) - 在输入框上方找到配置下拉(Agent selector)
- 选择 “Local Config”,点旁边的齿轮图标,会打开本地
config.yaml config.yaml默认位置:~/.continue/config.yaml(macOS/Linux),或%USERPROFILE%\\.continue\\config.yaml(Windows)
以上位置与打开方式,来自 Continue 官方文档(见文末参考链接)。
3.3 写一份最小可用配置(OpenAI 兼容接口)
把下面这段放进你的 config.yaml(按你自己的 147API 地址与 key 改掉两处占位符即可):
name: 147API Local
version: 0.0.1
schema: v1
models:
- name: 147API (OpenAI Compatible)
provider: openai
model: <你的模型ID或别名>
apiBase: https://<你的147API域名>/v1
apiKey: <你的147API_API_KEY>
这里用到的字段(provider: openai、apiBase、apiKey)是 Continue 官方文档对 “OpenAI API compatible providers” 的标准写法(见文末参考链接)。
3.4 最快验证:列模型 / 发一句话
Continue 配好后,你最简单的验证方式就是在 Continue 的聊天里问一句“介绍一下你自己,并输出当前模型名”,看看能否正常返回。
如果你更希望用“接口层面”的方式验证(排除 IDE 干扰),可以用 Kotlin 写一个最小请求去打 /v1/models 或 /v1/chat/completions。下面是一个偏“只测连通性”的 /v1/models 示例(OkHttp):
import okhttp3.OkHttpClient
import okhttp3.Request
fun main() {
val baseUrl = System.getenv("OPENAI_API_BASE") ?: error("Missing OPENAI_API_BASE, e.g. https://xxx/v1")
val apiKey = System.getenv("OPENAI_API_KEY") ?: error("Missing OPENAI_API_KEY")
val client = OkHttpClient()
val req = Request.Builder()
.url(baseUrl.trimEnd('/') + "/models")
.addHeader("Authorization", "Bearer $apiKey")
.build()
client.newCall(req).execute().use { resp ->
val body = resp.body?.string().orEmpty()
println("HTTP ${resp.code}")
println(body)
}
}
/v1/models 与鉴权方式(Authorization: Bearer ...)对应 OpenAI API Reference 的 Models 文档(见文末参考链接)。如果你的 147API 做了 OpenAI 兼容转发,这一步通常能快速确认“网关是否可达、key 是否有效”。
4. Cursor 接入(仍然建议用 Continue)
参考文里是“Cursor 里接 Claude Code”,但就 147API 这类 OpenAI 兼容接口而言,我更建议在 Cursor 里也直接装 Continue,这样 VS Code 与 Cursor 可以共用同一份 config.yaml,接入路径完全一致。
做法和 VS Code 一样:
- 在 Cursor 的扩展市场安装 Continue
- 打开 Continue 的 Local Config(
config.yaml) - 填同一份
apiBase与apiKey
好处是:你不需要依赖 Cursor 自身对“自定义 OpenAI Base URL”的支持情况,也不用为两个 IDE 维护两套配置。
5. 常见坑与排查顺序(我建议按这个走)
5.1 401 / 403:先看 Key,再看转发鉴权
- Key 写错、复制多了空格、权限没开,是最常见的
- 有些网关把 key 放在自定义 Header(而不是 Bearer),这会导致 Continue/脚本鉴权失败
Continue 走 OpenAI provider 时,最通用的还是 Bearer 头;如果你用的是“非标准鉴权”,要么在网关层兼容 OpenAI 的鉴权方式,要么换能自定义 header 的客户端。
5.2 404:大概率是 apiBase 少了 /v1 或多了一层路径
Continue 文档里的 apiBase 示例就是 http://localhost:8000/v1,也就是 apiBase + /chat/completions 这种拼法(见参考链接)。所以:
apiBase一般要以/v1结尾- 不要把
/v1/chat/completions写进apiBase
5.3 超时/卡顿:先从“上游渠道”定位,不要先怪 IDE
建议你至少做两件事:
- 直接用 Kotlin/
curl打网关接口,确认“IDE 之外也慢” - 在网关层记录一次请求链路:上游是哪条渠道、耗时多少、是否重试、是否限流
6. 你可以把这套接入写成团队标准
如果你团队不止一个人用:
- 把 Continue 的
config.yaml模板(不含 key)放到内部文档 - 让每个人只填自己的 key(或由管理员发放)
- 统一规定:
apiBase只指向 147API,IDE 不直连任何上游
这类“接入层收口”的收益,会在你第一次需要切上游渠道、做限流、做审计的时候体现出来。