Skip to content

配置参考

xopc 所有配置集中在 ~/.xopc/xopc.json 文件中。

如果你是在完成具体任务,请优先看 how-to:

任务指南
配置模型如何配置第一个模型
接入 Telegram如何接入 Telegram
从其它设备访问 gateway如何安全暴露 gateway
添加另一个 agent如何创建第二个 agent
排查损坏的设置如何诊断损坏的设置

完整字段参考见 配置参考

本页其余内容是 xopc.json 结构参考。

快速开始

运行交互式设置向导:

bash
xopc onboard

或手动创建:

json
{
  "agents": {
    "default": "main",
    "defaultPreset": "default",
    "capabilityPresets": {
      "default": {
        "id": "default",
        "name": "全局默认能力",
        "models": {
          "defaultRole": "deep",
          "roles": {
            "deep": { "model": "anthropic/claude-sonnet-4-5" }
          }
        }
      }
    },
    "list": [
      {
        "id": "main",
        "identity": {
          "name": "Main",
          "role": "General assistant",
          "language": "zh-CN",
          "tone": "direct"
        },
        "responsibilities": {
          "primary": ["帮助用户完成任务"]
        },
        "workspace": { "root": "~/.xopc/workspace/main" },
        "tools": { "builtin": {} },
        "skills": { "mode": "all" },
        "memory": {
          "mode": "confirmWrite",
          "sources": ["session", "curated"],
          "writePolicy": { "curated": "confirm" },
          "understanding": { "enabled": true, "adaptiveCadence": true, "reviewIntervalTurns": 10 }
        },
        "workflows": {},
        "boundaries": { "requiresConfirmation": [], "forbidden": [], "escalation": [] }
      }
    ]
  },
  "providers": {
    "anthropic": "${ANTHROPIC_API_KEY}"
  }
}

完整配置示例

json
{
  "agents": {
    "default": "main",
    "list": [
      {
        "id": "main",
        "identity": { "name": "Main", "role": "General assistant" },
        "responsibilities": { "primary": ["Help the user complete tasks"] },
        "workspace": { "root": "~/.xopc/workspace/main" },
        "models": {
          "defaultRole": "deep",
          "roles": {
            "deep": { "model": "deepseek/deepseek-v4-flash" }
          }
        },
        "tools": { "builtin": {} },
        "skills": { "mode": "all" },
        "memory": { "mode": "confirmWrite", "sources": ["session"] },
        "workflows": {},
        "boundaries": { "requiresConfirmation": [], "forbidden": [], "escalation": [] }
      }
    ]
  },
  "providers": {
    "deepseek": "${DEEPSEEK_API_KEY}"
  },
  "channels": {
    "telegram": {
      "enabled": true,
      "defaults": {
        "dmPolicy": "pairing",
        "groupPolicy": "open",
        "streaming": { "mode": "partial" }
      },
      "accounts": {
        "personal": {
          "name": "Personal Bot",
          "botToken": "BOT_TOKEN",
          "dmPolicy": "allowlist",
          "groupPolicy": "open",
          "allowFrom": [123456789],
          "streaming": { "mode": "partial" }
        }
      }
    }
  },
  "gateway": {
    "host": "0.0.0.0",
    "port": 18790
  },
  "tools": {
    "web": {
      "search": {
        "maxResults": 5,
        "providers": [{ "type": "brave", "apiKey": "BSA_your_key_here" }]
      }
    },
    "media": {
      "audio": {
        "enabled": true,
        "provider": "alibaba",
        "alibaba": {
          "apiKey": "${DASHSCOPE_API_KEY}",
          "model": "paraformer-v2"
        }
      }
    }
  },
  "messages": {
    "tts": {
      "enabled": true,
      "provider": "openai",
      "trigger": "inbound",
      "openai": {
        "apiKey": "${OPENAI_API_KEY}",
        "model": "tts-1",
        "voice": "alloy"
      }
    }
  },
  "heartbeat": {
    "enabled": true,
    "intervalMs": 300000
  }
}

配置章节

agents

智能体配置是 manifest-first。可运行条目位于 agents.list;每个条目都是一个 Agent Capability Manifest。路由与 session key 的第一段即为 agent id。可复用的 capabilityPresetsdefaultPreset 是可选策略补丁机制。当前配置模型里没有 agents.defaults 合并层。

顶层 agents 字段

