Files

1 line
34 KiB
JSON
Raw Permalink 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.
{"repo": "aidenofficial/mumble-ai", "files": {"config.example.yaml": {"cf1685dfeb28d15e83a1f29ed692d4a6e6d0f85e": {"t": 1785746311.2823315, "n": 3280, "h": "cbeafb40bb20f22b", "c": "# 复制为 config.yaml 后按需修改。API key 一律走环境变量(见 .env.example),不要写在这里。\n\nmumble:\n host: mumble.example.com # Mumble 服务器地址\n port: 64738\n username: 豆沙 # bot 在频道里的名字(Web 界面标题也取这个)\n # password: 走 MUMBLE_PASSWORD 环境变量\n certfile: ./certs/bot.pem # 客户端证书(决定身份;务必固定挂载)。无则留空走游客\n channel: \"\" # 要加入的频道名;空=根频道\n tls_verify: false # 默认不校验服务器证书:Mumble 用证书做身份(TOFU)、服务器普遍自签,开校验反而连不上。\n # 若你的服务器用 CA 签发的证书(如 Let's Encrypt),可设 true 开启校验。\n tls_ca_certs: \"\" # 可选:自定义 CA 证书(PEM)路径;空=用系统默认 CA。仅 tls_verify=true 时生效。\n\ndashscope:\n model: paraformer-realtime-v2\n sample_rate: 16000 # paraformer 只吃 8k/16k;Mumble 48k 会被重采样到这里\n region: cn # cn=国内(百炼控制台的 key) / intl=国际站(Singapore,境外部署多用这个)\n\nfish:\n voice_id: \"\" # 预先克隆好的角色音 id(用你有权使用的参考音)\n model: s2-pro\n output_format: pcm # 取 pcm\n sample_rate: 44100 # Fish PCM 仅支持 8000/16000/24000/32000/44100(不支持 48000);speaker 会重采样到 48k 注入 Mumble\n\nopenrouter: # 主 LLM:经 OpenRouter 路由 deepseek-v4-flash 到快速 Western provider\n base_url: https://openrouter.ai/api/v1\n model: deepseek/deepseek-v4-flash\n tool_model: \"\" # 空=同 model;可设 deepseek/deepseek-v4-pro 让工具/复杂路径用更强模型\n provider_order: [fireworks, deepinfra, parasail, novita] # TTFT 优先的有序回退\n provider_sort: \"\" # 留空=按上面 order;或设 throughput/latency/price 让 OpenRouter 自动排\n allow_fallbacks: true\n title: mumble-ai-bot\n\ndeepseek: # 仅 llm_provider=deepseek 时用(直连,受中国管辖+审查)\n base_url: https://api.deepseek.com\n model: deepseek-v4-flash # 非思考档(代码里强制 thinking disabled)\n\ngemini:\n model: gemini-3.5-flash # 兜底\n thinking_level: low # 交互路径关思考(low/minimal)\n\nbehavior:\n window_sec: 3600 # 滚动缓冲窗口(秒)\n cooldown_sec: 180 # 两次主动插话最小间隔\n silence_gate_sec: 2.5 # 主动插话需的最短静音\n stt_close_silence_sec: 0.8 # 静音多久关闭 STT 流(成本门控 + 句界)\n transmit_active_sec: 0.3 # 判定\"有人正在传输\"的最近活跃阈值\n wake_regex: '(?:嘿|哎|喂)?\\s*豆沙' # 唤醒短语(独特、别撞手机助手);可选问候前缀 + 名字。改名记得同步改这里\n wake_fuzzy_terms: [] # 模糊兜底候选词(如 [\"豆沙\"]);空=关闭模糊\n wake_fuzzy_threshold: 80 # rapidfuzz 模糊匹配阈值(0-100),<=0 关闭模糊\n wake_followup_timeout_sec: 4 # 唤醒后没带内容时,等下一句的超时\n proactive_enabled: true\n proactive_tick_sec: 1.0 # 主动插话评估频率\n unanswered_question_sec: 8 # 问号后多少秒无人接话视为\"未应答\"\n llm_provider: openrouter # 主用哪个:openrouter(默认)/ deepseek 直连 / gemini\n llm_fallback: gemini # 主路失败自动落兜底(需配 GEMINI_API_KEY 才生效;留空关闭)\n data_dir: ./data # SQLite 等持久化目录\n admin_keys: [] # 管理员稳定键白名单(reg:<id> 或 cert hash;用 !whoami 获取)\n command_prefix: \",\" # 文字命令前缀(避开点歌bot 等 ! 命令的冲突)\n persona: \"你是频道里一个有点意思的伙伴,说话自然、简短、有点性格,别像客服。\"\n announce_on_join: \"(豆沙已上线,会转写本频道对话;说「豆沙」可以叫我,发 ,pause 可暂停转写。)\"\n\nweb: # Web 管理界面\n enabled: true\n host: 0.0.0.0 # 容器内绑全网卡;对外是否可达由 compose 端口映射决定\n port: 8080\n # password: 走 WEB_PASSWORD 环境变量;设了才要求登录(LAN 暴露务必设)\n\n# 可被 AI 操作的外部 bot(通过给频道发它的文字命令)。{query} 会被替换为歌名/参数。\n# AI 用 music_control 工具调用:先确认你的点歌 bot 真实命令前缀再改这里。\nexternal_bots:\n music:\n commands:\n play: \"!play {query}\"\n skip: \"!skip\"\n next: \"!skip\"\n pause: \"!pause\"\n resume: \"!resume\"\n stop: \"!stop\"\n volume: \"!volume {query}\"\n"}, "b3555dbe7f2c97ea7d3869efbc08edb7c86d0efb": {"t": 1785761634.0525415, "n": 3239, "h": "ac142124fda989b9", "c": "# 复制为 config.yaml 后按需修改。API key 一律走环境变量(见 .env.example),不要写在这里。\n\nmumble:\n host: mumble.example.com # Mumble 服务器地址\n port: 64738\n username: 豆沙 # bot 在频道里的名字(Web 界面标题也取这个)\n # password: 走 MUMBLE_PASSWORD 环境变量\n certfile: ./certs/bot.pem # 客户端证书(决定身份;务必固定挂载)。无则留空走游客\n channel: \"\" # 要加入的频道名;空=根频道\n tls_verify: false # 默认不校验服务器证书:Mumble 用证书做身份(TOFU)、服务器普遍自签,开校验反而连不上。\n # 若你的服务器用 CA 签发的证书(如 Let's Encrypt),可设 true 开启校验。\n tls_ca_certs: \"\" # 可选:自定义 CA 证书(PEM)路径;空=用系统默认 CA。仅 tls_verify=true 时生效。\n\ndashscope:\n model: paraformer-realtime-v2\n sample_rate: 16000 # paraformer 只吃 8k/16k;Mumble 48k 会被重采样到这里\n region: cn # cn=国内(百炼控制台的 key) / intl=国际站(Singapore,境外部署多用这个)\n\nfish:\n voice_id: \"\" # 预先克隆好的角色音 id(用你有权使用的参考音)\n model: s2-pro\n output_format: pcm # 取 pcm\n sample_rate: 48000 # 请求直接输出 48k(免重采样);若实际变调,改这里让 speaker 重采样\n\nopenrouter: # 主 LLM:经 OpenRouter 路由 deepseek-v4-flash 到快速 Western provider\n base_url: https://openrouter.ai/api/v1\n model: deepseek/deepseek-v4-flash\n tool_model: \"\" # 空=同 model;可设 deepseek/deepseek-v4-pro 让工具/复杂路径用更强模型\n provider_order: [fireworks, deepinfra, parasail, novita] # TTFT 优先的有序回退\n provider_sort: \"\" # 留空=按上面 order;或设 throughput/latency/price 让 OpenRouter 自动排\n allow_fallbacks: true\n title: mumble-ai-bot\n\ndeepseek: # 仅 llm_provider=deepseek 时用(直连,受中国管辖+审查)\n base_url: https://api.deepseek.com\n model: deepseek-v4-flash # 非思考档(代码里强制 thinking disabled)\n\ngemini:\n model: gemini-3.5-flash # 兜底\n thinking_level: low # 交互路径关思考(low/minimal)\n\nbehavior:\n window_sec: 3600 # 滚动缓冲窗口(秒)\n cooldown_sec: 180 # 两次主动插话最小间隔\n silence_gate_sec: 2.5 # 主动插话需的最短静音\n stt_close_silence_sec: 0.8 # 静音多久关闭 STT 流(成本门控 + 句界)\n transmit_active_sec: 0.3 # 判定\"有人正在传输\"的最近活跃阈值\n wake_regex: '(?:嘿|哎|喂)?\\s*豆沙' # 唤醒短语(独特、别撞手机助手);可选问候前缀 + 名字。改名记得同步改这里\n wake_fuzzy_terms: [] # 模糊兜底候选词(如 [\"豆沙\"]);空=关闭模糊\n wake_fuzzy_threshold: 80 # rapidfuzz 模糊匹配阈值(0-100),<=0 关闭模糊\n wake_followup_timeout_sec: 4 # 唤醒后没带内容时,等下一句的超时\n proactive_enabled: true\n proactive_tick_sec: 1.0 # 主动插话评估频率\n unanswered_question_sec: 8 # 问号后多少秒无人接话视为\"未应答\"\n llm_provider: openrouter # 主用哪个:openrouter(默认)/ deepseek 直连 / gemini\n llm_fallback: gemini # 主路失败自动落兜底(需配 GEMINI_API_KEY 才生效;留空关闭)\n data_dir: ./data # SQLite 等持久化目录\n admin_keys: [] # 管理员稳定键白名单(reg:<id> 或 cert hash;用 !whoami 获取)\n command_prefix: \",\" # 文字命令前缀(避开点歌bot 等 ! 命令的冲突)\n persona: \"你是频道里一个有点意思的伙伴,说话自然、简短、有点性格,别像客服。\"\n announce_on_join: \"(豆沙已上线,会转写本频道对话;说「豆沙」可以叫我,发 ,pause 可暂停转写。)\"\n\nweb: # Web 管理界面\n enabled: true\n host: 0.0.0.0 # 容器内绑全网卡;对外是否可达由 compose 端口映射决定\n port: 8080\n # password: 走 WEB_PASSWORD 环境变量;设了才要求登录(LAN 暴露务必设)\n\n# 可被 AI 操作的外部 bot(通过给频道发它的文字命令)。{query} 会被替换为歌名/参数。\n# AI 用 music_control 工具调用:先确认你的点歌 bot 真实命令前缀再改这里。\nexternal_bots:\n music:\n commands:\n play: \"!play {query}\"\n skip: \"!skip\"\n next: \"!skip\"\n pause: \"!pause\"\n resume: \"!resume\"\n stop: \"!stop\"\n volume: \"!volume {query}\"\n"}, "cad3b6557fc3ed74263d2b275b3bea71a65a828f": {"t": 1785761637.1120064, "n": 2995, "h": "ea976bd1536fdfc2", "c": "# 复制为 config.yaml 后按需修改。API key 一律走环境变量(见 .env.example),不要写在这里。\n\nmumble:\n host: mumble.example.com # Mumble 服务器地址\n port: 64738\n username: 豆沙 # bot 在频道里的名字(Web 界面标题也取这个)\n # password: 走 MUMBLE_PASSWORD 环境变量\n certfile: ./certs/bot.pem # 客户端证书(决定身份;务必固定挂载)。无则留空走游客\n channel: \"\" # 要加入的频道名;空=根频道\n\ndashscope:\n model: paraformer-realtime-v2\n sample_rate: 16000 # paraformer 只吃 8k/16k;Mumble 48k 会被重采样到这里\n region: cn # cn=国内(百炼控制台的 key) / intl=国际站(Singapore,境外部署多用这个)\n\nfish:\n voice_id: \"\" # 预先克隆好的角色音 id(用你有权使用的参考音)\n model: s2-pro\n output_format: pcm # 取 pcm\n sample_rate: 48000 # 请求直接输出 48k(免重采样);若实际变调,改这里让 speaker 重采样\n\nopenrouter: # 主 LLM:经 OpenRouter 路由 deepseek-v4-flash 到快速 Western provider\n base_url: https://openrouter.ai/api/v1\n model: deepseek/deepseek-v4-flash\n tool_model: \"\" # 空=同 model;可设 deepseek/deepseek-v4-pro 让工具/复杂路径用更强模型\n provider_order: [fireworks, deepinfra, parasail, novita] # TTFT 优先的有序回退\n provider_sort: \"\" # 留空=按上面 order;或设 throughput/latency/price 让 OpenRouter 自动排\n allow_fallbacks: true\n title: mumble-ai-bot\n\ndeepseek: # 仅 llm_provider=deepseek 时用(直连,受中国管辖+审查)\n base_url: https://api.deepseek.com\n model: deepseek-v4-flash # 非思考档(代码里强制 thinking disabled)\n\ngemini:\n model: gemini-3.5-flash # 兜底\n thinking_level: low # 交互路径关思考(low/minimal)\n\nbehavior:\n window_sec: 3600 # 滚动缓冲窗口(秒)\n cooldown_sec: 180 # 两次主动插话最小间隔\n silence_gate_sec: 2.5 # 主动插话需的最短静音\n stt_close_silence_sec: 0.8 # 静音多久关闭 STT 流(成本门控 + 句界)\n transmit_active_sec: 0.3 # 判定\"有人正在传输\"的最近活跃阈值\n wake_regex: '(?:嘿|哎|喂)?\\s*豆沙' # 唤醒短语(独特、别撞手机助手);可选问候前缀 + 名字。改名记得同步改这里\n wake_fuzzy_terms: [] # 模糊兜底候选词(如 [\"豆沙\"]);空=关闭模糊\n wake_fuzzy_threshold: 80 # rapidfuzz 模糊匹配阈值(0-100),<=0 关闭模糊\n wake_followup_timeout_sec: 4 # 唤醒后没带内容时,等下一句的超时\n proactive_enabled: true\n proactive_tick_sec: 1.0 # 主动插话评估频率\n unanswered_question_sec: 8 # 问号后多少秒无人接话视为\"未应答\"\n llm_provider: openrouter # 主用哪个:openrouter(默认)/ deepseek 直连 / gemini\n llm_fallback: gemini # 主路失败自动落兜底(需配 GEMINI_API_KEY 才生效;留空关闭)\n data_dir: ./data # SQLite 等持久化目录\n admin_keys: [] # 管理员稳定键白名单(reg:<id> 或 cert hash;用 !whoami 获取)\n command_prefix: \",\" # 文字命令前缀(避开点歌bot 等 ! 命令的冲突)\n persona: \"你是频道里一个有点意思的伙伴,说话自然、简短、有点性格,别像客服。\"\n announce_on_join: \"(豆沙已上线,会转写本频道对话;说「豆沙」可以叫我,发 ,pause 可暂停转写。)\"\n\nweb: # Web 管理界面\n enabled: true\n host: 0.0.0.0 # 容器内绑全网卡;对外是否可达由 compose 端口映射决定\n port: 8080\n # password: 走 WEB_PASSWORD 环境变量;设了才要求登录(LAN 暴露务必设)\n\n# 可被 AI 操作的外部 bot(通过给频道发它的文字命令)。{query} 会被替换为歌名/参数。\n# AI 用 music_control 工具调用:先确认你的点歌 bot 真实命令前缀再改这里。\nexternal_bots:\n music:\n commands:\n play: \"!play {query}\"\n skip: \"!skip\"\n next: \"!skip\"\n pause: \"!pause\"\n resume: \"!resume\"\n stop: \"!stop\"\n volume: \"!volume {query}\"\n"}, "055e08be75456d8a15df41ebab94346b08615c29": {"t": 1785761640.543448, "n": 2983, "h": "c1c4637648cbc5f9", "c": "# 复制为 config.yaml 后按需修改。API key 一律走环境变量(见 .env.example),不要写在这里。\n\nmumble:\n host: mumble.example.com # Mumble 服务器地址\n port: 64738\n username: 小特 # bot 在频道里的名字\n # password: 走 MUMBLE_PASSWORD 环境变量\n certfile: ./certs/bot.pem # 客户端证书(决定身份;务必固定挂载)。无则留空走游客\n channel: \"\" # 要加入的频道名;空=根频道\n\ndashscope:\n model: paraformer-realtime-v2\n sample_rate: 16000 # paraformer 只吃 8k/16k;Mumble 48k 会被重采样到这里\n region: cn # cn=国内(百炼控制台的 key) / intl=国际站(Singapore,境外部署多用这个)\n\nfish:\n voice_id: \"\" # 预先克隆好的角色音 id(用你有权使用的参考音)\n model: s2-pro\n output_format: pcm # 取 pcm\n sample_rate: 48000 # 请求直接输出 48k(免重采样);若实际变调,改这里让 speaker 重采样\n\nopenrouter: # 主 LLM:经 OpenRouter 路由 deepseek-v4-flash 到快速 Western provider\n base_url: https://openrouter.ai/api/v1\n model: deepseek/deepseek-v4-flash\n tool_model: \"\" # 空=同 model;可设 deepseek/deepseek-v4-pro 让工具/复杂路径用更强模型\n provider_order: [fireworks, deepinfra, parasail, novita] # TTFT 优先的有序回退\n provider_sort: \"\" # 留空=按上面 order;或设 throughput/latency/price 让 OpenRouter 自动排\n allow_fallbacks: true\n title: mumble-ai-bot\n\ndeepseek: # 仅 llm_provider=deepseek 时用(直连,受中国管辖+审查)\n base_url: https://api.deepseek.com\n model: deepseek-v4-flash # 非思考档(代码里强制 thinking disabled)\n\ngemini:\n model: gemini-3.5-flash # 兜底\n thinking_level: low # 交互路径关思考(low/minimal)\n\nbehavior:\n window_sec: 3600 # 滚动缓冲窗口(秒)\n cooldown_sec: 180 # 两次主动插话最小间隔\n silence_gate_sec: 2.5 # 主动插话需的最短静音\n stt_close_silence_sec: 0.8 # 静音多久关闭 STT 流(成本门控 + 句界)\n transmit_active_sec: 0.3 # 判定\"有人正在传输\"的最近活跃阈值\n wake_regex: '(?:嘿|哎|喂)?\\s*(?:小特|特特)' # 唤醒短语(独特、别撞手机助手);可选问候前缀 + 名字\n wake_fuzzy_terms: [] # 模糊兜底候选词(如 [\"小特\",\"特特\"]);空=关闭模糊\n wake_fuzzy_threshold: 80 # rapidfuzz 模糊匹配阈值(0-100),<=0 关闭模糊\n wake_followup_timeout_sec: 4 # 唤醒后没带内容时,等下一句的超时\n proactive_enabled: true\n proactive_tick_sec: 1.0 # 主动插话评估频率\n unanswered_question_sec: 8 # 问号后多少秒无人接话视为\"未应答\"\n llm_provider: openrouter # 主用哪个:openrouter(默认)/ deepseek 直连 / gemini\n llm_fallback: gemini # 主路失败自动落兜底(需配 GEMINI_API_KEY 才生效;留空关闭)\n data_dir: ./data # SQLite 等持久化目录\n admin_keys: [] # 管理员稳定键白名单(reg:<id> 或 cert hash;用 !whoami 获取)\n command_prefix: \",\" # 文字命令前缀(避开点歌bot 等 ! 命令的冲突)\n persona: \"你是频道里一个有点意思的伙伴,说话自然、简短、有点性格,别像客服。\"\n announce_on_join: \"(小特已上线,会转写本频道对话;说「小特」可以叫我,发 ,pause 可暂停转写。)\"\n\nweb: # Web 管理界面\n enabled: true\n host: 0.0.0.0 # 容器内绑全网卡;对外是否可达由 compose 端口映射决定\n port: 8080\n # password: 走 WEB_PASSWORD 环境变量;设了才要求登录(LAN 暴露务必设)\n\n# 可被 AI 操作的外部 bot(通过给频道发它的文字命令)。{query} 会被替换为歌名/参数。\n# AI 用 music_control 工具调用:先确认你的点歌 bot 真实命令前缀再改这里。\nexternal_bots:\n music:\n commands:\n play: \"!play {query}\"\n skip: \"!skip\"\n next: \"!skip\"\n pause: \"!pause\"\n resume: \"!resume\"\n stop: \"!stop\"\n volume: \"!volume {query}\"\n"}, "9a889b685b3d793da9398c4188616dad1e1a4dbc": {"t": 1785761648.6304884, "n": 2796, "h": "bf33fca8c4ebbb45", "c": "# 复制为 config.yaml 后按需修改。API key 一律走环境变量(见 .env.example),不要写在这里。\n\nmumble:\n host: mumble.example.com # Mumble 服务器地址\n port: 64738\n username: 小特 # bot 在频道里的名字\n # password: 走 MUMBLE_PASSWORD 环境变量\n certfile: ./certs/bot.pem # 客户端证书(决定身份;务必固定挂载)。无则留空走游客\n channel: \"\" # 要加入的频道名;空=根频道\n\ndashscope:\n model: paraformer-realtime-v2\n sample_rate: 16000 # paraformer 只吃 8k/16k;Mumble 48k 会被重采样到这里\n region: cn # cn=国内(百炼控制台的 key) / intl=国际站(Singapore,境外部署多用这个)\n\nfish:\n voice_id: \"\" # 预先克隆好的角色音 id(用你有权使用的参考音)\n model: s2-pro\n output_format: pcm # 取 pcm\n sample_rate: 48000 # 请求直接输出 48k(免重采样);若实际变调,改这里让 speaker 重采样\n\nopenrouter: # 主 LLM:经 OpenRouter 路由 deepseek-v4-flash 到快速 Western provider\n base_url: https://openrouter.ai/api/v1\n model: deepseek/deepseek-v4-flash\n tool_model: \"\" # 空=同 model;可设 deepseek/deepseek-v4-pro 让工具/复杂路径用更强模型\n provider_order: [fireworks, deepinfra, parasail, novita] # TTFT 优先的有序回退\n provider_sort: \"\" # 留空=按上面 order;或设 throughput/latency/price 让 OpenRouter 自动排\n allow_fallbacks: true\n title: mumble-ai-bot\n\ndeepseek: # 仅 llm_provider=deepseek 时用(直连,受中国管辖+审查)\n base_url: https://api.deepseek.com\n model: deepseek-v4-flash # 非思考档(代码里强制 thinking disabled)\n\ngemini:\n model: gemini-3.5-flash # 兜底\n thinking_level: low # 交互路径关思考(low/minimal)\n\nbehavior:\n window_sec: 3600 # 滚动缓冲窗口(秒)\n cooldown_sec: 180 # 两次主动插话最小间隔\n silence_gate_sec: 2.5 # 主动插话需的最短静音\n stt_close_silence_sec: 0.8 # 静音多久关闭 STT 流(成本门控 + 句界)\n transmit_active_sec: 0.3 # 判定\"有人正在传输\"的最近活跃阈值\n wake_regex: '(?:嘿|哎|喂)?\\s*(?:小特|特特)' # 唤醒短语(独特、别撞手机助手);可选问候前缀 + 名字\n wake_fuzzy_terms: [] # 模糊兜底候选词(如 [\"小特\",\"特特\"]);空=关闭模糊\n wake_fuzzy_threshold: 80 # rapidfuzz 模糊匹配阈值(0-100),<=0 关闭模糊\n wake_followup_timeout_sec: 4 # 唤醒后没带内容时,等下一句的超时\n proactive_enabled: true\n proactive_tick_sec: 1.0 # 主动插话评估频率\n unanswered_question_sec: 8 # 问号后多少秒无人接话视为\"未应答\"\n llm_provider: openrouter # 主用哪个:openrouter(默认)/ deepseek 直连 / gemini\n llm_fallback: gemini # 主路失败自动落兜底(需配 GEMINI_API_KEY 才生效;留空关闭)\n data_dir: ./data # SQLite 等持久化目录\n admin_keys: [] # 管理员稳定键白名单(reg:<id> 或 cert hash;用 !whoami 获取)\n command_prefix: \",\" # 文字命令前缀(避开点歌bot 等 ! 命令的冲突)\n persona: \"你是频道里一个有点意思的伙伴,说话自然、简短、有点性格,别像客服。\"\n announce_on_join: \"(小特已上线,会转写本频道对话;说「小特」可以叫我,发 ,pause 可暂停转写。)\"\n\n# 可被 AI 操作的外部 bot(通过给频道发它的文字命令)。{query} 会被替换为歌名/参数。\n# AI 用 music_control 工具调用:先确认你的点歌 bot 真实命令前缀再改这里。\nexternal_bots:\n music:\n commands:\n play: \"!play {query}\"\n skip: \"!skip\"\n next: \"!skip\"\n pause: \"!pause\"\n resume: \"!resume\"\n stop: \"!stop\"\n volume: \"!volume {query}\"\n"}, "5991784533b19f93f078fb9f3f2bc42c62e1fb84": {"t": 1785761649.8449416, "n": 2715, "h": "675e455008be29cb", "c": "# 复制为 config.yaml 后按需修改。API key 一律走环境变量(见 .env.example),不要写在这里。\n\nmumble:\n host: mumble.example.com # Mumble 服务器地址\n port: 64738\n username: 小特 # bot 在频道里的名字\n # password: 走 MUMBLE_PASSWORD 环境变量\n certfile: ./certs/bot.pem # 客户端证书(决定身份;务必固定挂载)。无则留空走游客\n channel: \"\" # 要加入的频道名;空=根频道\n\ndashscope:\n model: paraformer-realtime-v2\n sample_rate: 16000 # paraformer 只吃 8k/16k;Mumble 48k 会被重采样到这里\n\nfish:\n voice_id: \"\" # 预先克隆好的角色音 id(用你有权使用的参考音)\n model: s2-pro\n output_format: pcm # 取 pcm\n sample_rate: 48000 # 请求直接输出 48k(免重采样);若实际变调,改这里让 speaker 重采样\n\nopenrouter: # 主 LLM:经 OpenRouter 路由 deepseek-v4-flash 到快速 Western provider\n base_url: https://openrouter.ai/api/v1\n model: deepseek/deepseek-v4-flash\n tool_model: \"\" # 空=同 model;可设 deepseek/deepseek-v4-pro 让工具/复杂路径用更强模型\n provider_order: [fireworks, deepinfra, parasail, novita] # TTFT 优先的有序回退\n provider_sort: \"\" # 留空=按上面 order;或设 throughput/latency/price 让 OpenRouter 自动排\n allow_fallbacks: true\n title: mumble-ai-bot\n\ndeepseek: # 仅 llm_provider=deepseek 时用(直连,受中国管辖+审查)\n base_url: https://api.deepseek.com\n model: deepseek-v4-flash # 非思考档(代码里强制 thinking disabled)\n\ngemini:\n model: gemini-3.5-flash # 兜底\n thinking_level: low # 交互路径关思考(low/minimal)\n\nbehavior:\n window_sec: 3600 # 滚动缓冲窗口(秒)\n cooldown_sec: 180 # 两次主动插话最小间隔\n silence_gate_sec: 2.5 # 主动插话需的最短静音\n stt_close_silence_sec: 0.8 # 静音多久关闭 STT 流(成本门控 + 句界)\n transmit_active_sec: 0.3 # 判定\"有人正在传输\"的最近活跃阈值\n wake_regex: '(?:嘿|哎|喂)?\\s*(?:小特|特特)' # 唤醒短语(独特、别撞手机助手);可选问候前缀 + 名字\n wake_fuzzy_terms: [] # 模糊兜底候选词(如 [\"小特\",\"特特\"]);空=关闭模糊\n wake_fuzzy_threshold: 80 # rapidfuzz 模糊匹配阈值(0-100),<=0 关闭模糊\n wake_followup_timeout_sec: 4 # 唤醒后没带内容时,等下一句的超时\n proactive_enabled: true\n proactive_tick_sec: 1.0 # 主动插话评估频率\n unanswered_question_sec: 8 # 问号后多少秒无人接话视为\"未应答\"\n llm_provider: openrouter # 主用哪个:openrouter(默认)/ deepseek 直连 / gemini\n llm_fallback: gemini # 主路失败自动落兜底(需配 GEMINI_API_KEY 才生效;留空关闭)\n data_dir: ./data # SQLite 等持久化目录\n admin_keys: [] # 管理员稳定键白名单(reg:<id> 或 cert hash;用 !whoami 获取)\n command_prefix: \",\" # 文字命令前缀(避开点歌bot 等 ! 命令的冲突)\n persona: \"你是频道里一个有点意思的伙伴,说话自然、简短、有点性格,别像客服。\"\n announce_on_join: \"(小特已上线,会转写本频道对话;说「小特」可以叫我,发 ,pause 可暂停转写。)\"\n\n# 可被 AI 操作的外部 bot(通过给频道发它的文字命令)。{query} 会被替换为歌名/参数。\n# AI 用 music_control 工具调用:先确认你的点歌 bot 真实命令前缀再改这里。\nexternal_bots:\n music:\n commands:\n play: \"!play {query}\"\n skip: \"!skip\"\n next: \"!skip\"\n pause: \"!pause\"\n resume: \"!resume\"\n stop: \"!stop\"\n volume: \"!volume {query}\"\n"}, "c9de22fbb5d7178d5235b05331a7f09935822fdb": {"t": 1785761651.2719443, "n": 2657, "h": "fcdb843851159d3a", "c": "# 复制为 config.yaml 后按需修改。API key 一律走环境变量(见 .env.example),不要写在这里。\n\nmumble:\n host: mumble.example.com # Mumble 服务器地址\n port: 64738\n username: 小特 # bot 在频道里的名字\n # password: 走 MUMBLE_PASSWORD 环境变量\n certfile: ./certs/bot.pem # 客户端证书(决定身份;务必固定挂载)。无则留空走游客\n channel: \"\" # 要加入的频道名;空=根频道\n\ndashscope:\n model: paraformer-realtime-v2\n sample_rate: 16000 # paraformer 只吃 8k/16k;Mumble 48k 会被重采样到这里\n\nfish:\n voice_id: \"\" # 预先克隆好的角色音 id(用你有权使用的参考音)\n model: s2-pro\n output_format: pcm # 取 pcm\n sample_rate: 48000 # 请求直接输出 48k(免重采样);若实际变调,改这里让 speaker 重采样\n\nopenrouter: # 主 LLM:经 OpenRouter 路由 deepseek-v4-flash 到快速 Western provider\n base_url: https://openrouter.ai/api/v1\n model: deepseek/deepseek-v4-flash\n tool_model: \"\" # 空=同 model;可设 deepseek/deepseek-v4-pro 让工具/复杂路径用更强模型\n provider_order: [fireworks, deepinfra, parasail, novita] # TTFT 优先的有序回退\n provider_sort: \"\" # 留空=按上面 order;或设 throughput/latency/price 让 OpenRouter 自动排\n allow_fallbacks: true\n title: mumble-ai-bot\n\ndeepseek: # 仅 llm_provider=deepseek 时用(直连,受中国管辖+审查)\n base_url: https://api.deepseek.com\n model: deepseek-v4-flash # 非思考档(代码里强制 thinking disabled)\n\ngemini:\n model: gemini-3.5-flash # 兜底\n thinking_level: low # 交互路径关思考(low/minimal)\n\nbehavior:\n window_sec: 3600 # 滚动缓冲窗口(秒)\n cooldown_sec: 180 # 两次主动插话最小间隔\n silence_gate_sec: 2.5 # 主动插话需的最短静音\n stt_close_silence_sec: 0.8 # 静音多久关闭 STT 流(成本门控 + 句界)\n transmit_active_sec: 0.3 # 判定\"有人正在传输\"的最近活跃阈值\n wake_regex: '(?:嘿|哎|喂)?\\s*(?:小特|特特)' # 唤醒短语(独特、别撞手机助手);可选问候前缀 + 名字\n wake_fuzzy_terms: [] # 模糊兜底候选词(如 [\"小特\",\"特特\"]);空=关闭模糊\n wake_fuzzy_threshold: 80 # rapidfuzz 模糊匹配阈值(0-100),<=0 关闭模糊\n wake_followup_timeout_sec: 4 # 唤醒后没带内容时,等下一句的超时\n proactive_enabled: true\n proactive_tick_sec: 1.0 # 主动插话评估频率\n unanswered_question_sec: 8 # 问号后多少秒无人接话视为\"未应答\"\n llm_provider: openrouter # 主用哪个:openrouter(默认)/ deepseek 直连 / gemini\n llm_fallback: gemini # 主路失败自动落兜底(需配 GEMINI_API_KEY 才生效;留空关闭)\n data_dir: ./data # SQLite 等持久化目录\n admin_keys: [] # 管理员稳定键白名单(reg:<id> 或 cert hash;用 !whoami 获取)\n persona: \"你是频道里一个有点意思的伙伴,说话自然、简短、有点性格,别像客服。\"\n announce_on_join: \"(小特已上线,会转写本频道对话;说「小特」可以叫我,发 !pause 可暂停转写。)\"\n\n# 可被 AI 操作的外部 bot(通过给频道发它的文字命令)。{query} 会被替换为歌名/参数。\n# AI 用 music_control 工具调用:先确认你的点歌 bot 真实命令前缀再改这里。\nexternal_bots:\n music:\n commands:\n play: \"!play {query}\"\n skip: \"!skip\"\n next: \"!skip\"\n pause: \"!pause\"\n resume: \"!resume\"\n stop: \"!stop\"\n volume: \"!volume {query}\"\n"}, "f371b3e3b69a198e413aeff278effa6a1e83cee9": {"t": 1785761652.9407587, "n": 2590, "h": "402c3bdd28f713e2", "c": "# 复制为 config.yaml 后按需修改。API key 一律走环境变量(见 .env.example),不要写在这里。\n\nmumble:\n host: mumble.example.com # Mumble 服务器地址\n port: 64738\n username: 小特 # bot 在频道里的名字\n # password: 走 MUMBLE_PASSWORD 环境变量\n certfile: ./certs/bot.pem # 客户端证书(决定身份;务必固定挂载)。无则留空走游客\n channel: \"\" # 要加入的频道名;空=根频道\n\ndashscope:\n model: paraformer-realtime-v2\n sample_rate: 16000 # paraformer 只吃 8k/16k;Mumble 48k 会被重采样到这里\n\nfish:\n voice_id: \"\" # 预先克隆好的角色音 id(用你有权使用的参考音)\n model: s2-pro\n output_format: pcm # 取 pcm\n sample_rate: 48000 # 请求直接输出 48k(免重采样);若实际变调,改这里让 speaker 重采样\n\nopenrouter: # 主 LLM:经 OpenRouter 路由 deepseek-v4-flash 到快速 Western provider\n base_url: https://openrouter.ai/api/v1\n model: deepseek/deepseek-v4-flash\n tool_model: \"\" # 空=同 model;可设 deepseek/deepseek-v4-pro 让工具/复杂路径用更强模型\n provider_order: [fireworks, deepinfra, parasail, novita] # TTFT 优先的有序回退\n provider_sort: \"\" # 留空=按上面 order;或设 throughput/latency/price 让 OpenRouter 自动排\n allow_fallbacks: true\n title: mumble-ai-bot\n\ndeepseek: # 仅 llm_provider=deepseek 时用(直连,受中国管辖+审查)\n base_url: https://api.deepseek.com\n model: deepseek-v4-flash # 非思考档(代码里强制 thinking disabled)\n\ngemini:\n model: gemini-3.5-flash # 兜底\n thinking_level: low # 交互路径关思考(low/minimal)\n\nbehavior:\n window_sec: 3600 # 滚动缓冲窗口(秒)\n cooldown_sec: 180 # 两次主动插话最小间隔\n silence_gate_sec: 2.5 # 主动插话需的最短静音\n stt_close_silence_sec: 0.8 # 静音多久关闭 STT 流(成本门控 + 句界)\n transmit_active_sec: 0.3 # 判定\"有人正在传输\"的最近活跃阈值\n wake_regex: '(?:嘿|哎|喂)?\\s*(?:小特|特特)' # 唤醒短语(独特、别撞手机助手);可选问候前缀 + 名字\n wake_fuzzy_terms: [] # 模糊兜底候选词(如 [\"小特\",\"特特\"]);空=关闭模糊\n wake_fuzzy_threshold: 80 # rapidfuzz 模糊匹配阈值(0-100),<=0 关闭模糊\n wake_followup_timeout_sec: 4 # 唤醒后没带内容时,等下一句的超时\n proactive_enabled: true\n proactive_tick_sec: 1.0 # 主动插话评估频率\n unanswered_question_sec: 8 # 问号后多少秒无人接话视为\"未应答\"\n llm_provider: openrouter # 主用哪个:openrouter(默认)/ deepseek 直连 / gemini 兜底\n data_dir: ./data # SQLite 等持久化目录\n admin_keys: [] # 管理员稳定键白名单(reg:<id> 或 cert hash;用 !whoami 获取)\n persona: \"你是频道里一个有点意思的伙伴,说话自然、简短、有点性格,别像客服。\"\n announce_on_join: \"(小特已上线,会转写本频道对话;说「小特」可以叫我,发 !pause 可暂停转写。)\"\n\n# 可被 AI 操作的外部 bot(通过给频道发它的文字命令)。{query} 会被替换为歌名/参数。\n# AI 用 music_control 工具调用:先确认你的点歌 bot 真实命令前缀再改这里。\nexternal_bots:\n music:\n commands:\n play: \"!play {query}\"\n skip: \"!skip\"\n next: \"!skip\"\n pause: \"!pause\"\n resume: \"!resume\"\n stop: \"!stop\"\n volume: \"!volume {query}\"\n"}}}}