Skip to content

服务器使用说明 ​

环境要求 ​

项目要求
操作系统Linux (Ubuntu 20.04+) / macOS 12+ / Windows 10+
Python3.11+
内存推荐 4GB+, 如果运行本地模型需根据模型要求配置对应内存
FFmpeg必需
Opus 编解码器必需
Playwright可选(用于电子书搜索功能)

快速部署 ​

bash
# 1. 克隆项目
git clone https://github.com/nephilimbin/lingzhi.git
cd lingzhi

# 2. 创建并激活 Python 环境
conda create -n lingzhi python=3.11
conda activate lingzhi

# 3. 安装依赖
cd server
pip install -r requirements.txt

# 4. 生成开发环境 SSL 证书(开启 SSL 时需要)
bash scripts/generate_ssl_cert.sh

# 5. 配置服务参数
cp config/.server_config_example.yaml config/.server_config.yaml
# 编辑 .server_config.yaml 配置文件

# 6. 启动服务
python app.py

安装其他工具依赖 ​

bash
# 安装 FFmpeg
# Ubuntu/Debian
sudo apt update
sudo apt install ffmpeg

# macOS
brew install ffmpeg

# Windows
# 从 https://ffmpeg.org/download.html 下载并添加到环境变量 PATH
bash
# 安装 Opus 编解码器
# Ubuntu/Debian
sudo apt update
sudo apt install libopus-dev

# macOS
# 安装Homebrew(如果尚未安装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install opus

# Windows
# 从 https://opus-codec.org/downloads/ 下载并添加到环境变量 PATH

服务端点 ​

端点协议说明
/HTTP服务首页
/chat/v1/WebSocket聊天连接端点
/api/v1/healthHTTP健康检查
/api/v1/config/HTTP配置管理
/docsHTTPAPI 文档

配置文件说明 ​

配置文件位于 server/config/.server_config.yaml,以下为详细参数说明。

服务器基础配置 (server) ​

server 基础参数 ​

参数类型必要默认值说明
server.ipstring是0.0.0.0服务器监听地址,0.0.0.0 表示监听所有网卡
server.portinteger是8000服务器监听端口
server.app.titlestring否零知应用名称
server.app.descriptionstring否-应用描述
server.app.versionstring是1.0.0应用版本号,暂未做版本管理,后期会添加

SSL 配置 (server.ssl) ​

