Skip to content

配置参考

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

快速开始

运行交互式设置向导:

bash
xopc onboard

或手动创建:

json
{
  "agents": {
    "defaults": {
      "model": "anthropic/claude-sonnet-4-5",
      "max_tokens": 8192,
      "temperature": 0.7
    }
  },
  "providers": {
    "anthropic": "${ANTHROPIC_API_KEY}"
  }
}

完整配置示例

json
{
  "agents": {
    "defaults": {
      "workspace": "~/.xopc/workspace",
      "model": {
        "primary": "anthropic/claude-sonnet-4-5",
        "fallbacks": ["openai/gpt-4o", "minimax/minimax-m2.1"]
      },
      "max_tokens": 8192,
      "temperature": 0.7,
      "max_tool_iterations": 20
    }
  },
  "providers": {
    "openai": "${OPENAI_API_KEY}",
    "anthropic": "${ANTHROPIC_API_KEY}",
    "deepseek": "${DEEPSEEK_API_KEY}",
    "groq": "${GROQ_API_KEY}",
    "google": "${GOOGLE_API_KEY}",
    "minimax": "${MINIMAX_API_KEY}"
  },
  "channels": {
    "telegram": {
      "enabled": true,
      "accounts": {
        "personal": {
          "name": "Personal Bot",
          "botToken": "BOT_TOKEN",
          "dmPolicy": "allowlist",
          "groupPolicy": "open",
          "allowFrom": [123456789],
          "streamMode": "partial"
        }
      }
    }
  },
  "gateway": {
    "host": "0.0.0.0",
    "port": 18790
  },
  "tools": {
    "web": {
      "search": {
        "maxResults": 5,
        "providers": [{ "type": "brave", "apiKey": "BSA_your_key_here" }]
      }
    }
  },
  "tools": {
    "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

智能体配置分为三部分:可选的顶层 default(默认 agent id)、共享的 defaults、以及 list 中的多条身份。路由与 session key 的第一段即为 agent id;运行时会把 agents.defaultslist 里匹配且 enabled 的条目合并成该会话的有效配置(模型、工作区、工具、提示词等)。

顶层 agents 字段

字段类型说明
defaultstring可选。未在会话键/API 中指定 agent 时使用的默认 id。未设置时:取 list 中带 default: true 的条目,否则 list 中第一个 enabled 的 id,否则 main
defaultsobject全局基线,见下文 agents.defaults
listarray多条 agent 身份;每条可覆盖字段,见 agents.list 条目

agents.list 条目

每条至少包含 id,其余字段均为可选覆盖(与 defaults 中同类字段形状一致)。

字段类型说明
idstring智能体 id(agentId,也是 session key 的第一段)。
defaultboolean可选。为 true 时,在设置顶层 agents.default 的情况下将该条目标记为默认 agent。
namestring显示名称。
enabledboolean默认 true。为 false 时该 id 不参与路由默认,且有效配置解析会回退到默认 agent。
workspacestring可选。该 agent 的 Markdown 工作区根路径(支持 ~)。工具 cwd、按日的 memory/ 与用户文件在此。profile Markdown(SOUL.md 等)位于 agents/<id>/profile/。入站/TTS 与托管 memories/ 解析在 agents/<id>/(agent 主目录),不在此目录内。
agentDirstring可选。覆盖 内部 agent 状态目录(凭证、agent.json、收件箱、pid 等),默认 <stateDir>/agents/<id>/agent
modelstring | objectagents.defaults.model(字符串或 { primary, fallbacks })。
thinkingDefaultstring可选:offminimallowmediumhighxhighadaptive
reasoningDefaultstring可选:offonstream
verboseDefaultstring可选:offonfull
systemPromptOverridestring可选。若设置,则替换常规基础系统提示词;技能 XML 仍会追加(受 skills 白名单约束)。
skillsstring[]可选。技能 名称 白名单,仅这些会出现在 <available_skills>
toolsobject可选。{ "disable": ["工具名", ...] },按内置工具的 name 禁用(如 shellweb_searchsession_searchimage;禁用扩展工具用 extensions)。
paramsobject可选,预留。

同类可选字段也可写在 agents.defaults 里作为全局默认(例如 agents.defaults.tools.disable 会与每条 list 的 disable 合并)。

说明: 磁盘路径(~/.xopc/agents/<id>/ 下的会话与内部状态、以及各 agent 的 Markdown 工作区,即 agents.defaults.workspace/<agentId><状态目录>/workspace/<agentId>)均按 config.json 解析(agents.listagents.defaults、可选的 agentDir)。请使用 xopc agents add / agents delete 管理列表与目录;不存在独立于配置之外的 agent「注册表」。

agents.defaults

字段类型默认值说明
workspacestring~/.xopc/workspaceMarkdown 工作区的父目录;每个智能体解析为 <展开路径>/<agentId>/(如 ~/.xopc/workspace/main
modelstring/objectanthropic/claude-sonnet-4-5默认模型
max_tokensnumber8192最大输出 tokens
temperaturenumber0.7温度参数 (0-2)
max_tool_iterationsnumber20最大工具调用次数
imageModelstring | objectimagebrowser_use 工具及主模型不支持视觉时对入站图做描述的视觉模型。格式与 model 相同(字符串或 { primary, fallbacks })。详见 图像与视觉
imageGenerationModelstring | objectimage_generate 的文生图模型链(如 openai/gpt-image-1dashscope/wan2.6-t2i)。格式与 model 相同。详见 图像与视觉
mediaMaxMbnumber可选。image 工具从路径或 URL 加载单张图片时的最大体积(MB)。

agents.defaults.model

模型配置支持两种格式:

简单格式:

json
{
  "model": "anthropic/claude-sonnet-4-5"
}

对象格式(带备用模型):

json
{
  "model": {
    "primary": "anthropic/claude-sonnet-4-5",
    "fallbacks": ["openai/gpt-4o", "minimax/minimax-m2.1"]
  }
}

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

imageModelimageGenerationModel 也可使用与 model 相同的 { primary, fallbacks } 对象,以配置视觉或文生图的有序降级链。

agents.defaults.memory

agents/<agentId>/memories/ 下的托管长期记忆(MEMORY.md / USER.md)、可选的 stub 外部记忆后端(用于接线测试),以及用户轮次上 prefetch 注入(在用户消息前加 <memory-context> 围栏)的控制项。目录说明见 托管记忆

字段类型默认值说明
enabledbooleantrue总开关。为 false 时:无 curated 快照、无 curated_memory 工具、不加载外部 memory 提供方、不做 prefetch/sync。
useEnhancedSystembooleantruefalse 时:关闭 curated 快照与 curated_memoryagents/<id>/profile/MEMORY.md 仍会参与系统提示。
userProfileEnabledbooleantruefalse 时:系统提示不包含 USER.mdcurated_memory 不能修改 user 目标(仍可读)。
memoryCharLimitnumber2200MEMORY.md 条目合计字符上限。
userCharLimitnumber1375USER.md 条目合计字符上限。
providerstringnone外部提供方:nonestubenabledfalse 时不生效)。
injectionFrequencystringevery-turnPrefetch 注入策略:every-turnfirst-turn(仅会话中第一条用户消息)。
contextCadencenumber1injectionFrequencyevery-turn 时,在第 1、1+N、1+2N… 轮注入 prefetch(最小为 1)。
dialecticCadencenumber预留字段,供将来外部 dialectic 同步节奏使用(尚未接线)。

agents.defaults.sessionSearch

跨会话 transcript 检索(session_search 工具,需会话持久化可用时注册)。

字段类型默认值说明
summaryModelstring按会话摘要所用模型(如 openai/gpt-4o-mini)。设置后优先于环境变量 XOPC_SESSION_SEARCH_MODEL

agents.defaults.browser

统一的 browser_use 工具会在 enabledtrue 时注册。本机模式需先安装 Chromium:npx playwright install chromium。工具行为与 URL 策略见 工具说明中的「浏览器(可选)」一节。

字段类型默认值说明
enabledbooleantrue 时注册浏览器自动化工具。
headlessboolean启用浏览器时多为 true无界面运行浏览器。
allowPrivateUrlsbooleantrue 时允许导航到私网 IP;云元数据 / IMDS 与 URL 内可疑凭据模式仍拦截。
commandTimeoutnumber30单次浏览器命令超时(秒,最小 5)。
cloudProviderstringlocal | browserbase | browser-use;省略或 local 为进程内 Playwright。
cdpUrlstring可选:已有浏览器的 CDP WebSocket 地址;设置时绕过 cloudProvider
dialogPolicystringmust_respond | auto_dismiss | auto_accept,配合 CDP 监督器处理 JS 对话框。
dialogTimeoutSecondsnumber300自动处理对话框相关超时(秒,最小 1)。

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,
      "accounts": {
        "personal": {
          "name": "Personal Bot",
          "botToken": "BOT_TOKEN",
          "dmPolicy": "allowlist",
          "groupPolicy": "open",
          "allowFrom": [123456789],
          "streamMode": "partial"
        }
      }
    }
  }
}
字段类型默认值说明
enabledbooleanfalse启用 Telegram
accountsobject-多账户配置
accounts.<id>.namestring-显示名称
accounts.<id>.botTokenstring-Bot token
accounts.<id>.dmPolicystringopenDM 策略
accounts.<id>.groupPolicystringopen群组策略
accounts.<id>.allowFromarray[]允许的用户 ID
accounts.<id>.streamModestringpartial流式模式

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

  • pairing(推荐):未在允许列表中的用户 不会 进入智能体管线。允许来源包括配置里的 allowFrom,以及执行 xopc channels pairing approve 后写入的 各通道凭证目录下的 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 分钟)

cron

定时任务配置。

字段类型默认值说明
enabledbooleantrue启用 cron
jobsarray[]定时任务列表

查看 Cron 文档 了解任务配置。


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_MODEL未设置 agents.defaults.sessionSearch.summaryModel 时,session_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开发环境美化日志输出

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


配置管理

验证配置

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

查看配置

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

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


常见问题

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 许可证发布