135 lines
4.6 KiB
YAML
135 lines
4.6 KiB
YAML
# =============================================================================
|
||
# 模型选型 —— 全项目唯一允许写模型版本号的地方
|
||
# =============================================================================
|
||
#
|
||
# 三层架构:大模型按「关键时刻」分配,不按时间分配。
|
||
#
|
||
# none 纯规则。心跳、主动性判定、填充词、表情。不调用任何模型。
|
||
# low 本地小模型。生活事件、记忆压缩、事实抽取、输出初筛。
|
||
# standard 中档。投机响应的第二段、短上下文场景。
|
||
# high 旗舰。主对话、主动联系、危机场景。
|
||
#
|
||
# 一个 60 秒心跳只做四则运算(情绪衰减方程),给它模型是架构错误。
|
||
#
|
||
# 版本依据:2026-10 调研。每季度复核一次。
|
||
# =============================================================================
|
||
|
||
tiers:
|
||
# ---- 旗舰:人设浓度最高的时刻 ----
|
||
high:
|
||
provider: openai_compat
|
||
model: halogen-qwen3.8-flash-next
|
||
base_url: http://192.168.200.11:8731/v1
|
||
api_key_env: null
|
||
timeout: 60.0
|
||
temperature: 0.85
|
||
|
||
# ---- 中档:可以指向同一个模型,但配更短的上下文预算 ----
|
||
# 省钱的杠杆通常不是换更小的模型,而是少喂上下文。
|
||
standard:
|
||
provider: openai_compat
|
||
model: halogen-qwen3.8-flash-next
|
||
base_url: http://192.168.200.11:8731/v1
|
||
api_key_env: null
|
||
timeout: 40.0
|
||
temperature: 0.7
|
||
|
||
# ---- 本地小模型:后台任务的主力 ----
|
||
# 没有本地服务时,把它指向 openai_compat 的远端小模型即可。
|
||
low:
|
||
provider: openai_compat
|
||
model: halogen-qwen3.8-flash-next
|
||
base_url: http://192.168.200.11:8731/v1
|
||
api_key_env: null
|
||
timeout: 20.0
|
||
temperature: 0.4
|
||
|
||
# ---- 场景 → 档位 ----
|
||
# 改这里就能调成本结构,不用改代码。
|
||
routing:
|
||
# 对话
|
||
dialogue_main: high # 主对话台词
|
||
dialogue_followup: standard # 投机响应的第二段
|
||
proactive_message: high # 主动联系的措辞
|
||
crisis: high # 危机场景,永不降级
|
||
|
||
# 后台
|
||
life_event: low # 每天 1–4 条生活事件
|
||
memory_gist: low # 记忆压缩(量最大)
|
||
fact_extract: low # 语义事实抽取
|
||
output_guard: low # 输出校验
|
||
pattern_detect: low # 关系模式识别
|
||
|
||
# 无模型(这些写 dead 也应该是 none)
|
||
filler: none # 填充词:从状态核心查表
|
||
tick: none # 心跳:纯数学
|
||
reach_out: none # 主动性判断:纯规则
|
||
avatar_drive: none # 表情姿态:由 State 直接算
|
||
|
||
# ---- 预算 ----
|
||
# 没有预算控制的架构,在第一个月账单出来时就会崩。
|
||
budget:
|
||
daily_tokens: 2000000
|
||
warn_ratio: 0.7
|
||
hard_stop_ratio: 0.95
|
||
|
||
# =============================================================================
|
||
# 语音链路
|
||
# =============================================================================
|
||
|
||
# ---- 主 ASR ----
|
||
# 内部契约是「事件流」:partial → final。
|
||
# 如果你的后端只有「文件进→文本出」,它会以 supports_partial=False 降级,
|
||
# 端点检测会退化成纯能量判定(会抢话)。
|
||
asr:
|
||
provider: scripted # 起步用 scripted;生产换流式后端
|
||
model: qwen3-asr-1.7b
|
||
language: zh
|
||
|
||
# ---- 副语言旁路 ----
|
||
# 独立于主 ASR。2026-10 仍不存在「中文流式识别 + 结构化副语言」的单一模型。
|
||
# 关掉它,伴侣就不知道用户笑了,只知道看到了「哈哈」两个字。
|
||
paralinguistic:
|
||
provider: scripted
|
||
model: sensevoice-small
|
||
window_ms: 1500
|
||
enabled: true
|
||
|
||
# ---- TTS ----
|
||
# 注意 provider 能力差异:
|
||
# silence / cosyvoice → 支持 speech_tags([laughter] [breath])
|
||
# openai_compat → 不支持,标签会被剥掉并上报降级
|
||
tts:
|
||
provider: silence
|
||
model: fun-cosyvoice3-0.5b
|
||
voice_ref: null # 零样本克隆参考音频,3–10 秒
|
||
sample_rate: 16000
|
||
|
||
# ---- VAD ----
|
||
# Silero v6 只吃 16kHz。改 sample_rate 前先确认模型支持。
|
||
vad:
|
||
provider: energy # 起步用 energy;生产换 silero
|
||
model: silero-v6
|
||
sample_rate: 16000
|
||
|
||
# ---- 轮次判定 ----
|
||
# 两段式的第二段:判断「说完了没」,不是「有没有声音」。
|
||
turn:
|
||
provider: heuristic
|
||
silence_min_ms: 150
|
||
silence_hard_end_ms: 800 # 伴侣场景建议 700–900,宁可多等不抢话
|
||
|
||
# ---- Embedding ----
|
||
embedding:
|
||
provider: openai_compat
|
||
model: qwen3-embedding-0.6b
|
||
base_url: null
|
||
api_key_env: null
|
||
dim: 1024
|
||
|
||
# ---- 形象 ----
|
||
avatar:
|
||
route: vrm
|
||
renderer: three.js
|
||
lipsync: envelope
|