dsh-plugin-trpg:給 DSH QQ 機器人裝一個跑團桌邊助手

前言

自己在 QQ 機器人裏做跑團問答,常見做法是把規則手冊塞進長上下文,再讓模型硬答。問題是模型記的 COC 判定表經常不準,DriveThruRPG 上新、Chaosium 發佈這類動態也超出上下文範圍,玩家問「最近有什麼免費的模組」時只能編。dsh-plugin-trpg 走的是另一條路:把跑團知識做成插件內的工具和本地中文知識庫,動態內容走實時抓取,抓不到時退本地快照並標註來源。下面介紹這個插件。

這是什麼

dsh-plugin-trpg 是 DSH 原生插件,維護者 NormalAorii,倉庫 https://github.com/NormalAorii/dsh-plugin-trpg ,社區目錄頁 https://www.skillhub.cn/plugins/NormalAorii/dsh-plugin-trpg ,分類「聯網工具」,GitHub 星標 1。它把「跑團桌邊助手」拆成 17 個工具:查規則、選模組、擲骰判定、隨機車卡、盯新上架的規則書和模組、看國內外跑團社區在聊什麼,並把這些內容渲染成中文圖文卡片發到 QQ。

回答策略是混合式的:優先用本地中文知識庫(快、可離線),行業動態和社區熱帖走實時抓取,抓不到退本地快照並明確標註來源,不編造價格與標題。

17 個工具

工具劃分按用途走,不需要一次全記住。下面按調用場景分組。

入口和搜索

  • trpg_help:用戶問「你能幹嘛」「菜單」時返回能力菜單與示例問法。
  • trpg_search:名字或關鍵詞不確定是英雄、模組、術語還是規則時做全庫模糊搜索。
  • trpg_meta:查數據版本、條數、缺文件診斷、抓取緩存狀態。

規則和系統

  • trpg_rules:COC 7e、D&D 5e 與通用規則的速查 Q&A,共 39 條。
  • trpg_glossary:跑團術語速查,40 條,中英對照。
  • trpg_systems:規則系統選型,12 個系統,含風格、難度、中文支持、入門路徑。
  • trpg_guide:入坑、當 KP、開團、線上團指南,12 篇。
  • trpg_game:按規則名查。數據在 data/games.json,目前收錄 10 個系統(三角機構、COC 7e、D&D 5e、PF2e、Delta Green、Blades in the Dark、Cyberpunk RED、Mothership、FIST Ultra、Vaesen)。每條帶商店價格、免費材料直鏈、社區入口,以及該規則專屬的實時資訊源。

模組

  • trpg_modules:按系統、免費、低價、難度、關鍵詞篩本地模組庫,31 個模組。
  • trpg_module:單個模組詳情,含人數、時長、難度、簡介、爲什麼值得玩、主持提示。

擲骰和車卡

  • trpg_dice:COC 判定/理智/對抗、D&D d20 優劣勢、任意骰式(NdM±K、kh/kl),帶中文判定等級。
  • trpg_investigator:COC 7e 隨機車卡,3d6×5 屬性,HP/MP/SAN/MOV/DB、職業技能點與信用評級、姓名背景。

實時動態與社區

  • trpg_dtrpg:解析 DriveThruRPG 與 DMs Guild 的 RSS,固定取最新 25 條,支持 free / cheap(≤$10)/ keyword。
  • trpg_chaosium:Chaosium 官方博客,按實時抓取、Node 直連、本地快照三級降級。
  • trpg_news:EN World 新聞區 + Paizo 官方博客 + Modiphius 新聞,按日期合併。
  • trpg_community:StackExchange RPG 熱問、EN World 討論區、機核跑團標籤;channels: true 時返回中文/英文社區渠道清單(共 33 條,中文 12、國際 21)。

卡片

  • trpg_card:渲染 1080 寬深色 PNG 卡片,kind 覆蓋 dtrpg、chaosium、news、community、module、modules、game、rule、dice、investigator、systems、help、meta。每張卡帶卡片級中文概括(intro)與逐條中文導讀(zh),模型可用同名參數覆蓋成自己的話。生成後由模型調用 qqbot_send_file 發出。

