Leon 1.0.0-beta.8 配置参数详解

Leon 1.0.0-beta.8 配置参数全解:25 个环境变量的作用与必改项、.env 生成机制、语音 STT/TTS、HTTP API 与 Python 桥端口、限流与遥测开关、改完配置的三步验证方法,全部取自 .env.sample 原文并在 Ubuntu 22.04.5 LTS 实测。

LeonLeonAI 助手Node.jsPython自动化运维2026/10/28

Leon 1.0.0-beta.8 配置参数详解

目标:把 Leon 1.0.0-beta.8 的配置面讲透——全部 25 个环境变量分别管什么、哪些是必改项、语音与 HTTP API 怎么开,以及改完之后用哪三个动作确认真的生效。本文的变量清单直接取自安装目录里的 .env.sample(45 行原文件),运行时版本 1.0.0-beta.8、Node.js v20.20.2、npm 10.8.2 均于 2026-10-28 在 Ubuntu 22.04.5 LTS 的服务上读取。

一、环境信息

项目值
操作系统Ubuntu 22.04.5 LTS
Leon1.0.0-beta.8(package.json 的 version)
Node.jsv20.20.2(engines 要求 >=16.0.0)
npm10.8.2(要求 >=8.0.0)
安装目录/opt/leon
服务端口1337(HTTP + socket.io)
TCP 端口1342(Python 技能桥)
配置文件名.env(由 .env.sample 复制生成)

Leon 没有数据库,也没有多份配置文件:server、app、Python 桥、热词节点全部读同一份 .env。这带来一个直接后果——改配置 = 改 .env + 重启服务,没有热加载。

二、配置文件从哪来

安装依赖时,postinstall 会执行 scripts/setup/setup.js,它检查 .env 是否存在,不存在就以 .env.sample 为模板生成,并把随机生成的 HTTP API Key 写进去。因此:

  • 全新安装:npm install 结束后 .env 已就绪,只需按需修改变量;
  • 手工恢复:cp .env.sample .env,再补 LEON_HTTP_API_KEY(用第六节的命令生成);
  • 不要删 .env:删了之后服务仍能启动,但 HTTP API 会因为缺少密钥而拒绝 /api/query。

三、.env.sample 全文(45 行)

cat /opt/leon/.env.sample

实测回显:

# Main settings of Leon
# https://docs.getleon.ai/configuration

# Language currently used
LEON_LANG=en-US

# Server
LEON_HOST=http://localhost
LEON_PORT=1337

# Time zone (current one by default)
LEON_TIME_ZONE=

# Enable/disable after speech
LEON_AFTER_SPEECH=false

# Enable/disable Leon's speech-to-text
LEON_STT=false
# Speech-to-text provider
LEON_STT_PROVIDER=coqui-stt

# Enable/disable Leon's text-to-speech
LEON_TTS=false
# Text-to-speech provider
LEON_TTS_PROVIDER=flite

# Enable/disable skills to be available over HTTP
LEON_OVER_HTTP=true
# HTTP API key (use "npm run generate:http-api-key" to regenerate one)
LEON_HTTP_API_KEY=
# Language used for the HTTP API
LEON_HTTP_API_LANG=en-US

# Enable/disable telemetry
LEON_TELEMETRY=true

# Python TCP server
LEON_PY_TCP_SERVER_HOST=0.0.0.0
LEON_PY_TCP_SERVER_PORT=1342

# Path to the Pipfile
PIPENV_PIPFILE=bridges/python/src/Pipfile

# Path to the virtual env in .venv/
PIPENV_VENV_IN_PROJECT=true

整份文件就是 Leon 配置的全部官方参数,没有隐藏项。下文按功能分组逐项说明。

四、服务与语言

变量示例值作用改动注意
LEON_LANGen-US全局语言:核心文案、技能文案、前端文案只支持仓库已内置语种;缺失语种的表现是「界面中文、回答英文」
LEON_HOSThttp://localhost对外访问基址,用于 API 返回链接与前端请求生产必须改为真实域名或 IP,如 http://192.168.1.71:8131
LEON_PORT1337HTTP 与 socket.io 监听端口改端口要同步改反向代理与防火墙
LEON_TIME_ZONE空时区(空 = 跟随系统)定时类技能按此时区计算;服务器时区为 UTC 时必须显式设置,如 Asia/Shanghai

LEON_HOST 是最容易漏改的一项:保持 http://localhost 时,页面的 socket.io 连接在远程浏览器里会指向用户自己的机器,表现为「页面能打开、输入框一直转圈」。

五、语音:STT / TTS / 唤醒

变量默认作用
LEON_AFTER_SPEECHfalse播报完成后自动重新开启聆听(连续对话)
LEON_STTfalse语音转文字总开关
LEON_STT_PROVIDERcoqui-sttSTT 提供方
LEON_TTSfalse文字转语音总开关
LEON_TTS_PROVIDERfliteTTS 提供方

语音能力默认全关,纯文字对话不需要任何语音依赖。开启顺序必须是:先准备好提供方依赖(npm run setup:offline-stt / setup:offline-tts 会拉取离线模型),再把对应开关置 true,最后重启。反过来先开开关,启动日志会出现模型缺失告警,助手仍能对话但语音不可用。