字段类型说明
defaultstring可选。未在会话键/API 中指定 agent 时使用的默认 id。未设置时:取 list 中第一个 enabled 的 id,否则 main
defaultPresetstring可选。每个 agent 自身 extends 之前应用的全局 preset id。省略时默认 default。仅在需要共享基础能力时使用。
capabilityPresetsobject可选。按 preset id 索引的可复用策略补丁。可包含模型角色、工具、技能、记忆、工作流、边界和运行时限制等。
listarray具体的 Agent Capability Manifest。每条可以独立完整配置,包括自己的 models

agents.list 条目

每条至少包含 ididentityresponsibilitiesworkspacetoolsskillsworkflowsboundaries。当 agent 自己拥有模型角色时,直接在该条目上配置 models。长文本 profile 仍可放在 agents/<id>/profile/,但结构化 manifest 是运行时策略的来源。用户理解与记忆只在顶层 userContext 配置一次。

字段类型说明
idstring智能体 id(agentId,也是 session key 的第一段)。
extendsstring[]可选。引用 agents.capabilityPresets 中的 preset id,后面的 preset 和 manifest 本身会覆盖前面的字段。
enabledboolean默认 true。为 false 时不参与路由和运行时解析。
identityobject结构化身份:namerole,以及可选的 descriptionlanguagetoneavatar
responsibilitiesobjectprimary,以及可选的 secondaryoutOfScope
workspace.rootstring该 agent 的 Markdown 工作区根路径(支持 ~)。工具 cwd、按日记忆和用户文件在此。
models.defaultRolestring工作流或会话未指定模型角色时使用的默认角色 id。
models.rolesobject命名模型角色。每个角色形如 { "model": "provider/model", "description": "..." }
tools.builtinobject内置工具策略:{ "mode": "allow" | "confirm" | "deny", "scope"?: "readonly" | "workspace" | "unrestricted" }
tools.mcpobject可选 MCP server/tool 策略。
skillsobject技能可见性策略:allallowlistdenylistoff
memoryobject记忆模式、来源、写入策略、保留策略和隐私设置。
workflowsobject可选的默认/允许/建议工作流策略。
boundariesobject需要确认、禁止和升级处理的边界规则。
runtimeobject可选运行时限制,如 maxTurnstimeoutMsmaxToolFailuresPerTurn
promptobject可选结构化 prompt 自定义。

请使用 xopc agents add / xopc agents delete 管理 agents.list 和目录;不存在独立于配置文件之外的 agent 注册表。

agents.list[].models

json
{
  "models": {
    "defaultRole": "deep",
    "roles": {
      "small": {
        "model": "openai/gpt-4o-mini",
        "description": "快速低成本模型"
      },
      "large": {
        "model": "anthropic/claude-sonnet-4-5"
      }
    }
  }
}

模型 ID 格式:provider/model-id(如 anthropic/claude-opus-4-5)。

模型角色是 manifest 局部配置,也可以由 capabilityPresets 提供。工作流可引用这些角色名,而不是硬编码具体 provider/model


providers

配置 LLM 服务商 API 密钥。使用环境变量引用:

json
{
  "providers": {
    "openai": "${OPENAI_API_KEY}",
    "anthropic": "${ANTHROPIC_API_KEY}",
    "deepseek": "sk-...",
    "groq": "${GROQ_API_KEY}"
  }
}

内置服务商 id@earendil-works/pi-aiKnownProvider 一致;环境变量名以仓库 src/providers/env-keys.tsPROVIDER_ENV_MAP 为准,下表与之同步。其它厂商(如仅 DashScope HTTP 能力)一般在 models.json 中配置。

