词元广场TOKPUB.COM - 欢迎您,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!
💡 一句话总结:用 7 个开关把外网请求关掉,让 OpenCode 在内网环境能跑起来。

@opencode-ai/plugin)OPENCODE_DISABLE_MODELS_FETCH=true,但还是卡@opencode-ai/plugin SDK 安装卡住的典型现象)https://models.dev/api.jsonrg --versionrg 是否已安装,避免使用 AI 的 grep 功能时失败。| 请求 | 用途 | 禁用方式 |
|---|---|---|
models.dev/api.json | 获取模型列表 | 方案 A(完全离线):OPENCODE_DISABLE_MODELS_FETCH=true + OPENCODE_MODELS_PATH=...;方案 B(内网镜像):只设置 OPENCODE_MODELS_URL=https://...(不要设置 OPENCODE_DISABLE_MODELS_FETCH=true) |
| npm registry | 安装内置插件 | OPENCODE_DISABLE_DEFAULT_PLUGINS=true |
| GitHub releases | 检查更新 | OPENCODE_DISABLE_AUTOUPDATE=true 或 autoupdate: false |
| LSP 服务器下载 | 语言服务器 | OPENCODE_DISABLE_LSP_DOWNLOAD=true |
| 远程 skill 加载 | 加载外部 skill | OPENCODE_DISABLE_EXTERNAL_SKILLS=true |
| 项目配置加载 | 扫描 .opencode/ | OPENCODE_DISABLE_PROJECT_CONFIG=true |
| 共享功能 | 分享会话 | OPENCODE_DISABLE_SHARE=true |
models.json,设置 OPENCODE_MODELS_PATH,并打开 OPENCODE_DISABLE_MODELS_FETCH=truehttps://<host>/api.json,设置 OPENCODE_MODELS_URL=https://<host>,不要设置 OPENCODE_DISABLE_MODELS_FETCH=trueOPENCODE_MODELS_PATH 和 OPENCODE_MODELS_URL,会优先读取 PATH 指向的本地文件。opencode.json 中没有以下配置(否则仍会触发外网请求):{
"skills": {
"urls": ["https://..."] // 删除远程 skill URL
},
"instructions": [
"https://..." // 删除远程 instruction
],
"auth": {
"example.com": {
"type": "wellknown" // 删除 wellknown 认证
}
}
}.well-known/opencode 是远程配置加载机制,即使设置了环境变量,如果配置中使用了 wellknown 认证,仍会发起外网请求。models.json 文件(约 500KB)。models.json 拷贝到内网机器的固定位置:$env:OPENCODE_DISABLE_MODELS_FETCH = "true"
$env:OPENCODE_MODELS_PATH = "$env:USERPROFILE\.cache\opencode\models.json"
$env:OPENCODE_DISABLE_DEFAULT_PLUGINS = "true"
$env:OPENCODE_DISABLE_AUTOUPDATE = "true"
$env:OPENCODE_DISABLE_LSP_DOWNLOAD = "true"
$env:OPENCODE_DISABLE_EXTERNAL_SKILLS = "true"
$env:OPENCODE_DISABLE_PROJECT_CONFIG = "true"
$env:OPENCODE_DISABLE_SHARE = "true"OPENCODE_DISABLE_DEFAULT_PLUGINS=true,OpenCode 仍会尝试安装 @opencode-ai/plugin SDK,这个安装不受任何环境变量控制。src/config/config.ts:237-257,会执行 bun add 和 bun install,内网环境会卡住。~/.bunfig.toml 或 .npmrc)~/.config/opencode/(以及项目的 .opencode/)拷贝到内网机器OPENCODE_DISABLE_PROJECT_CONFIG=true~/.config/opencode/opencode.json:{
"$schema": "https://opencode.ai/config.json",
// 禁用自动更新(双保险,环境变量已设置)
"autoupdate": false,
// 只启用你的内部 provider
"enabled_providers": ["corp-gateway"],
// 配置内部 AI 网关
"provider": {
"corp-gateway": {
"name": "公司 AI 网关",
"env": ["CORP_AI_TOKEN"],
"api": "https://ai-gateway.company.internal/v1",
"npm": "@ai-sdk/openai-compatible",
"models": {
"qwen2.5-72b": {
"name": "Qwen 2.5 72B",
"tool_call": true,
"reasoning": true,
"temperature": true,
"limit": { "context": 128000, "output": 8192 }
},
"glm-4": {
"name": "GLM-4",
"tool_call": true,
"temperature": true,
"limit": { "context": 128000, "output": 4096 }
}
}
}
},
// 默认使用内部模型
"model": "corp-gateway/qwen2.5-72b"
}api 改成 http://localhost:11434/v1,参考 1.4g Ollama 配置。2)--log-level DEBUG 看详细日志:全部通过才能继续;任一项失败,回到对应步骤重来
https://models.dev/api.json~/.cache/opencode/models.json 存在,且 OPENCODE_MODELS_PATH 指向它(或你使用内网镜像 OPENCODE_MODELS_URL)env | grep OPENCODE 检查)~/.config/opencode/node_modules(如果当前项目有 .opencode/,也创建 ./.opencode/node_modules)opencode.json 配置了内部 provideropencode run 能正常返回结果,没有网络错误rg --version 能输出版本号)| 现象 | 可能原因 | 解决 |
|---|---|---|
| 启动卡住,没有更多日志 | 依赖安装在内网环境挂起(@opencode-ai/plugin) | 先看“依赖安装卡住(@opencode-ai/plugin)” |
| 提示 "model not found" | models.json 路径或内容不对 | 检查 OPENCODE_MODELS_PATH 是否指向正确文件 |
| 提示 "provider not found" | enabled_providers 和 provider id 不一致 | 检查 enabled_providers、provider 的 key、以及 model 前缀 |
| 调用模型返回 401/403 | Token 未注入或过期 | 检查 CORP_AI_TOKEN 是否正确、是否已导出 |
| grep 工具失败 | ripgrep 未安装且无法下载 | 手动安装 rg(见下方“grep 工具特殊情况”) |
src/config/config.ts:157-159 和 src/config/config.ts:237-257)。它会在目录里执行:node_modules/ 不存在,OpenCode 会等待这次安装完成再继续;内网无法访问 npm registry 时,就会表现为“卡住”。service=bun 的日志里出现 cmd=[..., "add", "@opencode-ai/plugin@..."],基本可以确定是依赖安装挂起。node_modules/:await installDependencies(...)。installDependencies(dir) 依然会被触发(只是不会在启动时等待它完成)。如果你希望它能真正完成安装,还是需要内网 npm 镜像或预装依赖。~/.bunfig.toml:[install]
registry = "http://your-internal-npm-registry/"~/.config/opencode/ 和项目 .opencode/ 目录完成一次依赖安装,然后把这两个目录拷贝到内网机器。.opencode/(只用全局配置),可以:rg 二进制文件。rg)。如果系统中没有 rg,OpenCode 会尝试从 GitHub 下载(内网通常会失败)。service=models.dev:在拉模型列表service=bun:在执行 bun add/install(安装依赖或插件)| 环境变量 | 作用 | 值 |
|---|---|---|
OPENCODE_DISABLE_MODELS_FETCH | (完全离线模式)禁止拉取模型列表 | true |
OPENCODE_MODELS_PATH | (完全离线模式)本地模型列表文件路径 | 文件绝对路径 |
OPENCODE_MODELS_URL | (内网镜像模式)把 models.dev 指到内网地址(需要提供 /api.json) | https://models-mirror.company.internal |
OPENCODE_DISABLE_DEFAULT_PLUGINS | 禁止安装内置插件 | true |
OPENCODE_DISABLE_AUTOUPDATE | 禁止自动更新检查 | true |
OPENCODE_DISABLE_LSP_DOWNLOAD | 禁止下载 LSP 服务器 | true |
OPENCODE_DISABLE_EXTERNAL_SKILLS | 禁止加载远程 skill | true |
OPENCODE_DISABLE_PROJECT_CONFIG | 禁止扫描项目级 .opencode/ 配置 | true |
OPENCODE_DISABLE_SHARE | 禁止共享功能 | true |
OPENCODE_DISABLE_CLAUDE_CODE_SKILLS | 禁止 Claude Code 兼容技能 | true |
OPENCODE_MODELS_PATH 和 OPENCODE_MODELS_URL,会优先读取 OPENCODE_MODELS_PATH 指向的本地文件OPENCODE_DISABLE_MODELS_FETCH=true,否则不会发起拉取| 方案 | 优点 | 缺点 |
|---|---|---|
OPENCODE_MODELS_PATH | 完全离线、控制版本 | 需要手动更新 models.json |
OPENCODE_MODELS_URL | 自动更新、多机同步 | 依赖内部镜像服务器 |
OPENCODE_DISABLE_MODELS_FETCH + OPENCODE_MODELS_PATH)或内网镜像(OPENCODE_MODELS_URL),再加上禁用内置插件/自动更新/LSP 下载/远程 skill/项目配置/共享功能models.json,放到内网机器(或用 OPENCODE_MODELS_URL 指向内部 mirrors)enabled_providers 只启用内部网关node_modules 目录或其他方案解决opencode.json 中没有 skills.urls、instructions 中的 URL、以及 auth 中的 wellknown 认证--print-logs --log-level DEBUG 定位卡住位置OPENCODE_MODELS_URL 替代 OPENCODE_MODELS_PATH:models.json。如果你想更进一步,把认证也集中管理(让团队不用每人配置 Token),可以学习 5.11a 企业认证集成。 那里介绍了 /.well-known/opencode机制,可以实现"一条命令登录 + 自动下发组织配置"。
更新时间:2026-02-05
| 功能 | 文件路径 | 行号 |
|---|---|---|
环境变量定义(包含所有 OPENCODE_* 标志) | src/flag/flag.ts | 12-50 |
模型列表加载逻辑(OPENCODE_DISABLE_MODELS_FETCH、OPENCODE_MODELS_PATH、OPENCODE_MODELS_URL) | src/provider/models.ts | 83-99 |
配置目录扫描与依赖安装等待(node_modules 检查) | src/config/config.ts | 157-160 |
依赖安装命令(bun add + bun install) | src/config/config.ts | 236-257 |
插件加载(内置插件列表、OPENCODE_DISABLE_DEFAULT_PLUGINS 检查) | src/plugin/index.ts | 18-49 |
| Bun 包安装逻辑(可能导致启动卡住) | src/bun/index.ts | 64-133 |
| ripgrep 下载逻辑(内网常失败) | src/file/ripgrep.ts | 125-199 |
自动更新检查(OPENCODE_DISABLE_AUTOUPDATE) | src/cli/upgrade.ts | 6-25 |
LSP 服务器下载检查(OPENCODE_DISABLE_LSP_DOWNLOAD) | src/lsp/server.ts | 135, 177, 372... |
BUILTIN = ["opencode-anthropic-auth@0.0.13", "@gitlab/opencode-gitlab-auth@1.3.2"]:内置插件列表Flag.OPENCODE_DISABLE_MODELS_FETCH:禁用模型列表拉取Flag.OPENCODE_MODELS_PATH:本地模型列表文件路径Flag.OPENCODE_MODELS_URL:内部 models.dev 服务器 URLFlag.OPENCODE_DISABLE_DEFAULT_PLUGINS:禁用内置插件安装OPENCODE_MODELS_PATH:如果设置,优先级高于 OPENCODE_MODELS_URLOPENCODE_MODELS_URL:指向内部 models.dev 服务器https://models.dev:默认地址(当上述两者都未设置且 OPENCODE_DISABLE_MODELS_FETCH=false 时)