平台使用说明

这本手册讲怎么用:后台每个按钮干什么、字段怎么填、出了问题看哪里。原理和部署见 README.md 与 deploy/README.md。

1. 三分钟理解这个系统

三种角色:

角色用什么需要 Key 吗
观众观众端首页 /、直播间 /stage?anchor=<id>不需要
运营(你)运营后台 /admin配了 ADMIN_TOKEN 时要口令
第三方/v1/* 接口每个主播一把专用 Key(推荐)或租户级 Key

2. 打开后台

浏览器访问 http://<服务器IP>:8010/admin。

3. 页签一:主播参数

改完点最下方「保存」,需要重启才生效的项会有提示(涉及音色/人设的改动建议点「重启主播」)。

换音色怎么试:在「音色」下拉里选一个(清单里没有的复刻音色点「手动输入」填 ID)→ 点「试听」→ 浏览器直接播放一句样例(首次约 2~5 秒,之后同一句走缓存几乎立刻出声)→ 满意了点「保存并重启」。 试听用的是主播同一套豆包 TTS,听到的就是观众将听到的。

字段说明建议
主播昵称观众端顶栏显示的名字短、好记,别带符号
是否启用关掉后不能开播临时下线用「停播」就行,不用改这个
人设 system主播的性格与说话方式,{name} 会被昵称替换写"你是谁 + 怎么说话 + 不许做什么",200~600 字最稳
轮次档位 runtime.profile决定空闲节奏与内容比例(kb 偏知识、chat 偏聊天)讲干货选 kb,纯聊天选 chat
音色 voice_type下拉选择(显示名称/场景);旁边「试听」用当前音色合成一句样例换音色要重启(点「保存并重启」最省事)
语速/音高0.9~1.1 之间微调即可语速 >1.15 会显得赶;当前 bidir 模式下这两项不生效,只有 http 模式才发给供应商
空闲档位(秒)讲完内容后,隔多少秒插一段兜底内容默认 8,20,45:越久内容越"轻"
同条内容冷却(分钟)同一个笑话/话题多久内不重复60 分钟比较合适
单条最长(秒)一句话最长播多久,超了会截断30 秒

4. 页签二:知识库范围

这里决定「这个主播能查到哪些资料」。两种通道:

provider走什么什么时候用
none不接知识库,纯聊天场控/陪聊型主播
fastgpt_app调 FastGPT 的只检索工作流应用(流程开始 → 知识库搜索 → 指定回复)想复用 FastGPT 里配好的检索参数、或对方已有应用
fastgpt_bridge直连 FastGPT 的向量库(只读)追求低延迟(热态 120~150ms),不经过应用层

字段:

字段说明
provider上面三选一
相似度 similarity0.4~0.55。调低召回更多但更杂,调高更准但可能查不到
召回条数 limit3~8,进 prompt 的片段数;太多会稀释重点
检索模式 search_modeembedding(语义)或 fullText(关键词)
app_id只有 fastgpt_app 需要,填 FastGPT 应用的 id
超时 ms检索超过这个时间就放弃(会退化成"我不确定")

三个按钮:

5. 页签三:本场直播

主播讲的内容来自「节目单」。

  1. 填本场主题(例如"新人最常问的十个问题")、时长、小节数(0=自动)。
  2. 点「生成节目单」→ 后台会:按主题查知识库 → 列大纲 → 逐节检索 → 逐句写稿。有进度条,通常 1~3 分钟。
  3. 生成完逐段看:可以改标题、改脚本、删段;确认没问题点「审核通过」。
  4. 「让主播用这份」→ 热加载,不需要重启;如果正在播,会从当前段接着往下讲。

要点:

6. 页签四:运行态

实时看这个主播现在在干什么,也是手动干预的地方。

区块能干什么
当前播出阶段(开场/讲解/控场/讲笑话/回应弹幕)、在讲哪一段、第几句、循环了几轮、插播队列长度、判据统计
按钮跳过本段 / 暂停 / 继续 / 重载节目单
插播一句话输入文字,主播会立刻打断当前内容说这句,说完回到被打断的那句继续
背景音乐开关、曲目下拉、两个音量滑块(不说话时 / 说话时)、实时实际增益
API一句话看到开关状态与有效 Key 数(详细在第五个页签)

判据统计怎么看:

"看到 20 条只回 3 条"是正常的——否则主播会变成复读机。

7. 页签五:API 接入(第三方用)

每个主播都有一把自己的钥匙和一个总开关。这把钥匙只能操作这一个主播,泄露也只影响这一个。

区块说明
API 开关关掉后该主播所有 /v1/* 返回 403 api_disabled。只影响第三方接口,观众页和直播完全不受影响
接入信息anchor_id、API 地址、LiveKit 地址、OpenAPI 链接
专用 Key名称、前缀、权限范围、创建时间、最后使用时间、吊销按钮;「生成新 Key」后明文只显示一次,关掉就再也看不到,丢了只能吊销重建
接入示例四条可直接复制的命令:查状态、让主播说话、换观众 token、发弹幕
弹幕源该主播的平台直推源(ingest_url + secret),给"对方平台回调"用

安全底线:Key 不要放在网页前端。嵌直播间要么用这里的「换观众 token」流程(你的后端拿 Key 换 token,前端只拿 token),要么让对方后端调。

8. 为什么有些弹幕主播不回

判定器每条弹幕看三件事:需不需要回(need_reply)、要不要查库(need_kb)、急不急(urgency)。

情况结果
纯表情、哈哈哈、太长不回(继续讲自己的)
正常提问查库后插播,说完回到原句
礼物 / 关注最高优先级,直接答谢
1 秒内进来几十条转成"现在弹幕在刷:…(共 N 条)"的聚合摘要,主播回应整体气氛
队列满了丢优先级最低的(普通闲聊),礼物和提问不丢

如果发现"该回的不回":去运行态看判据统计,再调 config/agent_profile.yaml 里的判定阈值;或者用 ingest.md 里的联调清单逐条验证。

9. 背景音乐

10. 常见故障排查

现象最可能的原因怎么处理
页面打不开端口不对平台是 8010,不是 8000
保存失败:需要运营口令.env 配了 ADMIN_TOKEN右上角「设置口令」输入一次
主播不说话未开播 / 进程没起来 / 派单失败运行态看阶段;不行点「重启主播」;再看服务 Get-Service LiveKitAnchor-*
说话了但没声音浏览器自动播放限制直播间点一下「🔊 点击开始收听」
知识问答答非所问相似度太低命中杂段落用「检索预览」调 similarity
第三方报 401Key 错/被吊销后台 API 页签看 Key 状态,重建一把
第三方报 403 api_disabled该主播 API 开关被关了API 页签打开开关
第三方报 404用了别的主播 id,或 Key 绑的是别的主播核对 anchor_id 与 Key 的绑定关系
第三方报 409 anchor_not_live主播没在播先「开播」再调
弹幕进去了但没回应被判定为"不值得回"属正常;用礼物/提问测试,或看判据统计
公网能连上但没声音媒体端口没转发(信令走 443,音频走 UDP/TCP)路由器转发 50000-50100/UDP + 7881/TCP 到本机;改完跑 scripts\enable-public-media.ps1
公网打不开 / 502域名没解析、边缘没转发、平台没起本机先测 http://127.0.0.1:8010/api/health;再看边缘那台 nginx
公网页面还是旧的HTML 被边缘/CDN 缓存平台已发 Cache-Control: no-store;若仍是旧的,去边缘/CDN 控制台刷新缓存
更新版本后要重新输口令后台口令换了右上角「设置口令」输入新口令(见 .env 的 ADMIN_TOKEN)

11. 术语表

词意思
主播 / anchor一个 AI 主播实例,有独立房间、人设、音色、知识库
值守号 / keeper平台用来"钉住房间"的内部参与者,观众看不到
派单 / dispatch通知某个主播进程进入某个房间开始工作
节目单 / show一场直播的段落与逐句脚本
判定器 / judge决定一条弹幕要不要回、要不要查库的那次 LLM 判断
门控 / gate判定器 + 队列 + 插播策略的合称
兜底内容没有节目单或空闲时用的笑话/话题/控场话术
租户 / tenant一个第三方客户;有自己的主播、Key、用量
每主播 Key绑定单个主播的 API Key,只能操作那一个主播
ingest 源给第三方平台回调用的弹幕入口,有自己的 secret