前言¶
在 DeepSeek Harness(DSH)里做 Agent Teams 或长会话实验时,常见需求是「凑齐一桌人」:剧本杀要四到六名玩家再加一位 DM,真人凑局往往比买票更难。社区插件 @max-null/dsh-jubensha(维护者 Max-Null,GitHub 仓库 Max-Null/dsh-jubensha)把这件事拆成可单机运行的形态:AI 坐 DM 位,其余座位由 AI 玩家填满,真人只留一个位子。插件分类为客户端,当前 package 版本为 0.1.1,许可证 MIT。目录页见 SkillHub。
下面介绍它解决什么问题、在 DSH 里多了哪些能力,以及如何安装和开第一局。
这是什么¶
剧本杀(jubensha):一个人也能开局的推理本与情感本 —— AI 当 DM,AI 填满整张桌子(仓库 README 原话)。
真实门槛往往不是票价,而是人数。本插件的目标是让你一个人就能开局;AI 玩家是否「像人」,维护者说明已在真实 DSH 里用七个本子逐局实测(见仓库 cases/),而不是仅停留在设计设想。
核心功能¶
模型工具面(四项)¶
插件向宿主模型暴露四类工具,用于开局、推进和管演员,而不必把整局状态都堆在对话里:
| 工具 | 作用概要 |
|---|---|
jubensha_state |
看局面、开一局、推进阶段、公布线索、记行踪 |
jubensha_player |
看桌上成员、让玩家上桌/下桌、对某位或全桌说话、转述(兼容保留) |
jubensha_case |
列本子、列座位、取角色本、取线索牌桌原文、取本子段落 |
jubensha_actor |
演员池:列人、招人、性格草稿骨架、改玩法、头像、跨局印象、档案 |
局面按会话存储(Map<sessionId, GameState>);「团队」标签始终对应当前会话那一局。
「团队」会话视图¶
装完插件后会多一个与「对话 / 轨迹 / 上下文」并列的标签,名叫「团队」。左栏是座位、人物关系、时间线;中栏是剧本正文(默认收起)与当前阶段;右栏是桌上发言。便签可右键放置,随标签与会话保存。
界面只生成文本、不自行调工具(例如选本子、给座位挑演员、生成开局指令),避免 UI 成为第二条控制通道。窄屏下三栏改为纵向分块,各自滚动。
数据经插件只读端点拉取:GET /jubensha/room?session=<id>(围栏为 loopback + 同源)。另有三个写端点:演员池、便签、本子目录;便签按会话存,演员池与本子目录跟本机用户走。
演员池与跨局记忆¶
角色来自本子,人来自演员池;演员池跨会话持久化,落盘在 $DSH_HOME/storages/jubensha.json。插件自带六位默认演员(老猫 / 阿珍 / 老孙 / 小何 / 铁哥 / 白姐),补齐时只补缺失字段。开一局时「随机排」会重排整桌,同一演员可换座、换本,档案记的是跨局印象(例如「上局被谁骗过」),不记座位号。
性格可手写,也可用 jubensha_actor action="draft" 拿写作判据(不是现成段落);落库前需人工过目。头像无图时按演员 id 生成内联 SVG;可用 action="avatar" 换图。
本子与真相边界¶
自带七本 YAML(cases/<编号>-<名字>/case.yml):四人本 01–06,六人本 07 夜场。格式由 schema/case.schema.yml(v1.0)定义;加载器对不完整字段会告警(例如 case-01 中真人角色林默缺少「现在」一段,测试里钉了 warn)。
带答案的内容不放进 DM 上下文:真相与整段线索封存到复盘;角色本经引用,上桌时由程序解引用送进玩家首条消息。AI 玩家子会话工具面被收窄——实测中继承层大量工具被清掉,玩家侧实际以说话为主(详见 README「状态」与 docs/设计/ 系列文档)。
2026-10-07 之后,桌上发言由宿主逐句原样广播给其余座位(署名与原文一致);jubensha_player action="say" 仍表示主持人发言(转场、宣布阶段等)。
设置页¶
侧栏「插件」→ 打开 @max-null/dsh-jubensha 卡片:演员池(名字、怎么玩、跨局印象)、本子路径与追加目录等,使用插件管理提供的 plugins.bundle.config 槽(key 为包名)。
安装与启用¶
在已安装 DSH 的环境里执行官方 README 给出的命令:
dsh plugin add @max-null/dsh-jubensha
插件以当前 DSH 进程权限运行;安装前建议自行查看 GitHub 源码 与 MIT 许可证,确认依赖与行为符合你的环境。peer 依赖包括 @deepseek-ai/cordis、dsh-agent、dsh-experimental-agent-team 等 0.2.x RC 段(见 package.json)。
典型用法:开第一局¶
- 新建会话,在会话标题上连续点击三次 —— 会向输入框填入「来一局剧本杀」(仅填句,不自动发送)。
- 回车发送后,出现对话 / 轨迹 / 上下文等标签;最右侧点 「团队」。
- 在团队页选本子、为每个座位挑选演员,再点「开一局」;或由模型通过上述四类工具驱动流程。
维护者说明:骨架与玩家上桌已在隔离实例中跑通,typecheck / test(155 条)/ build 全绿,四个工具均被模型真实调用验证过。
若要自写本子,README 指向 skill jubensha-write-case,并建议写完跑:
node scripts/check-case-syntax.mjs
pnpm test
(后者含 11 条结构检查,如角色六段非空、恰好一个凶手、五个阶段 id 等。)
适用场景与注意¶
适合谁
- 想在 DSH 里单人体验剧本杀流程、或调试 Agent Teams 多角色对话的开发者。
- 需要可机器读取的阶段与线索事件日志、便于复盘而非靠 DM 回忆的场景。
已知限制(摘自 README)
- 共享工作目录:AI 玩家与 DM 观察同一 cwd;本子真相手册不得落在工作区内,开局写到工作区外、散场后归档。
- 角色本不落盘:只经消息送达对应 agent,避免任意 agent 读到他人秘密。
- 玩家工具面:白名单以
send_message为主,但 Team 机制下模型请求里仍可能携带 Team 相关工具名;执行前闸与tools.restrict分层说明见 README「已知限制」。 - 私聊 UI:真人侧暂不区分「对主持人」与「对桌上」,会话对话即桌面;设计文档中写明为刻意取舍。
- 创意工坊:仅有预研文档,仓库说明尚未写实现代码。
DSH 生态理念是「一切皆插件」;SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。
结尾¶
@max-null/dsh-jubensha 把剧本杀从「凑人」改成「一人 + AI 满桌」:客户端多一个「团队」房间、四项 jubensha_* 工具、七本可校验 YAML 本子,以及演员池跨局记忆。若你要在 Harness 里试推理本或情感本,可从 dsh plugin add @max-null/dsh-jubensha 装起,再用标题三击入口开第一局。