安裝與啓用

這是標準 DSH 原生插件(package.json 的 dsh.bundle.patch + cordis.patch.yml + index.js 的 apply(ctx)),用 bundle 方式安裝,目標路徑按自己的工作區改:

plugin_manager { action: "install_bundle", target: "C:\\Users\\aorii\\Documents\\deepseek-harness\\default-workspace\\dsh-plugin-trpg" }

上面這條命令把插件裝到指定目錄。裝好後 17 個 trpg_* 工具進入工具表,同時插件通過 systemPrompt.section 注入一段中文提示,告訴模型什麼場景用哪個工具、要圖時生成卡片後調用 qqbot_send_file。卸載用 remove_bundle,安裝或數據出了問題先跑 trpg_meta 做診斷。

本地自測不依賴宿主服務,適合提交前跑一遍:

node dsh-plugin-trpg/scripts/smoke.mjs        # 17 工具 21 用例契約冒煙
node dsh-plugin-trpg/scripts/cards-smoke.mjs  # 5 張卡片渲染冒煙(需要 Windows)
node dsh-plugin-trpg/scripts/preview.mjs      # 打印社區/新聞/DTRPG 的真實返回文本
node dsh-plugin-trpg/scripts/check-game-live.mjs  # 排查某個規則實時源的鏈接與緩存

典型用法

安裝之後直接在對話裏問。幾個可復現的例子:

  • 問「DriveThruRPG 最近有什麼免費模組」→ 觸發 trpg_dtrpg,返回 RSS 中篩出的免費條目。
  • 問「COC 母公司最近有什麼新書」→ 觸發 trpg_chaosium,優先實時抓取,失敗退本地快照並在輸出裏標註。
  • 問「幫我擲個理智檢定」→ 觸發 trpg_dice,返回中文判定等級。
  • 問「隨機來個調查員」→ 觸發 trpg_investigator,出完整車卡文本。
  • 問「三角機構是什麼」→ 觸發 trpg_game,返回規則簡介、官方入口、商店價格、免費材料鏈接、社區與該規則的實時動態。
  • 要圖時說「生成一張圖」→ 觸發 trpg_card,卡片出來後模型調用 qqbot_send_file 發送。

適用場景與注意

適合兩類人:一是拿 DSH 做 QQ 機器人的開發者,想給跑團羣加一個會查規則、擲骰、看新聞的助手;二是想自己維護規則庫的人,data/games.json 和 data/community.json 都是純 JSON,照着加條目即可。

幾個決定能不能用的限制,直接來自 README:

  1. DriveThruRPG 商品詳情頁被 Cloudflare 403,拿不到折扣力度、評價和詳情介紹,只給標題、出版商、價格、RSS 簡介與鏈接。
  2. Chaosium 實時抓取依賴宿主 web 服務(Node 直連會喫 403),純 Node 環境會走本地快照。
  3. 卡片走 Windows PowerShell + System.Drawing,需要 Windows 與中文字體;其它平臺會明確報錯而不是靜默出空白圖。
  4. 機核跑團標籤更新不頻繁,界面帶日期,不會僞裝成「今天熱門」。
  5. trpg_game 的「最新資訊」只來自 data/games.json 裏爲該規則聲明的源,沒聲明源的規則只給官方入口與社區列表。
  6. 有些站點本機網絡直接抓不到(DMs Guild 商品頁、Reddit、知乎、B 站搜索接口等),插件只提供本地庫或社區渠道清單,不做站內抓取。

另外,插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證(MIT)是否符合自己的部署約束;動態抓取的來源和字段隨上游站點變化,出錯先看 trpg_meta。

結尾

這個插件的價值在於把跑團諮詢拆成確定性的工具和本地知識庫,動態部分補一層實時抓取加快照降級,而不是讓模型憑記憶硬答。目錄頁和源碼:

  • https://www.skillhub.cn/plugins/NormalAorii/dsh-plugin-trpg
  • https://github.com/NormalAorii/dsh-plugin-trpg
羽毛球分组比赛记分
小程序二维码

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

小夜