袁天AI developer
← 返回目录
NO.03 · 2026 · 10

AI 主播:Live2D 陪伴与直播控制台

谁先说、什么时候说、说过的话记不记 · 约 4 分钟读完

LivePersona Studio 是我给 AI 主播写的桌面控制台:控制台里管角色、模式、声音和记忆,舞台窗口放场景、角色和字幕,陪伴的时候还能开一只透明置顶的桌宠。模型没训练也没微调,花力气的地方在谁先说、怎么不冷场、什么该记住。

独立舞台窗口:Live2D 角色在场景中,右侧是窗口捕获设置
舞台窗口,给直播软件采集用。右边是背景和字幕设置,进了捕获画面就不显示。

所有输入走一个入口

要处理的输入很杂:我在本地打的字、话筒识别出来的话、直播间弹幕、游戏状态,还有角色自己想搭话。它们都先进同一个调度入口,贴上来源,再决定谁先、要不要合并、这句该谁接。

  • 我说话优先。 直播时勾上「用户加入」,我的输入排在弹幕前面。
  • 弹幕每 25 秒攒一批再交给模型;只是有人进场、人气变了,就不回。
  • 主动搭话从上一句播完、或者最后一条新消息开始计时,默认 15 秒,5 到 180 秒可调。
  • 过期的回复直接扔掉。 清空、换角色、取消之后才回来的结果,不进队列。

开「分身」可以让两个角色同台。点名谁就谁回答;普通问题主角色答,另一位最多补一句。两人共用一条语音队列,不会抢着说话。对方说的话会带着身份传过来当参考,不会被当成用户说的,也不会记成自己的经历。

别冷场

直播里最尴尬的是开口前那几秒空白。所以回复超过 30 字时,先切出第一句短的(最多 30 字)马上合成开播,后面的边播边准备,每段最多 60 字。

音频永远只有一段在播、一段候着,再多最多一条文字回复排队等合成。上一条回复的最后一段开始合成了,才把这期间攒下的输入合起来问下一轮模型;新回复也要等前一条合成完,不会把正在说的话打断。字幕和表情跟着真正开始播的那一段走,不跟生成完成的时间走。

出错时:网络、超时、限流、5xx 自动重试两次;密钥、权限、配置不对就直接提示。语音只重试失败的那一段,播过的不再播;重试用完就留下文字,主动搭话也停掉,不会自己没完没了地开新一轮。

四层记忆

层 放什么 怎么写进去
当场上下文 最近 20 轮 自动,结束互动就清空
短期记忆 当场早些时候的压缩版 自动压缩,界面上能看压得好不好
长期记忆 每个角色陪伴、直播各一份 先变成待处理条目,我批准了才算数
知识库 所有角色共用 手动导入编辑,按关键词取

没点「开始本次互动」就当是在调试,说什么都不进记忆。不然调提示词时随口说的话,会变成角色以后的「回忆」。为什么这么分,写在《Agent 记忆分层》里。

工具默认关着

控制台总览:选择运行方式与角色,开始互动,记忆与游戏信息开关
控制台。选好陪伴还是直播、选好角色就能开始;换角色或模式之前得先结束这一场。

模型能看屏幕、能联网搜索,但默认都是关的,按模式开:

  • 看屏幕只在陪伴时能用,浏览器、当前应用、整个屏幕,每轮加起来最多看一次,不会一直盯着,也不翻进程和浏览记录。直播时没有这个权限。
  • 联网搜索只用来查拿不准的事,每轮最多一次、最多五条结果。搜回来的东西只当参考,里面写的指令不照做;搜不到就说不知道。
  • 云端密钥只放在 Rust 那一层,用 Windows DPAPI 加密,前端碰不到。提示词预览和真正发出去的用同一个组装函数,看到的就是发出去的。
舞台场景编辑:在实际舞台画面上选择、拖动、缩放图层并保存场景
场景编辑直接在真实舞台上拖图层,不另开预览。

现在到哪了

在我自己电脑上已经能用:单文件包解压就能跑,自带三个本地音色和话筒识别,OBS 能采到舞台和桌宠。B 站直播间连上了,但还没真正开过一场带弹幕的长直播,这是下一步要做的;再往后想让它边直播边玩游戏。

技术栈是 Tauri 2、Rust、React/TypeScript,代码三万来行,测试文件 72 个。

做下来最大的体会:AI 主播难的不是让模型说得好听,而是谁在什么时候说、凭什么这么说、说错了能不能查回来。

LLM Agent实时调度记忆设计语音管线桌面应用Live2D
© 2026 袁天FEATURE / 03
小鲸鱼 · AI 导航
小鲸鱼正在连接…

站上的内容我都读过。直接联系袁天 →

小鲸鱼我是助手小鲸鱼。内容、笔记,或者有什么想知道的,直接问我。