参数类型必要默认值说明
enabledboolean是true是否启用 SSL 加密连接(启用后使用 wss:// 协议)
cert_pathstring是certs/server.crtSSL 证书文件路径(相对于项目根目录)
key_pathstring是certs/server.keySSL 私钥文件路径(相对于项目根目录)
ssl_versionstring否TLSv1_2SSL 版本,可选:TLSv1_2、TLSv1_3
verify_clientboolean否false是否验证客户端证书(双向认证)
ca_cert_pathstring否certs/ca.crtCA 证书路径(仅在 verify_client 为 true 时需要)

*仅在 enabled: true 时必要

认证配置 (server.auth) ​

参数类型必要默认值说明
enabledboolean是false是否启用设备认证。如果为启用,需要先在后端配置设备及对应Token; 如果不启用,下方配置将被忽略
tokensarray是-设备 Token 列表
tokens[].tokenstring是-认证令牌
tokens[].namestring是-设备 MAC 地址(用于绑定设备)
allowed_devicesarray否-设备白名单(MAC 地址列表)

*仅在 enabled: true 时必要

Token 配置示例:

yaml
auth:
  enabled: true
  tokens:
    - token: 'your_token_here'
      name: '8a:b8:92:43:d3:de'  # 设备 MAC 地址
    - token: 'another_token'
      name: '5b:87:b1:bf:2c:f8'

代理配置 (server.proxy) ​

参数类型必要默认值说明
http_proxystring否-HTTP 代理地址
https_proxystring否-HTTPS 代理地址

WebRTC 配置 (server.webrtc) ​

参数类型必要默认值说明
ice_candidate_pool_sizeinteger否4ICE 候选池大小
ice_transport_policystring否allICE 传输策略,可选:all、relay
bundle_policystring否max-bundleBundle 策略,可选:max-bundle、max-compat、balanced
rtcp_mux_policystring否requireRTCP 复用策略,可选:require、negotiate
ice_serversarray否-ICE 服务器列表
ice_servers[].urlsarray是-STUN/TURN 服务器地址列表
ice_servers[].usernamestring否-TURN 服务器用户名
ice_servers[].credentialstring否-TURN 服务器凭证

仅在电话实时对话模式下需要配置, 这里我使用的是 Cloudflare 的 STUN/TURN 服务器,免费额度很充足。

yaml
webrtc:
  ice_servers:
    - urls:
        - 'stun:stun.cloudflare.com:3478'
        - 'turn:turn.cloudflare.com:3478?transport=udp'
        - 'turn:turn.cloudflare.com:3478?transport=tcp'
        - 'turns:turn.cloudflare.com:5349?transport=tcp'
      username: 'YOUR_TURN_USERNAME' # [TURN必填] TURN服务器用户名
        credential: 'YOUR_TURN_CREDENTIAL' # [TURN必填] TURN服务器凭证

日志配置 (log) ​

参数类型必要默认值说明
log_formatstring否-控制台日志格式
log_format_filestring否-文件日志格式
log_levelstring否DEBUG日志级别,可选:DEBUG、INFO、WARNING、ERROR
log_dirstring否log日志文件目录
log_filestring否server.log日志文件名
data_dirstring否data数据文件目录

该项参数建议不要随意改动,除非你了解这些参数的含义。对排查bug很有帮助。


对话配置 ​

参数类型必要默认值说明
tts_silent_timeout_shutdown_durationinteger否120无语音输入后断开连接的超时时间(秒)
silence_threshold_msinteger否1000VAD 静默阈值(毫秒)
dialogue_context_numinteger否20对话上下文保留条数

模型选择配置 (selected_module) ​

参数类型必要默认值说明
VADstring是SileroVAD语音活动检测模块
ASRstring是FunASR_Docker语音识别模块
LLMstring是-大语言模型模块
TTSstring是-语音合成模块
Memorystring是nomem记忆模块, 暂时不支持记忆搜索或长期记忆功能,只能调整上下文对话条数来控制对话,后期会优化完善该模块。
Intentstring是-意图识别模块,再大模型最终回复前会判断是否调用工具等。非长任务Agent功能,后期会完善该模块。
VLMstring是-视觉语言模型模块

所有具体选择或使用的模型都支持自定义,根据基类实现抽象方法即可。参数均可自行调整或配置。


ASR 语音识别配置 ​

FunASR_Docker ​

参数类型必要默认值说明
typestring是funasr_docker类型标识
nicknamestring否-显示名称
base_urlstring是ws://127.0.0.1:10095Docker 服务地址
fallback_to_wsboolean否trueWSS 失败时是否尝试 WS
model_namestring是SenseVoiceSmall模型名称

QwenASR ​

参数类型必要默认值说明
typestring是qwen类型标识
nicknamestring否-显示名称
model_namestring是gummy-realtime-v1模型名称
api_keystring是-通义千问 API Key

TTS 语音合成配置 ​

QwenTTS ​

参数类型必要默认值说明
typestring是qwen类型标识
voicestring是Cherry发音人
model_namestring是qwen3-tts-flash-realtime模型名称
api_keystring是-通义千问 API Key
base_urlstring否wss://dashscope.aliyuncs.com/api-ws/v1/realtimeAPI 地址
language_typestring否Auto语言类型
sample_rateinteger否24000采样率

EdgeTTS(免费) ​

参数类型必要默认值说明
typestring是edge类型标识
voicestring是zh-CN-XiaoxiaoNeural发音人
model_namestring否official模型名称

LLM 大语言模型配置 ​

智谱 GLM ​

参数类型必要默认值说明
typestring是zhipu类型标识
api_keystring是-智谱 API Key
model_namestring是glm-4.5模型名称
max_output_tokensinteger否8192最大输出 Token 数
temperaturefloat否0.2温度参数 (0-1)
thinking_modestring否disabled思考模式,可选:enabled、disabled
stream_modeboolean否true是否启用流式输出

Ollama(本地) ​

参数类型必要默认值说明
typestring是ollama类型标识
model_namestring是qwen2.5模型名称(需预先 ollama pull)
base_urlstring是http://localhost:11434Ollama 服务地址

Memory 记忆模块配置 ​

模块名type说明
nomemnomem不使用记忆功能(默认)

插件配置 (function_plugins) ​

音乐播放 (play_music) ​

参数类型必要默认值说明
music_dirstring是./music音乐文件存放路径
music_extarray否-音乐文件扩展名
refresh_timeinteger否300刷新列表间隔(秒)

电影搜索 (search_movie) ​

参数类型必要说明
base_urlstring是服务地址
passwordstring是访问密码

电子书搜索 (search_ebook) ​

参数类型必要说明
domainsarray是Z-Library 域名列表
emailstring是登录账号
passwordstring是登录密码

其他配置 ​

唤醒词配置 ​

参数类型必要默认值说明
enable_wakeup_words_responseboolean否true是否启用唤醒词响应
wakeup_wordsarray否-唤醒词列表
wakeup_words_notify_voicestring否-唤醒回复音频路径

退出命令 ​

参数类型必要默认值说明
cmd_exitarray否['退出', '关闭', '停止', '结束', '暂停']退出命令词列表, 可中断正在执行的任务且无任何返回结果。

模板文件 ​

参数类型必要说明
system_prompt_templatestring否系统提示词模板路径, 默认使用 server/prompts/system_prompt.txt
intent_prompt_templatestring否意图识别提示词模板路径, 默认使用 server/prompts/intent_prompt.txt

常见问题 ​

证书生成

开启 SSL 需要先生成证书,执行:

bash
bash scripts/generate_ssl_cert.sh

证书将生成在 server/certs/ 目录下。

安全提示

  1. 请勿将 .server_config.yaml 文件提交到版本控制
  2. 生产环境建议启用 SSL 和认证
  3. API Key 等敏感信息请妥善保管