附录 C:配置参考

本附录以当前 ../octos main 分支的 octos-cli/src/config.rsoctos-cli/src/profiles.rsoctos-agent hook/schema 为准。顶层 config.json 面向单实例运行;profile 文件面向 serve/gateway 的多 profile / 多租户运行。

配置文件位置

优先级路径说明
1(最高)<cwd>/.octos/config.json项目本地配置
2<data_dir>/config.json,通常是 ~/.octos/config.json当前数据目录配置
3平台 legacy config dir,例如 ~/.config/octos/config.json兼容旧路径;加载时会提示迁移
4(最低)内置默认值代码中定义的默认值

顶层 Config 字段

字段路径类型默认值说明
versionu32?null配置迁移版本;当前代码常量为 1
providerstring?自动检测/必填取决于运行模式LLM Provider 名称
modelstring?Provider 默认或模型检测模型 ID
base_urlstring?Provider 默认API endpoint 覆盖
api_key_envstring?Provider 默认API key 环境变量名
model_hintsobject?nullOpenAI-compatible 自定义模型行为提示
api_typestring?Provider 默认协议覆盖,例如 openai / anthropic
auth_tokenstring?CLI/env 覆盖或生成Dashboard/admin token
gatewayobject?nullGateway 模式配置,见下节
mcp_serversarray[]MCP server 配置
sandboxobjectSandboxConfig::default()工具沙箱配置
tool_policyobject?null全局工具 allow/deny/tag 策略
tool_policy_by_providerobject{}model/provider 级工具策略,精确 model ID 优先,其次 provider 前缀
embeddingobject?nullHybrid memory embedding provider
fallback_modelsarray[]Provider failover chain 的 fallback 模型
max_iterationsu32?Agent 默认,CLI 可覆盖单条消息最大 Agent 迭代数
hooksarray[]Agent 生命周期 hooks
context_filterstring[][]只向 LLM 暴露匹配 tag 的工具
sub_providersarray[]spawn 子 Agent 可选 provider
adaptive_routingobject?nullAdaptiveRouter 配置
emailobject?nullsend_email / 邮件发送配置
voiceobject?nullASR/TTS 自动转写与语音回复
modeenum"local"local / tenant / cloud
tunnel_domainstring?env 可覆盖云/租户 tunnel domain
base_domainstring?默认兼容 crew.ominix.io公开 profile 域名基座,OCTOS_BASE_DOMAIN 优先
frps_serverstring?env 可覆盖frps server 地址
allow_admin_shellboolfalse是否启用 /api/admin/shell;生产环境应保持关闭
dashboard_authobject?nullapi feature 下的 email OTP 登录配置
monitorobject?nullapi feature 下的 watchdog/alert 配置
credential_poolobject?null顶层 credential pool
content_routingobject?nullContent classifier / Cheap-Strong routing
appui.default_session_cwdpath?nullAppUI session 未声明 cwd capability 时的默认工作目录

Gateway 配置

字段路径类型默认值说明
gateway.channels[]arrayCLI channel频道配置;每项含 typeallowed_senderssettings
gateway.max_historyusize50注入 LLM 的最大历史消息数
gateway.system_promptstring?nullGateway 模式系统提示
gateway.queue_modeenum"collect"followup / collect / steer / interrupt / speculative
gateway.max_sessionsusize1000内存中保留的最大 session 数
gateway.max_concurrent_sessionsusize10最大并发 session
gateway.browser_timeout_secsu64?Browser 默认单个 browser action 超时
gateway.llm_timeout_secsu64?LLM 默认LLM HTTP 总超时
gateway.llm_connect_timeout_secsu64?LLM 默认LLM HTTP 连接超时
gateway.tool_timeout_secsu64?Runtime 默认并行工具调用总等待上限
gateway.session_timeout_secsu64?Runtime 默认单条 session 消息处理上限
gateway.max_output_tokensu32?模型默认LLM 单次输出 token 上限

Serve 配置

serve 的端口是 CLI 参数而非 Config 内嵌字段:octos serve --port <PORT>,默认端口为 50080。历史文档中的 serve.host / serve.port 不是当前 Config 结构体字段。

