Hermes Live Show — 功能清单
一、剧本管理
| 功能 |
说明 |
| 自然语言剧本导入 |
粘贴文本,由 AI 自动解析为结构化数据(角色、线索、阶段) |
| JSON 剧本导入 |
精确导入 JSON 格式的剧本 |
| 剧本解析预览 |
上传后在确认导入前预览解析结果 |
| 剧本列表 |
查看所有已导入剧本,显示角色数量、创建时间 |
| 剧本选中 |
选择当前使用的剧本(高亮标记) |
| 剧本删除 |
删除不需要的剧本 |
| 解析降级兜底 |
AI 解析失败时,用正则 fallback 提取角色名 |
二、AI 角色系统
| 功能 |
说明 |
| 自动角色生成 |
根据剧本中的角色名批量创建角色 |
| 随机凶手分配 |
自动随机指定 1 个 KILLER,其余为 SUSPECT |
| SOUL 人格配置 |
每个角色生成 SOUL.md(性格、说话风格、秘密、动机等) |
| Hermes Profile 管理 |
为每个角色创建独立的 AI persona(文件系统存储) |
| 角色 SOUL 编辑 |
手动更新角色的 SOUL 内容和知识库 |
| 角色状态管理 |
支持 ALIVE / DEAD / INACTIVE 三种状态切换 |
| 角色删除 |
删除角色及其 Hermes profile |
| 手动触发角色发言 |
输入提示词让指定角色即时回应 |
三、8 阶段游戏流程
| 阶段 |
说明 |
| intro |
开场介绍 |
| round1_speak |
第一轮发言 |
| round1_search |
第一轮搜证 |
| round2_speak |
第二轮发言 |
| round2_search |
第二轮搜证 |
| final_discuss |
最终讨论 |
| voting |
投票环节 |
| reveal |
揭晓真凶 |
四、AI 自动对话
| 功能 |
说明 |
| 自动轮流发言 |
AI 角色按顺序依次发言,每人 2-4 句中文 |
| 上下文感知 |
基于最近 20 条消息构建上下文 |
| 可配置间隔 |
发言间隔默认 8 秒,可自定义 |
| 可配置轮数 |
支持多轮自动发言 |
| 随时启停 |
主播可随时开始/停止自动对话 |
| 自动投票 |
触发后所有 AI 角色根据讨论摘要投票选出凶手 |
| 投票 JSON 输出 |
每个角色返回 {"target": "角色名", "reason": "理由"} |
| 投票容错 |
解析失败时随机投给他人 |
五、主播控制台(ControlView)
| 功能 |
说明 |
| 阶段控制器 |
按钮式阶段切换、开始/暂停/恢复/重置游戏 |
| 手动注入消息 |
选择角色 → 输入提示词 → AI 即时回应 |
| 进度条 |
游戏进度可视化 |
| 角色列表面板 |
点击角色弹出详情弹窗(RoleModal) |
| 线索面板 |
查看所有线索及解锁状态 |
| 一键生成 Profiles |
为所有角色创建 AI 人格 |
| Socket 连接状态 |
WebSocket 连接状态指示(绿点/红点) |
| 导航 |
可跳转到观众视角和剧本管理 |
六、观众视角(LiveView)
| 功能 |
说明 |
| 实时聊天日志 |
查看所有角色的实时发言 |
| LIVE 标识 |
游戏进行中有脉冲动画 LIVE 标识 |
| 阶段显示 |
当前阶段的中文标签(如"💬 第一轮发言") |
| 登场角色列表 |
侧边栏展示角色名及首字母头像 |
| 已死亡角色灰显 |
DEAD 状态角色降低透明度 |
| 已解锁线索 |
实时展示已解锁的线索 |
| 待解锁线索计数 |
提示剩余未解锁线索数量 |
| 进度条 |
游戏整体进度 |
七、线索系统
| 功能 |
说明 |
| 5 种线索类型 |
PHYSICAL(物证)、TESTIMONY(证词)、MOTIVE(动机)、ALIBI(不在场证明)、FORENSIC(法医) |
| 线索归属 |
可指定线索属于某个角色 |
| 按阶段分配 |
线索绑定到 round1_search 或 round2_search |
| 3 种可见性 |
ALL(全员可见)、SPECIFIC(指定角色可见)、HIDDEN(隐藏) |
| 线索解锁 |
通过 Socket 实时解锁并广播 |
| 解锁记录 |
记录谁、何时解锁了线索 |
八、投票系统
| 功能 |
说明 |
| 手动投票 |
API 创建投票记录 |
| AI 自动投票 |
所有 AI 角色自动投票(带理由) |
| 多轮投票 |
支持 round_number 区分轮次 |
| 投票实时广播 |
Socket 广播 vote_cast 和 voting_results 事件 |
| 投票查询 |
按轮次查询投票结果 |
九、实时通信(Socket.IO)
| 事件 |
方向 |
用途 |
new_message |
S→C |
新消息广播 |
state_change |
S→C |
游戏阶段/进度变更 |
speaker_change |
S→C |
当前发言者变更 |
vote_cast |
S→C |
投票投出 |
voting_results |
S→C |
投票结果汇总 |
clue_unlocked |
S→C |
线索解锁通知 |
system |
S→C |
系统消息 |
send_message |
C→S |
发送消息 |
dm_command |
C→S |
主播命令(阶段切换/自动对话/触发投票) |
request_state |
C→S |
请求当前游戏状态 |
十、AI 退化容错
| 场景 |
处理方式 |
| Hermes 超时 / 连接失败 |
显示「AI引擎暂时不可用,请稍后再试」 |
| Profile 列表获取失败 |
回退到上次成功获取的列表 |
| JSON 解析失败 |
自动 fallback 到正则解析 |
| 投票目标无效 |
随机选择他人投票 |
十一、部署
- Docker Compose 一键启动 4 个服务(Postgres + Hermes + Backend + Frontend)
- 开发环境热重载(volume 挂载)
- 健康检查(Postgres pg_isready / Hermes /models 端点)