服务商 id环境变量(按 PROVIDER_ENV_MAP 顺序检测)
amazon-bedrockAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGION 等(见 pi-ai / AWS SDK)
anthropicANTHROPIC_OAUTH_TOKENANTHROPIC_API_KEY
azure-openai-responsesAZURE_OPENAI_API_KEYAZURE_OPENAI_BASE_URL
cloudflare-ai-gatewayCLOUDFLARE_API_KEY(模型 baseUrl 可能还需账号/网关 id,见 pi-ai)
cloudflare-workers-aiCLOUDFLARE_API_KEY
cerebrasCEREBRAS_API_KEY
dashscopeDASHSCOPE_API_KEY(文生图/STT/TTS;非 pi-ai LLM KnownProvider
deepseekDEEPSEEK_API_KEY
fireworksFIREWORKS_API_KEY
github-copilotCOPILOT_GITHUB_TOKENGH_TOKENGITHUB_TOKENGITHUB_COPILOT_TOKEN
googleGEMINI_API_KEYGOOGLE_API_KEY
google-antigravityANTIGRAVITY_API_KEY
google-gemini-cliGEMINI_CLI_TOKENGOOGLE_TOKEN
google-vertexGOOGLE_CLOUD_API_KEYGOOGLE_CLOUD_PROJECTGOOGLE_CLOUD_LOCATION
groqGROQ_API_KEY
huggingfaceHF_TOKENHUGGINGFACE_TOKEN
kimi-codingKIMI_API_KEYMOONSHOT_API_KEY
minimaxMINIMAX_API_KEY
minimax-cnMINIMAX_CN_API_KEYMINIMAX_API_KEY
mistralMISTRAL_API_KEY
moonshotaiMOONSHOT_API_KEY
moonshotai-cnMOONSHOT_API_KEY
openaiOPENAI_API_KEY
openai-codex(无静态 env 映射—使用 OAuth / xopc auth login openai-codex
opencodeOPENCODE_API_KEY
opencode-goOPENCODE_API_KEY
openrouterOPENROUTER_API_KEY
togetherTOGETHER_API_KEY
vercel-ai-gatewayAI_GATEWAY_API_KEYVERCEL_AI_GATEWAY_API_KEY
xaiXAI_API_KEY
xiaomiXIAOMI_API_KEY
xiaomi-token-plan-cnXIAOMI_TOKEN_PLAN_CN_API_KEY
xiaomi-token-plan-amsXIAOMI_TOKEN_PLAN_AMS_API_KEY
xiaomi-token-plan-sgpXIAOMI_TOKEN_PLAN_SGP_API_KEY
zaiZAI_API_KEY

小米四条线的区别见 模型文档 — 内置 LLM

注意: 环境变量优先于配置文件中的值。

查看 模型文档 了解自定义服务商与 models.json


bindings

可选的规则数组,用于将入站流量分配到指定 agentId。按 priority 从高到低匹配;每条 match 中的 channel 须为精确通道 id(如 telegram),peerId 可使用 * 通配。若无匹配,默认 agent id 为:已设置的 agents.default → 否则 agents.list 中第一个 enabled 的 id → 否则 main。详见 Session 路由系统


session

字段类型默认值说明
dmScopestringmainDM 会话合并/拆分策略:mainper-peerper-channel-peerper-account-channel-peer
identityLinksobject-规范 id → ["channel:peerId", …] 别名,用于跨通道身份
storageobject-可选会话存储调优(pruneAfterMsmaxEntries

更多说明与示例见 Session 路由系统


channels

通信通道配置。

channels 下的键取决于你启用的通道类型。内置 Telegram微信 的字段说明见 通道配置;其它键可能来自扩展,以扩展文档为准。

channels.telegram

多账户 Telegram 配置:

json
{
  "channels": {
    "telegram": {
      "enabled": true,
      "defaults": {
        "dmPolicy": "pairing",
        "groupPolicy": "open",
        "streaming": { "mode": "partial" }
      },
      "accounts": {
        "personal": {
          "name": "Personal Bot",
          "botToken": "BOT_TOKEN",
          "dmPolicy": "allowlist",
          "groupPolicy": "open",
          "allowFrom": [123456789],
          "streaming": { "mode": "partial" }
        }
      }
    }
  }
}
字段类型默认值说明
enabledbooleanfalse启用 Telegram
accountsobject-多账户配置
accounts.<id>.namestring-显示名称
accounts.<id>.botTokenstring-Bot token
defaults.dmPolicystringpairing账号默认私聊策略
defaults.groupPolicystringopen账号默认群组策略
defaults.streaming.modestringpartial账号默认流式模式
accounts.<id>.dmPolicystringinherits defaults.dmPolicyDM 策略
accounts.<id>.groupPolicystringinherits defaults.groupPolicy群组策略
accounts.<id>.allowFromarray[]允许的用户 ID
accounts.<id>.streaming.modestringinherits defaults.streaming.mode流式模式

DM 策略pairing | allowlist | open | disabled):

  • pairing(推荐):未在允许列表中的用户 不会 进入智能体管线。Telegram 的允许来源是 channels.telegram.accounts.<账号>.allowFrom,并会合并执行 xopc channels pairing approve 后写入的 Telegram allowFrom 凭证文件(与配置在运行时合并)。用户首次私聊会收到 配对码。详见 消息通道 — DM 私聊配对CLI — channels
  • allowlist:同样合并配置与凭证文件中的 id,但 不会 发送配对码;未命中则静默丢弃。
  • open:任意用户可私聊(公开机器人上慎用)。
  • disabled:不接受私聊。

群组策略: open | allowlist | disabled

流式模式: off | partial | block

channels.feishu

json
{
  "channels": {
    "feishu": {
      "enabled": true,
      "appId": "APP_ID",
      "appSecret": "APP_SECRET",
      "verificationToken": "VERIFICATION_TOKEN"
    }
  }
}

gateway

HTTP API 网关配置。

字段类型默认值说明
bindstringloopbackautoloopbacklantailnetcustom
customBindHoststring-bindcustom 时的 IPv4 地址
portnumber18790端口号
authobject-认证配置
corsobject-CORS 设置

gateway.auth

字段类型默认值说明
modestringtoken认证模式:nonetokenpassword
tokenstring自动生成mode: "token" 时使用的 Bearer / X-Api-Key 凭证
passwordstring-mode: "password" 时使用的密码凭证
rateLimitobject默认启用认证失败限流(防暴力破解)

说明:

  • gateway.auth.tokengateway.auth.password 互斥,同时设置会在启动时报错。
  • token 模式下未显式配置 token 时,xopc 会在启动时自动生成随机 token。
  • 弱口令/示例占位 token(如 your-secret-token-here)以及长度小于 16 的 token 会被拒绝。
  • 可通过环境变量覆盖:XOPC_GATEWAY_AUTH_MODEXOPC_GATEWAY_TOKENXOPC_GATEWAY_PASSWORD

gateway.auth.rateLimit

字段类型默认值说明
enabledbooleantrue启用认证失败限流
maxAttemptsnumber5窗口内最大失败次数
windowMsnumber900000滚动时间窗口(毫秒)
blockDurationMsnumber300000临时封禁时长(毫秒)

gateway.corsOrigins

字段类型默认值说明
gateway.corsOriginsstring[][]浏览器来源白名单(精确 origin,如 http://localhost:5173

安全行为:

  • Origin 头的浏览器请求会执行来源校验,不通过则拒绝。
  • 不带 Origin 的非浏览器请求(CLI/服务间)由认证中间件校验。
  • corsOrigins 配置为 "*" 虽可用,但会在启动安全审计日志中提示风险。

频道连接延后

相关字段在 gateway 下:channelConnectDeferModechannelConnectDeferIdschannelConnectDeferSkipIds。使用 xopc gatewayGatewayServer 启动路径)时,部分外连型通道(Telegram、微信、飞书)可将 ChannelPlugin.start() 延后到 HTTP 端口已成功监听之后,让控制台与 REST 先可用。是否延后由通道插件 meta.deferConnectUntilAfterListen 声明;可用下列配置覆盖。

字段类型默认值说明
channelConnectDeferMode"auto" | "off" | "explicit"未写视为 autoauto:延后集合 = 已启用且插件 meta 要求延后的通道,再减去 channelConnectDeferSkipIdsoff:不延后,全部在第一阶段 start()explicit:仅延后 channelConnectDeferIds 中的 id(列表为空则等价于不延后任何通道)。
channelConnectDeferIdsstring[]-最多 24 项;仅在 explicit 模式下使用。
channelConnectDeferSkipIdsstring[]-最多 24 项;在 autoexplicit 算出集合后再剔除这些 id。

启动阶段会打结构化日志(phase: "gateway.channel_startup"):

  • stage: "phase1":含 channelInitMsdeferPlanMschannelPhase1StartMsreplayOutboundMs(若在 listen 后重放则为 null)、channelConnectDeferModechannelConnectDeferSourcemeta | explicit | off)、deferredChannelIds 等。
  • stage: "phase2":HTTP 监听成功后:channelPhase2DeferredMsreplayOutboundMsonHttpListeningTotalMs 及同样的 defer 模式快照。

检索示例:日志中带 gateway.channel_startup 或文案 phase-1 complete / phase-2 complete

更多说明见 网关 — 频道启动与 HTTP 监听顺序


tools

工具配置。

tools.web

字段类型默认值说明
searchobject-网页搜索配置
browseobject-网页浏览配置
字段类型默认值说明
maxResultsnumber5工具未传 count 时的默认条数
providersarray[]按顺序尝试的搜索后端(bravetavilybingsearxng)。空数组则仅 HTML 兜底

每项可含 type、可选 apiKey、SearXNG 可选 url、可选 disabled


tools.media.audio (STT)

语音转文字(STT)配置。位于 tools.media.audio 路径下(网关 REST 仍以 stt 字段名暴露,便于表单与脚本兼容)。

字段类型默认值说明
enabledbooleanfalse启用 STT
providerstringalibaba主服务商:alibabaopenai
alibabaobject-阿里云 DashScope 配置
openaiobject-OpenAI Whisper 配置
fallbackobject-回退配置
timeoutMsnumber60000单次调用 HTTP 超时(毫秒)

tools.media.audio.alibaba

字段类型默认值说明
apiKeystring-DashScope API 密钥(环境变量:DASHSCOPE_API_KEY
modelstringparaformer-v2模型 id

tools.media.audio.openai

字段类型默认值说明
apiKeystring-OpenAI API 密钥(环境变量:OPENAI_API_KEY
modelstringwhisper-1Whisper 模型 id

tools.media.audio.fallback

字段类型默认值说明
enabledbooleantrue启用回退
orderarray["alibaba", "openai"]回退顺序

失败时会按顺序尝试各 provider,并记录结构化 attempts(provider、结果、耗时、原因)便于诊断。所有 HTTP 调用都走共享的 media-shared/http 底盘,启用了 SSRF 防护fetchWithTimeoutGuarded)。

示例:

json
{
  "tools": {
    "media": {
      "audio": {
        "enabled": true,
        "provider": "alibaba",
        "alibaba": {
          "apiKey": "${DASHSCOPE_API_KEY}",
          "model": "paraformer-v2"
        },
        "fallback": {
          "enabled": true,
          "order": ["alibaba", "openai"]
        }
      }
    }
  }
}

messages.tts (TTS)

文字转语音(TTS)配置。位于 messages.tts 路径下(网关 REST 仍以 tts 字段名暴露)。启用时还会注册智能体工具 text_to_speech

字段类型默认值说明
enabledbooleanfalse启用 TTS
providerstringopenai主服务商:openaialibabaedgeminimaxtts-local-cli,或任何已注册的 SpeechProviderPlugin id
triggerstringalwaysoffalwaysinboundtagged
maxTextLengthnumber512送入各 TTS 提供方的最大字符数。保守默认值兼顾所有内置 provider(阿里 qwen-tts 上限 512);如主用 provider 上限更高可上调。
timeoutMsnumber60000单次请求 HTTP 超时(毫秒)。范围 1000180000。MiniMax 内部会自动提到 ≥150s 走异步轮询。
fallbackobject-失败时的回退顺序
summarizationobject-超长文本在 TTS 前经 LLM 摘要
modelOverridesobject-是否允许模型使用 [[tts:...]] 指令
openaiobject-OpenAI TTS
alibabaobject-阿里云 DashScope TTS
edgeobject-Microsoft Edge TTS(无需 API Key)
minimaxobject-MiniMax T2A 异步 TTS
tts-local-cliobject-本地 CLI provider(内置扩展)

messages.tts.openai

字段类型默认值说明
apiKeystring-OpenAI API 密钥(环境变量:OPENAI_API_KEY
baseUrlstringhttps://api.openai.com/v1覆盖 base URL(环境变量:OPENAI_TTS_BASE_URL),用于 OpenAI 兼容厂商
modelstringtts-1模型:tts-1tts-1-hdgpt-4o-mini-tts
voicestringalloy音色:alloyechofableonyxnovashimmercoralverse

messages.tts.alibaba

字段类型默认值说明
apiKeystring-DashScope API 密钥(环境变量:DASHSCOPE_API_KEY
modelstringqwen-ttsTTS 模型 id
voicestringlongxiaochun音色 id(CherryEthanlongxiaochunlongxiaobai …)

messages.tts.edge

字段类型默认值说明
enabledbooleantruefalse 时从链中排除 Edge
voicestringen-US-MichelleNeuralEdge 音色 id
langstringen-USBCP-47 语言
outputFormatstringaudio-24khz-48kbitrate-mono-mp3Edge 输出格式字符串
proxystring-可选 HTTP(S) 代理

messages.tts.minimax

字段类型默认值说明
apiKeystring-MiniMax API 密钥(环境变量:MINIMAX_API_KEY
baseUrlstringhttps://api.minimaxi.com/v1覆盖 base URL
modelstringspeech-2.8-hd模型 id(speech-2.8-hdspeech-2.8-turbo …)
voicestringmale-qn-qingse音色 id
groupIdstring-企业版前向兼容字段

messages.tts.tts-local-cli

由内置扩展 tts-local-cli 提供(权威 JSON Schema 见 extensions/tts-local-cli/xopc.extension.json)。spawn 任意本地 TTS 二进制 (mlx-audio、sherpa-onnx-tts、piper 等)并读取产物文件。

字段类型默认值说明
commandstring必填Shell 命令模板;占位符 (大小写不敏感)
argsstring[][]在解析后的 command 末尾追加的额外参数
cwdstring-spawn 进程的工作目录
outputFormatenumwavCLI 产物的文件扩展名:mp3 | opus | wav
timeoutMsnumber120000强制 kill 的超时(毫秒)
envobject-合入 spawn 进程 env 的额外变量(Record<string,string>

Voice 设置 UI 暴露常用字段(commandcwdoutputFormattimeoutMs); argsenv 属高级字段 — 请直接编辑 ~/.xopc/xopc.json 设置。

messages.tts.fallback

字段类型默认值说明
enabledbooleantrue启用回退
orderarray["openai","alibaba","edge","minimax"]顺序(会与主 provider 去重)

回退列表接受任意已注册 SpeechProviderPlugin 的 id,包括扩展 provider(如 tts-local-cli)。

messages.tts.summarization

字段类型默认值说明
enabledbooleantrue超长时先摘要再 TTS
thresholdnumbermaxTextLength超过此长度触发摘要
targetLengthnumbermaxTextLength摘要目标长度
modelstring-摘要用模型引用;未设可用环境变量 XOPC_TTS_SUMMARIZE_MODEL

触发模式:

  • off:不对出站自动 TTS
  • always:满足管道条件时尽量 TTS
  • inbound:仅当用户本轮带语音入站时 TTS
  • tagged:仅当助手文本含 [[tts]] 时 TTS

详见 语音功能 (STT/TTS)(含 Telegram 群语音 @、/tts status、通道格式)。


mcp

出站 MCP 服务器配置与入站 stdio 桥接。

字段类型默认值说明
sessionIdleTtlMsnumber600000会话级 MCP 运行时空闲回收(10 分钟);0 关闭
serversobject{}服务器 id → 连接定义(stdio 或 HTTP)

完整说明、控制台操作与安全注意点见 MCP 文档


heartbeat

定期健康检查配置。

字段类型默认值说明
enabledbooleantrue启用心跳
intervalMsnumber300000间隔毫秒数(5 分钟)

automations

自动化存储在 SQLite 中,并通过网关控制台/API 管理,不通过 xopc.json 配置。打开 #/automations,或使用 /api/automations/api/automation-runs

触发器、动作、可靠性与运行历史见 自动化


extensions

扩展启用/禁用配置。

json
{
  "extensions": {
    "enabled": ["telegram-channel", "weather-tool"],
    "disabled": ["deprecated-extension"],
    "telegram-channel": {
      "token": "bot-token-here"
    },
    "weather-tool": true
  }
}
字段类型说明
enabledstring[]要启用的扩展 ID 列表
disabledstring[](可选)禁用的扩展 ID 列表
[extension-id]object/boolean扩展特定配置

查看 扩展文档 了解详情。


环境变量

xopc 支持环境变量存储敏感数据:

变量说明
OPENAI_API_KEYOpenAI API 密钥
ANTHROPIC_API_KEYAnthropic API 密钥
ANTHROPIC_OAUTH_TOKENAnthropic OAuth 令牌(若使用 OAuth)
GOOGLE_API_KEY / GEMINI_API_KEYGoogle AI(Gemini)密钥
GROQ_API_KEYGroq API 密钥
CEREBRAS_API_KEYCerebras API 密钥
DEEPSEEK_API_KEYDeepSeek API 密钥
MINIMAX_API_KEYMiniMax API 密钥
MOONSHOT_API_KEY月之暗面 / Kimi 系(详见 PROVIDER_ENV_MAPmoonshotai*kimi-coding
FIREWORKS_API_KEYFireworks AI
TOGETHER_API_KEYTogether AI
CLOUDFLARE_API_KEYCloudflare Workers AI / AI Gateway
XIAOMI_API_KEY小米 MiMo 按量;Token 套餐见 XIAOMI_TOKEN_PLAN_*_API_KEY
AI_GATEWAY_API_KEYVercel AI Gateway(亦支持 VERCEL_AI_GATEWAY_API_KEY
DASHSCOPE_API_KEY阿里云 DashScope API 密钥(STT/TTS)
XOPC_TTS_SUMMARIZE_MODEL未配置 tts.summarization.model 时,TTS 长文本摘要使用的模型引用
TELEGRAM_BOT_TOKENTelegram bot token
XOPC_CONFIG自定义配置文件路径
XOPC_WORKSPACE自定义工作区目录
XOPC_SESSION_SEARCH_MODELsession_search 需要生成会话摘要时使用的默认模型
XOPC_LOG_LEVEL日志级别(trace/debug/info/warn/error/fatal)
XOPC_LOG_DIR日志目录路径
XOPC_LOG_CONSOLE启用控制台输出(true/false)
XOPC_LOG_FILE启用文件输出(true/false)
XOPC_LOG_RETENTION_DAYS日志文件保留天数
XOPC_PRETTY_LOGS开发环境美化日志输出
XOPC_LOG_LLM_PAYLOAD在 debug 日志中包含完整 system prompt、消息和工具定义(敏感信息;默认关闭)

环境变量优先于配置文件中的值。


配置管理

验证配置

bash
xopc config validate
# 兼容旧写法:
xopc config --validate

查看配置

bash
xopc config show
# 兼容旧写法:
xopc config --show

使用 xopc config set / xopc config unset 修改配置,或通过 xopc config path 在编辑器中打开文件。


update(更新)

控制版本检查、可选自动安装及更新后 gateway 重启。详见 更新

json
{
  "update": {
    "channel": "stable",
    "checkOnStart": true,
    "auto": {
      "enabled": false,
      "stableDelayHours": 6,
      "stableJitterHours": 12,
      "betaCheckIntervalHours": 1
    }
  },
  "commands": {
    "restart": true
  }
}
默认值说明
update.channelstablestable | beta | dev,对应 npm 标签 latest / beta / dev
update.checkOnStarttrueGateway 启动时查询 registry
update.auto.enabledfalse由 Gateway 自动安装(仅 stable/beta 的全局 npm,不含 git 工作区)
update.auto.stableDelayHours6稳定版首次发现后的等待时间
update.auto.stableJitterHours12稳定版自动更新的随机额外延迟
update.auto.betaCheckIntervalHours1同一 beta 版本两次自动尝试的最小间隔(小时)
commands.restarttruefalse 时禁用更新后重启及 SIGUSR1 重启

常见问题

Q: 如何使用多个服务商?

使用 providers 配置定义多个 API 密钥。运行时将根据模型 ID 自动选择合适的服务商:

json
{
  "providers": {
    "openai": "${OPENAI_API_KEY}",
    "anthropic": "${ANTHROPIC_API_KEY}"
  },
  "agents": {
    "defaults": {
      "model": "anthropic/claude-sonnet-4-5"
    }
  }
}

Q: 如何使用 Ollama(本地模型)?

~/.xopc/models.json 中配置自定义服务商:

json
{
  "providers": {
    "ollama": {
      "baseUrl": "http://localhost:11434/v1",
      "api": "openai-completions",
      "apiKey": "ollama",
      "models": [
        { "id": "llama3.1:8b" }
      ]
    }
  }
}

查看 模型文档 了解详情。

Q: 如何配置 OAuth?

xopc 支持某些服务商的 OAuth 认证:

Kimi(设备码流程):

json
{
  "providers": {
    "kimi": {
      "auth": {
        "type": "oauth",
        "clientId": "your-client-id"
      }
    }
  }
}

Kimi 使用设备码流程 - CLI 会提示访问 auth.kimi.com 并输入代码。

Q: 如何使用环境变量?

在配置中使用 ${VAR_NAME} 语法:

json
{
  "providers": {
    "openai": "${OPENAI_API_KEY}",
    "anthropic": "${ANTHROPIC_API_KEY}"
  }
}

或直接设置环境变量而不添加到配置中。

基于 MIT 许可证发布