如何配置 OpenCode 和并发
OpenCode 的配置文件使用 JSON 格式,通过 $schema 字段引用 JSON Schema 文件来定义结构。你的配置文件示例是基础设置,但并发配置通常不在这个顶层文件中直接定义,而是通过 provider 的 options 或模型级别设置。以下是详细解答:
1. OpenCode 配置文件的基本结构
你的配置文件示例定义了以下部分:
可配置项:所有可配置属性由 $schema 引用的 JSON Schema 定义。你的配置中,可配项包括 provider 下的字段(如 options 和 models),但官方文档确实缺乏细节。你需要从 JSON Schema 文件中提取所有选项。
2. 如何配置并发
并发问题(如机器宕机)通常与资源限制相关。在 OpenCode 中,并发配置可能位于 provider.options 或模型级别的 options 中。常见并发相关属性包括:
maxConcurrency: 控制同时处理的最大请求数。timeout: 设置请求超时时间,防止长时间运行的任务堆积。rateLimit: 定义每秒最大请求数(RPS)。
在你的配置文件中添加并发设置:
修改 provider.options 部分,添加并发属性。例如:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"local": {
"npm": "@ai-sdk/openai-compatible",
"name": "myModels",
"options": {
"baseURL": "xxxx",
"apiKey": "xxxx",
"maxConcurrency": 5, // 添加并发控制,例如限制为 5 个并发请求
"timeout": 30000 // 超时时间(毫秒),例如 30 秒
},
"models": {
"xxx": {
"name": "xxx",
"options": {
"maxConcurrency": 2 // 模型级别的并发限制(可选)
}
}
}
}
}
}
- 为什么这样配? 并发设置通常在 SDK 的
options 中实现(如 @ai-sdk/openai-compatible 包)。如果未指定,SDK 可能使用默认值(如无限制),导致资源耗尽和宕机。 - 如何确认这些属性? 你需要查看 JSON Schema 文件(
https://opencode.ai/config.json),它定义了所有合法属性。例如,在 Schema 中查找 maxConcurrency 或类似字段。
如果配置无效?
- 官方文档不足时,检查 SDK 源码:
@ai-sdk/openai-compatible 的 npm 页面或 GitHub 仓库(如 ai-sdk)可能有详细说明。 - 监控工具:使用日志或 APM 工具(如 Prometheus)监控请求量,调整并发值。
3. $schema JSON 的可配置项和含义
$schema 引用的 JSON Schema 文件定义了所有可配置属性。访问 https://opencode.ai/config.json 查看完整 Schema。以下是常见可配置项及其含义(基于典型 AI SDK Schema):
顶级属性:
provider.options 常见属性:
apiKey: 字符串,API 认证密钥。baseURL: 字符串,API 基础地址。maxConcurrency: 整数,最大并发请求数(防止资源过载)。timeout: 整数,请求超时时间(毫秒)。rateLimit: 对象,定义速率限制(如 { "rps": 10 } 每秒请求数)。
models 属性:
- 每个模型可以有
name(字符串,模型标识符)和 options(对象,模型特定设置,如 temperature 或 maxTokens)。
其他可能属性:
logging: 布尔值,启用/禁用日志。retry: 对象,定义重试策略(如 maxRetries)。
含义总结:JSON Schema 描述了配置文件的“蓝图”,包括字段类型(如字符串、整数)、是否必填、默认值和描述。例如:
"maxConcurrency": { "type": "integer", "description": "Maximum concurrent requests allowed" }
官方文档缺失时,Schema 是权威来源。
4. 如何将 $schema JSON 转化为可读性较高的文档
JSON Schema 文件(https://opencode.ai/config.json)是机器可读的,但可读性差。使用以下工具生成易读文档:
在线工具:
命令行工具:
使用 json-schema-to-markdown npm 包:
npx json-schema-to-markdown https://opencode.ai/config.json > config-docs.md
这会输出 Markdown 文件,包含所有属性、类型和描述。
- 手动方法:如果 Schema 有
description 字段,用文本编辑器搜索并整理。例如,在 VSCode 中打开文件,查找 "properties" 部分。
为什么需要这个? 转化后文档会列出所有属性(如并发相关字段),便于你查找配置项。思否(StackOverflow)用户常用这些工具处理 Schema。
获取更多帮助
- 官方资源:尽管文档不足,检查 OpenCode 的 GitHub 仓库或社区论坛(如 Discord),可能有示例配置。
- 调试并发:如果添加
maxConcurrency 后问题依旧,检查服务器资源(CPU/内存),或升级硬件。 - 备选方案:如果找不到 Schema 属性,直接阅读
@ai-sdk/openai-compatible 的源码(查找 options 处理逻辑)。
最终建议:先下载 JSON Schema 文件,用工具转化,然后搜索 concurrency 或类似字段。如果问题持续,提供更多错误日志,我可以进一步分析。
provider是配置模型用的,配置后可以使用 命令
/models来切换模型;具体配置项看:https://opencode.ai/docs/zh-cn/config
opencode支持的主流模型在
https://models.dev可以查看, 主要会用到ProviderId和ModelId两列;并发问题有可能你装的
skills太多,先熟悉它的命令, 再装个oh-my-opencode插件