@max-null/dsh-jubensha:一個人在 DSH 裏開劇本殺

前言

在 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)。

典型用法:開第一局

  1. 新建會話,在會話標題上連續點擊三次 —— 會向輸入框填入「來一局劇本殺」(僅填句,不自動發送)。
  2. 回車發送後,出現對話 / 軌跡 / 上下文等標籤;最右側點 「團隊」。
  3. 在團隊頁選本子、爲每個座位挑選演員,再點「開一局」;或由模型通過上述四類工具驅動流程。

維護者說明:骨架與玩家上桌已在隔離實例中跑通,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 裝起,再用標題三擊入口開第一局。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