Files
CyberGril/config/models.yaml
T

135 lines
4.6 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =============================================================================
# 模型选型 —— 全项目唯一允许写模型版本号的地方
# =============================================================================
#
# 三层架构:大模型按「关键时刻」分配,不按时间分配。
#
# 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