OpenCode 配置文档
本文档详细说明了 OpenCode 的所有配置选项,基于 config.json 的 JSON Schema 定义。
目录
全局配置
$schema
- 类型:
string
- 描述: JSON Schema 引用,用于配置验证
- 默认值:
"https://json-schema.org/draft/2020-12/schema"
logLevel
- 类型:
string
- 描述: 日志级别
- 可选值:
DEBUG - 调试信息
INFO - 一般信息
WARN - 警告信息
ERROR - 错误信息
- 默认值:
INFO
服务器配置
server
服务器配置,用于 opencode serve 和 web 命令。
server.port
- 类型:
integer
- 描述: 监听的端口号
- 约束: 大于 0,小于 9007199254740991
server.hostname
server.mdns
- 类型:
boolean
- 描述: 启用 mDNS 服务发现
server.mdnsDomain
- 类型:
string
- 描述: mDNS 服务的自定义域名(默认为
opencode.local)
server.cors
- 类型:
array of string
- 描述: 允许 CORS 的额外域名列表
命令配置
command
命令配置,详见 https://opencode.ai/docs/commands
每个自定义命令可以包含以下属性:
command.[name].template
command.[name].description
command.[name].agent
command.[name].model
- 类型:
string
- 描述: 使用的模型(格式:
provider/model)
command.[name].subtask
- 类型:
boolean
- 描述: 是否作为子任务执行
技能配置
skills
额外的技能文件夹配置。
skills.paths
- 类型:
array of string
- 描述: 额外的技能文件夹路径
skills.urls
- 类型:
array of string
- 描述: 从 URL 获取技能(例如:
https://example.com/.well-known/skills/)
文件监视器配置
watcher
watcher.ignore
- 类型:
array of string
- 描述: 要忽略的文件或目录模式列表
快照配置
snapshot
- 类型:
boolean
- 描述: 启用或禁用快照跟踪。当为
false 时,文件系统快照不会被记录,撤销或恢复操作将不会撤销/重做文件更改
- 默认值:
true
插件配置
plugin
每个插件可以是:
string - 插件名称
array - [插件名称, 配置对象]
分享配置
share
- 类型:
string
- 描述: 控制分享行为
- 可选值:
manual - 允许通过命令手动分享
auto - 启用自动分享
disabled - 禁用所有分享
autoshare
- 类型:
boolean
- 描述: 已弃用,请使用
share 字段。自动分享新创建的会话
更新配置
autoupdate
- 类型:
boolean | string
- 描述: 自动更新到最新版本
true - 自动更新
false - 禁用
"notify" - 显示更新通知
提供商配置
disabled_providers
- 类型:
array of string
- 描述: 禁用自动加载的提供商
enabled_providers
- 类型:
array of string
- 描述: 当设置时,仅启用这些提供商。所有其他提供商将被忽略
模型配置
model
- 类型:
string
- 描述: 使用的模型,格式为
provider/model,例如 anthropic/claude-2
small_model
- 类型:
string
- 描述: 用于任务(如标题生成)的小模型,格式为
provider/model
代理配置
default_agent
- 类型:
string
- 描述: 未指定代理时使用的默认代理。必须是主要代理。如果未设置或指定的代理无效,则回退到
build
username
- 类型:
string
- 描述: 在对话中显示的自定义用户名(代替系统用户名)
agent
代理配置,详见 https://opencode.ai/docs/agents
每个代理可包含以下属性:
代理通用属性
model
- 类型:
string
- 描述: 代理使用的模型(格式:
provider/model)
variant
- 类型:
string
- 描述: 此代理的默认模型变体(仅在使用代理配置的模型时应用)
temperature
top_p
- 类型:
number
- 描述: 模型 top_p 参数
prompt
disable
description
mode
- 类型:
string
- 描述: 代理模式
- 可选值:
subagent - 子代理
primary - 主要代理
all - 所有模式
hidden
- 类型:
boolean
- 描述: 从 @ 自动完成菜单中隐藏此子代理(默认:
false,仅适用于 mode: subagent)
color
- 类型:
string
- 描述: 十六进制颜色代码(如
#FF5733)或主题颜色(如 primary)
- 主题颜色选项:
primary, secondary, accent, success, warning, error, info
steps
- 类型:
integer
- 描述: 强制纯文本响应前的最大代理迭代次数
- 约束: 大于 0,小于 9007199254740991
maxSteps
- 类型:
integer
- 描述: 已弃用,请使用
steps 字段
options
permission
- 类型:
object | string
- 描述: 代理的权限配置(详见权限配置)
tools
- 类型:
object
- 描述: 已弃用,请使用
permission 字段
MCP 配置
mcp
模型上下文协议(MCP)服务器配置
本地 MCP 服务器配置
mcp.[name].type
- 类型:
string
- 描述: MCP 服务器连接类型
- 值:
"local"
mcp.[name].command
- 类型:
array of string
- 描述: 运行 MCP 服务器的命令和参数(必需)
mcp.[name].environment
- 类型:
object
- 描述: 运行 MCP 服务器时设置的环境变量
mcp.[name].enabled
- 类型:
boolean
- 描述: 启动时启用或禁用 MCP 服务器
mcp.[name].timeout
- 类型:
integer
- 描述: MCP 服务器请求的超时时间(毫秒)。默认为 5000(5秒)
远程 MCP 服务器配置
mcp.[name].type
mcp.[name].url
- 类型:
string
- 描述: 远程 MCP 服务器的 URL(必需)
mcp.[name].enabled
- 类型:
boolean
- 描述: 启动时启用或禁用 MCP 服务器
mcp.[name].headers
mcp.[name].oauth
- 类型:
object | boolean
- 描述: MCP 服务器的 OAuth 认证配置。设置为
false 以禁用 OAuth 自动检测
oauth.clientId
- 类型:
string
- 描述: OAuth 客户端 ID。如果未提供,将尝试动态客户端注册(RFC 7591)
oauth.clientSecret
- 类型:
string
- 描述: OAuth 客户端密钥(如果授权服务器需要)
oauth.scope
- 类型:
string
- 描述: 授权期间请求的 OAuth 范围
mcp.[name].timeout
- 类型:
integer
- 描述: MCP 服务器请求的超时时间(毫秒)。默认为 5000(5秒)
格式化器配置
formatter
代码格式化器配置
可以是:
false - 禁用格式化器
object - 格式化器配置对象
formatter.[name].disabled
formatter.[name].command
- 类型:
array of string
- 描述: 格式化器命令和参数
formatter.[name].environment
- 类型:
object
- 描述: 运行格式化器的环境变量
formatter.[name].extensions
- 类型:
array of string
- 描述: 此格式化器适用的文件扩展名
LSP 配置
lsp
语言服务器协议(LSP)配置
可以是:
false - 禁用 LSP
object - LSP 配置对象
lsp.[name].disabled
- 类型:
boolean
- 描述: 禁用此 LSP 服务器
lsp.[name].command
- 类型:
array of string
- 描述: LSP 服务器命令和参数(必需)
lsp.[name].extensions
- 类型:
array of string
- 描述: 此 LSP 服务器适用的文件扩展名
lsp.[name].env
- 类型:
object
- 描述: LSP 服务器的环境变量
lsp.[name].initialization
- 类型:
object
- 描述: LSP 服务器的初始化选项
指令配置
instructions
- 类型:
array of string
- 描述: 要包含的额外指令文件或模式
布局配置
layout
- 类型:
string
- 描述: 已弃用,始终使用 stretch 布局
- 可选值:
权限配置
permission
权限配置,控制各个工具和操作的权限级别
可以是:
object - 详细权限配置对象
string -应用于所有操作的全局权限级别
权限操作配置
每个权限操作可以配置为:
简单权限(字符串)
- 类型:
string
- 可选值:
ask - 询问用户
allow - 允许操作
deny - 拒绝操作
详细权限(对象)
- 类型:
object
- 描述: 按对象细分的权限配置
支持的操作权限
以下操作支持权限配置:
| 操作 |
描述 |
read |
读取文件 |
edit |
编辑文件 |
glob |
文件模式匹配 |
grep |
内容搜索 |
list |
列出目录 |
bash |
执行 bash 命令 |
task |
启动子代理 |
external_directory |
访问外部目录 |
todowrite |
写入待办事项 |
question |
询问用户 |
webfetch |
获取网页内容 |
websearch - 网页搜索 |
|
codesearch |
代码搜索 |
lsp |
语言服务器协议操作 |
doom_loop |
循环检测 |
skill |
技能加载 |
权限配置示例
{
"permission": {
"read": "allow",
"edit": "ask",
"bash": {
"npm": "allow",
"rm": "deny"
}
}
}
压缩配置
compaction
上下文压缩配置
compaction.auto
- 类型:
boolean
- 描述: 当上下文已满时启用自动压缩(默认:
true)
compaction.prune
- 类型:
boolean
- 描述: 启用旧工具输出的修剪(默认:
true)
compaction.reserved
- 类型:
integer
- 描述: 压缩的令牌缓冲区。保留足够的窗口以避免压缩期间的溢出
- 约束: 大于等于 0,小于 9007199254740991
实验性功能
experimental
实验性功能配置
experimental.disable_paste_summary
experimental.batch_tool
experimental.openTelemetry
- 类型:
boolean
- 描述: 为 AI SDK 调用启用 OpenTelemetry 跨度(使用
experimental_telemetry 标志)
experimental.primary_tools
- 类型:
array of string
- 描述: 应仅对主要代理可用的工具
experimental.continue_loop_on_deny
- 类型:
boolean
- 描述: 当工具调用被拒绝时继续代理循环
experimental.mcp_timeout
- 类型:
integer
- 描述: 模型上下文协议(MCP)请求的超时时间(毫秒)
- 约束: 大于 0,小于 9007199254740991
配置示例
完整的配置示例:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"logLevel": "INFO",
"server": {
"port": 8080,
"hostname": "0.0.0.0",
"mdns": true,
"mdnsDomain": "opencode.local",
"cors": ["http://localhost:3000"]
},
"model": "anthropic/claude-3-opus-20240229",
"small_model": "anthropic/claude-3-haiku-20240307",
"default_agent": "build",
"share": "manual",
"autoupdate": "notify",
"snapshot": true,
"watcher": {
"ignore": ["node_modules", ".git", "dist"]
},
"skills": {
"paths": ["/path/to/custom/skills"],
"urls": ["https://example.com/.well-known/skills/"]
},
"mcp": {
"filesystem": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-filesystem", "/path/to/files"]
}
},
"permission": {
"read": "allow",
"edit": "ask",
"bash": {
"git": "allow",
"npm": "ask"
}
},
"compaction": {
"auto": true,
"prune": true,
"reserved": 1000
}
}
配置文件位置
配置文件的默认位置通常为:
- 项目根目录:
./kilo.json 或 ./config.json
- 用户配置目录:
~/.config/kilo/config.json
配置文件支持注释和尾随逗号。
相关文档
OpenCode 配置文档
本文档详细说明了 OpenCode 的所有配置选项,基于
config.json的 JSON Schema 定义。目录
全局配置
$schemastring"https://json-schema.org/draft/2020-12/schema"logLevelstringDEBUG- 调试信息INFO- 一般信息WARN- 警告信息ERROR- 错误信息INFO服务器配置
server服务器配置,用于
opencode serve和web命令。server.portintegerserver.hostnamestringserver.mdnsbooleanserver.mdnsDomainstringopencode.local)server.corsarray of string命令配置
command命令配置,详见 https://opencode.ai/docs/commands
每个自定义命令可以包含以下属性:
command.[name].templatestringcommand.[name].descriptionstringcommand.[name].agentstringcommand.[name].modelstringprovider/model)command.[name].subtaskboolean技能配置
skills额外的技能文件夹配置。
skills.pathsarray of stringskills.urlsarray of stringhttps://example.com/.well-known/skills/)文件监视器配置
watcherwatcher.ignorearray of string快照配置
snapshotbooleanfalse时,文件系统快照不会被记录,撤销或恢复操作将不会撤销/重做文件更改true插件配置
pluginarray每个插件可以是:
string- 插件名称array-[插件名称, 配置对象]分享配置
sharestringmanual- 允许通过命令手动分享auto- 启用自动分享disabled- 禁用所有分享autosharebooleanshare字段。自动分享新创建的会话更新配置
autoupdateboolean | stringtrue- 自动更新false- 禁用"notify"- 显示更新通知提供商配置
disabled_providersarray of stringenabled_providersarray of string模型配置
modelstringprovider/model,例如anthropic/claude-2small_modelstringprovider/model代理配置
default_agentstringbuildusernamestringagent代理配置,详见 https://opencode.ai/docs/agents
每个代理可包含以下属性:
代理通用属性
modelstringprovider/model)variantstringtemperaturenumbertop_pnumberpromptstringdisablebooleandescriptionstringmodestringsubagent- 子代理primary- 主要代理all- 所有模式hiddenbooleanfalse,仅适用于mode: subagent)colorstring#FF5733)或主题颜色(如primary)primary,secondary,accent,success,warning,error,infostepsintegermaxStepsintegersteps字段optionsobjectpermissionobject | stringtoolsobjectpermission字段MCP 配置
mcp模型上下文协议(MCP)服务器配置
本地 MCP 服务器配置
mcp.[name].typestring"local"mcp.[name].commandarray of stringmcp.[name].environmentobjectmcp.[name].enabledbooleanmcp.[name].timeoutinteger远程 MCP 服务器配置
mcp.[name].typestring"remote"mcp.[name].urlstringmcp.[name].enabledbooleanmcp.[name].headersobjectmcp.[name].oauthobject | booleanfalse以禁用 OAuth 自动检测oauth.clientIdstringoauth.clientSecretstringoauth.scopestringmcp.[name].timeoutinteger格式化器配置
formatter代码格式化器配置
可以是:
false- 禁用格式化器object- 格式化器配置对象formatter.[name].disabledbooleanformatter.[name].commandarray of stringformatter.[name].environmentobjectformatter.[name].extensionsarray of stringLSP 配置
lsp语言服务器协议(LSP)配置
可以是:
false- 禁用 LSPobject- LSP 配置对象lsp.[name].disabledbooleanlsp.[name].commandarray of stringlsp.[name].extensionsarray of stringlsp.[name].envobjectlsp.[name].initializationobject指令配置
instructionsarray of string布局配置
layoutstringautostretch权限配置
permission权限配置,控制各个工具和操作的权限级别
可以是:
object- 详细权限配置对象string-应用于所有操作的全局权限级别权限操作配置
每个权限操作可以配置为:
简单权限(字符串)
stringask- 询问用户allow- 允许操作deny- 拒绝操作详细权限(对象)
object支持的操作权限
以下操作支持权限配置:
readeditglobgreplistbashtaskexternal_directorytodowritequestionwebfetchwebsearch- 网页搜索codesearchlspdoom_loopskill权限配置示例
{ "permission": { "read": "allow", "edit": "ask", "bash": { "npm": "allow", "rm": "deny" } } }压缩配置
compaction上下文压缩配置
compaction.autobooleantrue)compaction.prunebooleantrue)compaction.reservedinteger实验性功能
experimental实验性功能配置
experimental.disable_paste_summarybooleanexperimental.batch_toolbooleanexperimental.openTelemetrybooleanexperimental_telemetry标志)experimental.primary_toolsarray of stringexperimental.continue_loop_on_denybooleanexperimental.mcp_timeoutinteger配置示例
完整的配置示例:
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "logLevel": "INFO", "server": { "port": 8080, "hostname": "0.0.0.0", "mdns": true, "mdnsDomain": "opencode.local", "cors": ["http://localhost:3000"] }, "model": "anthropic/claude-3-opus-20240229", "small_model": "anthropic/claude-3-haiku-20240307", "default_agent": "build", "share": "manual", "autoupdate": "notify", "snapshot": true, "watcher": { "ignore": ["node_modules", ".git", "dist"] }, "skills": { "paths": ["/path/to/custom/skills"], "urls": ["https://example.com/.well-known/skills/"] }, "mcp": { "filesystem": { "type": "local", "command": ["npx", "-y", "@modelcontextprotocol/server-filesystem", "/path/to/files"] } }, "permission": { "read": "allow", "edit": "ask", "bash": { "git": "allow", "npm": "ask" } }, "compaction": { "auto": true, "prune": true, "reserved": 1000 } }配置文件位置
配置文件的默认位置通常为:
./kilo.json或./config.json~/.config/kilo/config.json配置文件支持注释和尾随逗号。
相关文档