1 line
34 KiB
JSON
1 line
34 KiB
JSON
{"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"}}}} |