Skip to content

配置文件

.device_agent/config.json 是 Device Agent 的主要运行配置文件。控制台设置页保存的 MQTT、模型、语音、IM、日志和工具权限都会写入这个文件。启动时,如果文件不存在,Device Agent 会根据默认值和 .env 中的启动配置自动创建。

文件位置

运行目录由启动方式决定:

运行方式常见位置
开发环境<repo>/.device_agent/config.json
生产运行~/.device_agent/config.json

以启动日志中的 Runtime Home 为准。证书上传、日志文件、用户技能和工具扩展也会放在同一个运行目录下的子目录中。

文件结构

配置文件包含这些顶层字段:

json
{
  "version": 1,
  "mqtt": {},
  "models": {},
  "voice": {},
  "im": {},
  "logging": {},
  "permissions": {}
}
字段用途
mqttMQTT Broker、浏览器 WebSocket 地址、连接参数、认证、TLS 和主题模板。
models主智能体模型和视觉模型。
voice语音 WebSocket 服务、语音区域、服务商和 ASR/TTS 参数。
im飞书、钉钉、Discord、Telegram、Slack 等 IM 通道。
logging日志级别、控制台输出、文件输出和日志轮转。
permissionswrite_fileexecute_command 和允许执行的命令前缀。

示例

以下示例只展示常用字段。实际文件会包含完整结构。

json
{
  "version": 1,
  "mqtt": {
    "brokerUrl": "mqtt://broker.example.com:1883",
    "wsUrl": "wss://broker.example.com:8084/mqtt",
    "clientId": "device-agent-gateway",
    "protocolVersion": 5,
    "username": "device-agent",
    "password": "secret",
    "tls": {
      "enabled": false,
      "rejectUnauthorized": true,
      "caFile": "",
      "certFile": "",
      "keyFile": "",
      "keyPassphrase": "",
      "serverName": ""
    },
    "topics": {
      "deviceCommand": "device-agent/{productId}/device/{deviceId}/commands",
      "deviceResponse": "device-agent/{productId}/device/{deviceId}/responses",
      "telemetry": "v1/{productId}/{deviceId}/telemetry",
      "event": "v1/{productId}/{deviceId}/event"
    }
  },
  "models": {
    "agent": {
      "provider": "openai",
      "model": "gpt-4.1",
      "baseUrl": "",
      "apiKey": "sk-...",
      "codexAuthFile": "",
      "maxIterations": 40
    },
    "vision": {
      "enabled": true,
      "provider": "auto",
      "model": "",
      "apiKey": "",
      "timeoutMs": 60000
    }
  }
}

直接修改文件

直接修改配置文件适合备份恢复、批量部署或无法访问控制台的环境。修改时注意:

  • 保留 version: 1
  • 使用合法 JSON,不要写注释或尾随逗号。
  • MQTT 主题模板需要保留 {productId}{deviceId} 占位符。
  • TLS 证书路径可以是绝对路径,也可以是相对运行目录的路径。
  • 修改 MQTT、IM、语音监听地址、端口或 TLS 后需要重启。

如果配置文件格式不合法,Device Agent 启动时会报错并指出配置路径。需要恢复时,可以先备份当前文件,再删除 config.json,让 Device Agent 在下次启动时重新生成默认配置。

.env 的关系

.env 会在启动时写入同名配置项。直接修改 config.json 后,如果 .env 里仍然存在同名变量,下次启动时 .env 的值会再次覆盖文件中的值。

适合长期保留在 .env 的内容通常是部署环境差异,例如 HTTP 监听地址、数据库、A2A 身份和密钥注入。适合保留在 config.json 的内容是控制台中日常维护的 MQTT、模型、语音、IM、日志和权限配置。