Provider / Embedding / Routing

字段路径类型默认值说明
fallback_models[].providerstring必填fallback provider
fallback_models[].modelstring?Provider 默认fallback model
fallback_models[].base_urlstring?Provider 默认endpoint 覆盖
fallback_models[].api_key_envstring?Provider 默认API key env
fallback_models[].model_hintsobject?nullOpenAI-compatible 模型提示
fallback_models[].api_typestring?Provider 默认协议覆盖
fallback_models[].cost_per_mf64?null每百万 token 输出成本
fallback_models[].strongbooltrue是否视为强模型
embedding.providerstring"openai"embedding provider
embedding.api_key_envstring?Provider 默认embedding API key env
embedding.base_urlstring?Provider 默认embedding endpoint
adaptive_routing.enabledboolfalse是否启用 AdaptiveRouter
adaptive_routing.modeenum"off"off / hedge / lane
adaptive_routing.latency_threshold_msu6410000延迟软阈值
adaptive_routing.error_rate_thresholdf640.3错误率阈值
adaptive_routing.probe_probabilityf640.1探针概率
adaptive_routing.probe_interval_secsu6460同 provider 探针间隔
adaptive_routing.failure_thresholdu323circuit breaker 连续失败阈值
adaptive_routing.qos_rankingboolfalse是否启用质量/吞吐排序
adaptive_routing.weight_latency/error_rate/priority/costf640.3/0.3/0.2/0.2评分权重
content_routing.enabledboolfalse关闭时所有 turn 视为 Strong

Tool Policy / MCP / Hooks

字段路径类型默认值说明
tool_policy.allowstring[][]allow list;支持工具名、group:<id>prefix*
tool_policy.denystring[][]deny list;deny-wins
tool_policy.require_tagsstring[][]只允许含指定 tag 的工具
tool_policy_by_provider.<name>object{}对指定 model/provider 叠加工具策略
mcp_servers[].commandstring?-Stdio MCP 启动命令
mcp_servers[].argsstring[][]Stdio MCP 参数
mcp_servers[].envobject{}MCP 子进程环境变量
mcp_servers[].urlstring?-HTTP MCP URL
hooks[]object[][]Hook 列表
hooks[].eventstring必填事件名,如 before_tool_call / after_tool_call / on_turn_end
hooks[].commandstring[]必填argv 形式命令,不经过 shell
hooks[].timeout_msu64hook 默认超时毫秒
hooks[].tool_filterstring[][]空数组表示不按工具过滤

Credential / Email / Voice / AppUI

字段路径类型默认值说明
credential_pool.state_pathstring?<data_dir>/credential_pool.redb顶层 pool 状态文件
credential_pool.namestring"default"pool metrics 名称
credential_pool.strategystring"round_robin"fill_first / round_robin / random / least_used
credential_pool.credential_idsstring[][]pool 内 credential IDs
credential_pool.default_cooldown_msu64?null429 无 reset hint 时的 cooldown
email.providerstring必填smtp / feishu / lark
email.smtp_host/smtp_port/username/password/password_env/from_addressmixednullSMTP 配置
email.feishu_app_id/feishu_app_secret/feishu_app_secret_env/feishu_from_address/feishu_regionmixednull / cnFeishu/Lark 邮件配置
voice.auto_asrbooltrue是否自动转写语音
voice.auto_ttsbooltrue是否自动合成语音回复
voice.default_voicestring"vivian"默认 TTS 音色
voice.asr_languagestring?nullASR 语言提示
appui.default_session_cwdpath?nullAppUI 默认 workspace cwd

Dashboard Auth / Monitor

这些字段只在启用 api feature 的 octos serve 构建中生效。未配置 dashboard_auth.smtp 时,OTP 仍可生成,但邮件发送会退化为日志提示。

