DeepSeek Harness (DSH) is a plugin-based system. By default, the AI acts more as a conversationalist than as a gamemaster. dsh-diceframe fills this gap by adding dice, check resolution, world books, and character cards to DSH, so that an AI GM can run structured TRPG sessions instead of unstructured chit-chat.
Requirements¶
- DSH CLI (
dsh) is installed. - Node.js >= 22.
Installation¶
Add the plugin using the official installation command:
dsh plugin --profile <名字> add dsh-diceframe
Core Features¶
Dice and Checks¶
The plugin provides two core tools: roll_dice and resolve_check.
-
roll_dice tool
- Supports common dice formats:3d6,d20,d100,3d6+2.
- Supports advanced rules:2d20kh1(advantage),2d20kl1(disadvantage),4d6dl1.
- Supports special mechanics:1d6!(exploding dice).
- Provides cryptographically secure random number generation and a per-dice breakdown. -
resolve_check tool
- Supports modes: d100, d20, and sum.
- Includes check outcomes: critical success, success, failure, critical failure, and check margin.
World Books and Character Cards¶
- Supports world books in Markdown format and character cards in key-value format.
- Supports injecting content into the system prompt to provide grounding for AI gamemastering.
DiceFrame Interoperability¶
The plugin supports direct import of DiceFrame ecosystem content without conversion.
- Single file import: Supports a single world book JSON or character card JSON, with automatic path detection.
- Content package import: Supports importing an entire content package directory containing
plugin.json, with one-click full import (includingworlds,characters,npc,items,spells,classes,rules).
Slash Commands and Session State¶
- Slash commands:
/trpg: Start a session; the GM opens directly with the loaded world book’s “starting scene”./roll: Roll dice, executed directly without going through the model./check: Resolve a check, executed directly without going through the model./state: View the current table state.- Session state tracking: Records the world, player character cards, NPCs, scene, and initiative order via the
table_stateandtable_updatetools.
Save Interoperability¶
The plugin implements the transfer of key state between DiceFrame and DSH.
- Import: The
save_importtool can read DiceFramestate.jsonor a portable zip, loading the world, characters, and scene into the current session. - Export: The
save_exporttool exports the current session progress into a DiceFrame-compatible save format (state.json+chatlog.jsonl+ zip).
Configuration¶
Configure six independent plugin entries in the profile’s cordis.patch.yml (dsh-diceframe/dice, gm, lore, commands, table, save).
General configuration example:
- id: dsh-diceframe-lore
config:
enabled: true
world_book: |
## 迷雾王国
大陆被永雾笼罩,只有灯塔之城仍有人烟。
character_card: |
姓名: 艾琳
职业: 游侠
Notes¶
- Pure ESM, no build steps, and zero runtime dependencies (Node core and its own modules only).
- Does not bundle any third-party or IP/fan-made content packs.
- Only transfers key state (world/characters/scene/history) for interoperability; it is not a full mechanic replica.
References¶
- Plugin directory: https://www.skillhub.cn/plugins/diceframe/dsh-diceframe
- GitHub repository: https://github.com/diceframe/dsh-diceframe