配置文件
.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": {}
}| 字段 | 用途 |
|---|---|
mqtt | MQTT Broker、浏览器 WebSocket 地址、连接参数、认证、TLS 和主题模板。 |
models | 主智能体模型和视觉模型。 |
voice | 语音 WebSocket 服务、语音区域、服务商和 ASR/TTS 参数。 |
im | 飞书、钉钉、Discord、Telegram、Slack 等 IM 通道。 |
logging | 日志级别、控制台输出、文件输出和日志轮转。 |
permissions | write_file、execute_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、日志和权限配置。