环境变量
Device Agent 启动时读取工作区根目录的 .env,用于首次启动、部署、密钥和环境差异配置;支持配置文件的字段会写入 .device_agent/config.json,HTTP 监听、数据库、A2A 身份和额外 IM 通道等启动项不会写入配置文件。
bash
cp .env.example .envMQTT
| 变量 | 说明 |
|---|---|
MQTT_BROKER_URL | 网关和设备端连接 MQTT Broker 的地址,例如 mqtt://localhost:1883。 |
VITE_MQTT_WS_URL | 浏览器连接 MQTT Broker 的 WebSocket 地址,例如 ws://localhost:8083/mqtt。 |
MQTT_CLIENT_ID | 网关连接 MQTT Broker 时使用的客户端 ID。 |
MQTT_PROTOCOL_VERSION | MQTT 协议版本,支持 4 和 5。 |
MQTT_KEEPALIVE_SECONDS / MQTT_KEEP_ALIVE_SECONDS | Keep Alive 时间。 |
MQTT_CONNECT_TIMEOUT_MS | 连接超时时间。 |
MQTT_AUTO_RECONNECT | 是否自动重连。 |
MQTT_RECONNECT_PERIOD_MS | 重连间隔。 |
MQTT_CLEAN_START | 是否使用 Clean Start。 |
MQTT_SESSION_EXPIRY_INTERVAL_SECONDS | MQTT 5 会话过期时间。 |
MQTT_USERNAME / MQTT_PASSWORD | 网关和设备侧常用 MQTT 认证信息。 |
VITE_MQTT_USERNAME / VITE_MQTT_PASSWORD | 浏览器侧 MQTT 认证信息。只在确实需要浏览器直连 Broker 时使用。 |
TLS 相关变量:
| 变量 | 说明 |
|---|---|
MQTT_TLS_ENABLED | 启用 MQTT TLS。 |
MQTT_TLS_INSECURE | 设置为 true 时关闭服务端证书校验。 |
MQTT_TLS_REJECT_UNAUTHORIZED | 是否校验服务端证书。 |
MQTT_TLS_CA_FILE | CA 证书路径。 |
MQTT_TLS_CERT_FILE | 客户端证书路径。 |
MQTT_TLS_KEY_FILE | 客户端私钥路径。 |
MQTT_TLS_KEY_PASSPHRASE | 客户端私钥密码。 |
MQTT_TLS_SERVER_NAME | TLS Server Name。 |
主题模板变量:
bash
MQTT_TOPIC_PRODUCT_IN=device-agent/{productId}/in
MQTT_TOPIC_PRODUCT_OUT=device-agent/{productId}/out
MQTT_TOPIC_DEVICE_IN=device-agent/{productId}/device/{deviceId}/in
MQTT_TOPIC_DEVICE_OUT=device-agent/{productId}/device/{deviceId}/out
MQTT_TOPIC_DEVICE_COMMAND=device-agent/{productId}/device/{deviceId}/commands
MQTT_TOPIC_DEVICE_RESPONSE=device-agent/{productId}/device/{deviceId}/responses
MQTT_TOPIC_TELEMETRY=v1/{productId}/{deviceId}/telemetry
MQTT_TOPIC_EVENT=v1/{productId}/{deviceId}/event
MQTT_TOPIC_NTP_REQUEST=device-agent/{productId}/device/{deviceId}/ntp/request
MQTT_TOPIC_NTP_RESPONSE=device-agent/{productId}/device/{deviceId}/ntp/response主题模板需要保留 {productId} 和 {deviceId} 占位符。更多主题和消息格式见 MQTT 接入。
模型和视觉
| 变量 | 说明 |
|---|---|
LLM_PROVIDER | 主智能体模型服务商。 |
LLM_MODEL | 主智能体模型名称。 |
LLM_BASE_URL | 自定义模型服务地址,常用于 OpenAI 兼容接口或本地模型服务。 |
LLM_API_KEY | 通用模型 API Key。 |
OPENAI_API_KEY / ANTHROPIC_API_KEY / KIMI_API_KEY / QWEN_API_KEY | 对应服务商的 API Key。 |
OPENAI_CODEX_AUTH_FILE | openai-codex 服务商使用的 Codex 认证文件路径。 |
OPENAI_CODEX_ACCESS_TOKEN | openai-codex 服务商使用的访问令牌。 |
AGENT_MAX_ITERATIONS | 智能体单轮任务的最大执行轮次。 |
VISION_ENABLED | 是否启用视觉能力。 |
VISION_PROVIDER | 视觉服务商,支持 auto 和 dashscope。 |
VISION_MODEL | 视觉模型名称。 |
VISION_API_KEY | 视觉模型 API Key。 |
VISION_TIMEOUT_MS | 视觉分析超时时间。 |
VISION_PROVIDER=auto 时,系统会尝试复用主智能体模型的图像输入能力。使用独立视觉模型时,设置 VISION_PROVIDER=dashscope、VISION_MODEL 和 VISION_API_KEY。
HTTP、前端和数据存储
| 变量 | 说明 |
|---|---|
AGENT_GATEWAY_HTTP_HOST | 控制台和 HTTP API 的监听地址,默认 127.0.0.1。需要服务器 IP 或局域网访问时设置为 0.0.0.0。 |
AGENT_GATEWAY_HTTP_PORT | 控制台和 HTTP API 的监听端口,默认 3000。 |
VITE_API_BASE_URL | 前端请求 API 的基础地址。通常使用同源代理时不需要设置。 |
VITE_DEVICE_AGENT_PENDING_TIMEOUT_MS | 控制台等待设备智能体创建或响应的超时时间。 |
VITE_FF_A2A_MARKETPLACE_ENABLE | 是否显示 A2A Marketplace 相关入口。 |
VITE_DEVICE_ACCESS_CONTROL_BASE_URL | 设备接入控制服务地址,用于小程序等外部访问控制场景。 |
DATABASE_DRIVER | 数据存储驱动。默认使用本地数据存储;需要 PostgreSQL 时设置为 postgres。 |
DATABASE_URL | PostgreSQL 连接地址,仅在 DATABASE_DRIVER=postgres 时需要。 |
前端变量由前端开发服务或构建过程读取,修改后需要重启前端服务或重新构建。
语音
| 变量 | 说明 |
|---|---|
VOICE_ENABLED | 是否启用语音通道。 |
VOICE_HOST | 语音服务监听地址。 |
VOICE_PORT | 语音服务监听端口,默认 3001。 |
VITE_ASR_SAMPLE_RATE | 浏览器采集语音时使用的 ASR 采样率。 |
VOICE_REGION | 语音区域,支持 cn、us、eu 和 global。 |
VOICE_TLS_ENABLED | 是否启用语音服务 TLS。 |
VOICE_TLS_CERT_FILE / VOICE_TLS_KEY_FILE | 语音服务 TLS 证书和私钥路径。 |
VOICE_TLS_PASSPHRASE | 语音服务 TLS 私钥密码。 |
语音服务商变量:
| 服务商 | 变量 |
|---|---|
| 火山引擎 | VOLCENGINE_SPEECH_APP_ID、VOLCENGINE_SPEECH_ACCESS_KEY、VOLCENGINE_ASR_RESOURCE_ID、VOLCENGINE_ASR_LANGUAGE、VOLCENGINE_TTS_RESOURCE_ID、VOLCENGINE_TTS_VOICE、VOLCENGINE_TTS_VOICES、VOLCENGINE_TTS_EXPLICIT_LANGUAGE、VOLCENGINE_TTS_SAMPLE_RATE |
| 阿里云 DashScope | ALIYUN_DASHSCOPE_API_KEY、ALIYUN_ASR_MODEL、ALIYUN_ASR_LANGUAGE、ALIYUN_TTS_MODEL、ALIYUN_TTS_VOICE、ALIYUN_TTS_VOICES、ALIYUN_TTS_SAMPLE_RATE |
| AWS | AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_REGION、AWS_TRANSCRIBE_LANGUAGE_CODE、AWS_POLLY_VOICE、AWS_POLLY_SAMPLE_RATE |
| ElevenLabs | ELEVENLABS_API_KEY、ELEVENLABS_API_ENDPOINT、ELEVENLABS_ASR_MODEL_ID、ELEVENLABS_ASR_LANGUAGE、ELEVENLABS_TTS_MODEL_ID、ELEVENLABS_TTS_VOICE、ELEVENLABS_TTS_VOICES、ELEVENLABS_TTS_SAMPLE_RATE |
更多说明见 语音交互。
IM
这些通道也可以在控制台设置页配置:
| 通道 | 变量 |
|---|---|
| 飞书 | FEISHU_ENABLED、FEISHU_APP_ID、FEISHU_APP_SECRET、FEISHU_ENCRYPT_KEY、FEISHU_VERIFICATION_TOKEN、FEISHU_ALLOW_FROM |
| 钉钉 | DINGTALK_ENABLED、DINGTALK_CLIENT_ID、DINGTALK_CLIENT_SECRET、DINGTALK_ALLOW_FROM |
| Discord | DISCORD_ENABLED、DISCORD_BOT_TOKEN、DISCORD_ALLOW_FROM |
| Telegram | TELEGRAM_ENABLED、TELEGRAM_BOT_TOKEN、TELEGRAM_ALLOW_FROM |
| Slack | SLACK_ENABLED、SLACK_BOT_TOKEN、SLACK_APP_TOKEN、SLACK_SIGNING_SECRET、SLACK_ALLOW_FROM、SLACK_CHANNEL_DIRECT_ENABLED |
额外 IM 通道目前只支持环境变量,不会出现在控制台设置页:
| 通道 | 变量 |
|---|---|
WHATSAPP_ENABLED、WHATSAPP_BRIDGE_URL、WHATSAPP_BRIDGE_TOKEN、WHATSAPP_ALLOW_FROM | |
QQ_ENABLED、QQ_APP_ID、QQ_APP_SECRET、QQ_TOKEN、QQ_SANDBOX、QQ_ALLOW_FROM | |
| Matrix | MATRIX_ENABLED、MATRIX_HOMESERVER_URL、MATRIX_ACCESS_TOKEN、MATRIX_AUTOJOIN、MATRIX_ALLOW_FROM |
| MoChat | MOCHAT_ENABLED、MOCHAT_SERVER_URL、MOCHAT_TOKEN、MOCHAT_BOT_NAME、MOCHAT_ALLOW_FROM |
EMAIL_ENABLED、EMAIL_IMAP_HOST、EMAIL_IMAP_PORT、EMAIL_IMAP_USER、EMAIL_IMAP_PASSWORD、EMAIL_IMAP_TLS、EMAIL_SMTP_HOST、EMAIL_SMTP_PORT、EMAIL_SMTP_USER、EMAIL_SMTP_PASSWORD、EMAIL_SMTP_TLS、EMAIL_FROM_ADDRESS、EMAIL_POLL_INTERVAL_MS、EMAIL_ALLOW_FROM |
更多说明见 IM 接入。
日志
| 变量 | 说明 |
|---|---|
LOG_LEVEL | 日志级别,支持 debug、info、warn、error。 |
LOG_CONSOLE_ENABLED | 是否输出到控制台。 |
LOG_FILE_ENABLED | 是否输出到文件。 |
LOG_DIR | 日志目录。相对路径会解析到运行目录下。 |
LOG_MAX_SIZE_MB | 单个日志文件最大大小。 |
LOG_RETENTION_DAYS | 日志保留天数。 |
LOG_MAX_TOTAL_SIZE_MB | 日志文件总大小上限。 |
LOG_TIMEZONE | 日志文件时间使用 system 或 utc。 |
日志使用方式见 日志。
工具权限
| 变量 | 说明 |
|---|---|
ENABLE_TOOL_EDITOR_MUTATIONS | 写入工具编辑器保存/删除权限初始值。 |
ENABLE_FILE_WRITE_TOOL | 写入 write_file 工具权限初始值。 |
ENABLE_EXECUTE_COMMAND_TOOL | 写入 execute_command 工具权限初始值。 |
ALLOWED_EXEC_COMMAND_PREFIXES | 写入允许执行的命令前缀初始值。 |
A2A
| 变量 | 说明 |
|---|---|
A2A_ORG_ID / A2A_UNIT_ID | A2A 注册和发现使用的组织与单元身份,默认都是 default。 |
A2A 使用方式见 A2A。