热词唤醒不走 .env,而是独立进程 npm run wake,它同样读 LEON_HOST/LEON_PORT。唤醒节点没启动时,.env 里怎么改都不会生效。

六、HTTP API

变量示例值作用
LEON_OVER_HTTPtrue是否允许技能通过 HTTP 被调用
LEON_HTTP_API_KEY40 位十六进制串/api/query 的鉴权密钥
LEON_HTTP_API_LANGen-US通过 HTTP 调用时使用的语言

LEON_OVER_HTTP=true 只代表「允许」,不代表「已授权」:POST /api/query 必须带 X-Api-Key(值为 LEON_HTTP_API_KEY),缺失或错误一律 401。重新生成密钥用官方脚本:

cd /opt/leon
npm run generate:http-api-key

该脚本会生成新的随机串并直接覆写 .env 里的 LEON_HTTP_API_KEY,重启服务后旧密钥立即失效。生产环境建议每季度轮换一次,轮换时先通知调用方。

七、Python TCP 服务

变量示例值作用
LEON_PY_TCP_SERVER_HOST0.0.0.0TCP 监听地址
LEON_PY_TCP_SERVER_PORT1342TCP 端口,核心进程按此端口连接
PIPENV_PIPFILEbridges/python/src/PipfilePython 依赖清单路径
PIPENV_VENV_IN_PROJECTtrue虚拟环境建在项目内 .venv/

这四项的正常值不要随意改:LEON_PY_TCP_SERVER_PORT 改了必须同步修改核心侧连接配置,否则页面一直卡在「正在连接」。PIPENV_VENV_IN_PROJECT=true 让虚拟环境与代码同目录,升级时不会误伤系统 Python。

八、遥测

变量默认作用
LEON_TELEMETRYtrue是否上报匿名使用统计(技能命中次数、版本号)

内网与合规环境关闭它:改成 false 并重启,之后不会再向官方端点发请求。关闭遥测不影响任何功能,唯一区别是作者拿不到该实例的使用数据。

九、改完配置怎么验证

三个动作按成本从低到高排列,任一步不通过就停在那一层排查:

# 1. 文件层:确认变量已写入且没有拼写错误
grep -nE '^(LEON_|PIPENV_)' /opt/leon/.env

# 2. 端口层:确认 HTTP 与 TCP 都在监听
ss -lntp | grep -E ':(1337|1342)\b'

# 3. 接口层:读版本与能力
curl -s http://192.168.1.71:8131/api/v1/info

判据:

  • 第 1 步输出里 LEON_HOST 必须是真实访问地址,不能是 http://localhost;
  • 第 2 步应同时看到 1337 与 1342;只有 1337 说明 Python TCP 服务没起来,页面会一直转圈;
  • 第 3 步返回 success: true 与版本号,说明 HTTP 服务存活;此时再用 POST /api/query 验证密钥。

/api/v1/info 不校验密钥,适合做存活探针;/api/query 校验密钥,适合做集成自检。

十、参数速查表

按「改不改」分三档,便于上线前逐项核对:

变量默认值生产建议档位
LEON_HOSThttp://localhost改成真实域名/IP必改
LEON_TIME_ZONE空Asia/Shanghai(系统 UTC 时必改)必改
LEON_HTTP_API_KEY空用脚本生成,勿手填必改(用 HTTP API 时)
LEON_PORT1337冲突时才改按需
LEON_LANGen-US有多语种需求才改按需
LEON_TELEMETRYtrue内网/合规环境改 false按需
LEON_OVER_HTTPtrue不需要外部调用可关按需
LEON_HTTP_API_LANGen-US与 LEON_LANG 保持一致按需
LEON_AFTER_SPEECHfalse连续对话场景开按需
LEON_STT / LEON_STT_PROVIDERfalse / coqui-stt装好离线模型后再开语音场景
LEON_TTS / LEON_TTS_PROVIDERfalse / flite同上语音场景
LEON_PY_TCP_SERVER_HOST0.0.0.0保持默认勿动
LEON_PY_TCP_SERVER_PORT1342保持默认,改了核心侧也要改勿动
PIPENV_PIPFILEbridges/python/src/Pipfile保持默认勿动
PIPENV_VENV_IN_PROJECTtrue保持默认勿动

核对方式:逐行比对 grep -nE '^(LEON_|PIPENV_)' /opt/leon/.env 的输出与上表「必改」列,缺一项就在上线清单上记一笔。

十一、五条常见故障

  1. 页面能开、输入无响应:LEON_HOST 仍是 localhost,或 1342 端口未监听(TCP 桥没启动)。
  2. /api/query 一直 401:.env 里的 LEON_HTTP_API_KEY 为空(手工复制 .env.sample 后最容易发生),跑一次 npm run generate:http-api-key 并重启。
  3. 改了 .env 没变化:没有重启服务。Leon 只在进程启动时读取配置。
  4. 语音开关打开后启动报模型缺失:先执行 npm run setup:offline-stt 或 setup:offline-tts 拉取离线模型,再开开关。
  5. 定时提醒时间不对:LEON_TIME_ZONE 为空且系统时区是 UTC,显式设为 Asia/Shanghai 后重启。

十二、参考链接