字段路径类型默认值说明
dashboard_auth.smtp.hoststring必填OTP SMTP server host
dashboard_auth.smtp.portu16465SMTP port;465 为 implicit TLS,587 为 STARTTLS
dashboard_auth.smtp.usernamestring必填SMTP username
dashboard_auth.smtp.password_envstring必填/兼容SMTP password env;新安装优先使用 data-dir secret store
dashboard_auth.smtp.from_addressstring必填OTP 发件地址
dashboard_auth.session_expiry_hoursu6424Dashboard session 有效期
dashboard_auth.allow_self_registrationboolfalse未知 email 是否自动创建用户
dashboard_auth.static_tokensstring[][]E2E 测试用静态 token;生产环境不要配置
monitor.alerts_enabledbooltrue是否启用主动告警
monitor.watchdog_enabledbooltrue是否启用 watchdog 自动重启
monitor.health_check_interval_secsu6460健康检查间隔
monitor.max_restart_attemptsu323自动重启最大尝试次数
monitor.telegram_token_envstring?nullTelegram bot token env
monitor.telegram_alert_chat_idsi64[][]Telegram 告警 chat IDs
monitor.feishu_app_id_envstring?nullFeishu app id env
monitor.feishu_app_secret_envstring?nullFeishu app secret env
monitor.feishu_alert_user_idsstring[][]Feishu 告警 user IDs

Profile 配置

Profile 文件位于 ~/.octos/profiles/<id>.jsonUserProfile 顶层字段包括 idnamepublic_subdomainenableddata_dirparent_idconfigcreated_atupdated_at。子账号通过 parent_id 继承父 profile 的 LLM contract 和低层 env vars。

当前主分支的 profile LLM 配置不再是旧的顶层 provider / model,而是放在 config.llm 下:

字段路径类型说明
config.llm.primary.family_idstring?主模型家族 ID,例如 anthropicopenaimoonshot
config.llm.primary.model_idstring?主模型 ID
config.llm.primary.route.route_idstring?catalog route ID
config.llm.primary.route.labelstring?route 展示名
config.llm.primary.route.base_urlstring?route API endpoint 覆盖
config.llm.primary.route.api_key_envstring?route API key env
config.llm.primary.route.api_typestring?协议覆盖,例如 anthropic / responses
config.llm.primary.model_hintsobject?模型能力、成本、上下文窗口等提示
config.llm.primary.cost_per_mf64?每百万 token 成本
config.llm.primary.strongbool?是否标记为强模型
config.llm.fallbacks[]object[]fallback 模型列表,元素结构同 primary

Profile 还包含 typed sections:search.providersdeep_crawl.page_settle_ms/max_output_charsapps.slidesrobot.realtimechannels[]gatewayemailenv_varshooks[]admin_modesandboxadaptive_routingcost_budgetmatrix.swarm_supervisorcontent_routingcredential_pool

示例配置

{
  // 当前配置版本;缺省也可由迁移逻辑处理
  "version": 1,
  // 主 LLM provider / model
  "provider": "anthropic",
  "model": "claude-sonnet-4-20250514",
  // API key env 覆盖
  "api_key_env": "ANTHROPIC_API_KEY",
  // 单 turn 最大 Agent 迭代数
  "max_iterations": 30,
  // 全局工具策略,deny 优先
  "tool_policy": {
    "deny": ["browser"]
  },
  // 针对特定 provider 的工具策略
  "tool_policy_by_provider": {
    "ollama": {
      "allow": ["read_file", "shell", "grep"]
    }
  },
  // Gateway 运行时配置
  "gateway": {
    "max_concurrent_sessions": 20,
    "queue_mode": "collect",
    "channels": [
      {
        "type": "telegram",
        "allowed_senders": [],
        "settings": { "token_env": "TELEGRAM_BOT_TOKEN" }
      }
    ]
  },
  // MCP server 配置
  "mcp_servers": [
    {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"],
      "env": {}
    }
  ],
  // Hook 使用 argv 数组,不经过 shell
  "hooks": [
    {
      "event": "before_tool_call",
      "command": ["./audit-hook.sh"],
      "timeout_ms": 3000,
      "tool_filter": ["shell"]
    }
  ],
  // AdaptiveRouter 配置
  "adaptive_routing": {
    "enabled": true,
    "mode": "lane",
    "qos_ranking": true
  },
  // AppUI session 默认 cwd
  "appui": {
    "default_session_cwd": "/workspace"
  }
}