dnd-dm
AI 地下城主引擎 —— 基于2024版D&D 5e规则,三层架构(dnd-engine + dnd-api + dnd-dm Skill),支持模组化运行、战斗裁决、角色创建与存档管理 Skill: dnd-dm Owner: ackiles Summary: AI 地下城主引擎 —— 基于2024版D&D 5e规则,三层架构(dnd-engine + dnd-api + dnd-dm Skill),支持模组化运行、战斗裁决、角色创建与存档管理 Tags: latest:1.2.1 Version history: v1.2.1 | 2026-09-24T17:38:33.174Z | auto DND DM Skill 1.2.1 introduces a suite of new official subskills and a unified DND Lens toolkit, along with an expanded judge/narrative layer and CLI tool. - 新增「DND Lens」三件套子技能(world-lore, module-forge, echo-map)
Rank
62
Safety
84
Downloads
2.1k
Updated
Oct 9, 2026
Version
1.2.1
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 2.1K downloads reported by the source. Last updated 10/9/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 9, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 9, 2026
- Adoption signal
- 2.1K downloadsadoption · observed Oct 9, 2026
- Latest release
- 1.2.1release · observed Sep 24, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17d8xy70axcqfv1aat3y95g9n84fk7v:dnd-dm-skill- Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-ackiles-dnd-dm-skill/snapshot"
Documentation
CLAWHUB
160,000 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
echo-map/SKILL.md
# 功能三 · Echo Map(真实经历 → DND 冒险映射)
> 子技能 `dnd-dm-skill:echo-map`
> 把用户的真实世界经历(人物 / 冲突 / 地点 / 目标 / 情绪 / 时间)确定性地映射为
> DND 5e 的种族 / 职业 / 阵营 / 怪物 / 地点 / 神器,并强制 **anon 化** 防隐私泄露。
## 何时调用
- 用户想把一段真实经历(职场、生活、旅行、冲突)改写成 DND 冒险
- 需要把现实人物 / 机构 / 地名脱敏为幻想名后,再生成模组 JSON
## 核心红线(隐私优先)
1. **绝不回写真实身份**:真实姓名 / 机构名 / 地名不进入 `world_cards` 知识库、不出现在最终交付物。
2. **强制脱敏**:所有真实名必须先经 `echo_map.py anonymize` 替换为幻想名(`mapping_dict.anonymize` 池),再进入模组。
3. **语义映射由 LLM 完成,结构由脚本兜底**:脚本只做脱敏 + 输出契约规范化,不替代你的叙事判断。
## 运行方式(脚本)
```bash
# 1) 脱敏:真实名 → 幻想名(并改写经历文本)
python "echo-map/scripts/echo_map.py" \
anonymize --names "张三 李四" --places "上海 甲公司" \
--story experience.txt --out experience_anon.txt
# 2) 规范化 LLM 草稿(脱敏 + 补全 chronicle_note + 校验契约)
python "echo-map/scripts/echo_map.py" \
normalize --draft draft_module.json --names "张三 李四" --places "上海 甲公司" --out final.json
```
> 数据字典:`data/mapping_dict.json`(8 个槽位 + anonymize 池 + 输出契约)。
## 标准循环
1. 收取用户经历文本。
2. 让用户确认需脱敏的真实名(人名 / 地名 / 机构名)——或你先抽取疑似实名,请用户确认后再脱敏。
3. 运行 `anonymize` 得到脱敏文本与映射字典。
4. 按 `references/echo-map-workflow.md` 的提示词骨架,**由你(LLM)** 完成语义映射,产出模组 JSON 草稿。
5. 运行 `normalize` 脱敏 + 补全契约,输出最终 `final.json`。
6. 可把 `final.json` 喂给 `module-forge` 进一步 CR 平衡,或喂给 `world-lore` 检索设定锚点。module-forge/SKILL.md
# 功能二 · Module Forge(按需求自动生成模组)
> 子技能 `dnd-dm-skill:module-forge`
> 输入玩家人数 / 等级 / 时长档 / 冒险类型 / 设定 / 基调,输出 **带 CR 平衡预算** 的模组骨架 JSON。
## 何时调用
- 用户说「给我生成一个 X 级、Y 人、适合 Z 时长的模组」
- 需要快速产出结构化模组骨架(派系 / NPC / 分幕遭遇 / 钩子),再由 DM 填充叙事
- 功能三(echo-map)产出的经历映射草稿,可用本子技能做 CR 平衡
## 核心特性
1. **范式驱动**:从 `data/module_paradigms.json`(59 篇官方模组)按 等级重叠 / 类型 / 时长 选最相似的 3 个范式作结构参考。
2. **CR 平衡(确定性)**:用 DMG 标准表计算每场遭遇的队伍 XP 阈值(按角色等级),并反向建议怪物 CR 与数量(含多怪乘数)。
3. **设定一致性**:可选 `--anchor` 调用 world-lore 检索地点 / 派系锚点,避免与费伦设定冲突。
## 运行方式(脚本)
```bash
python "module-forge/scripts/module_forge.py" \
--players 4 --level 5 --duration medium \
--type 都市寻宝 --setting "被遗忘的国度/深水城" --tone 悬疑 \
--anchor "深水城" # 可选:检索设定锚点
# 紧凑 JSON(便于程序化下游)
python .../module_forge.py --players 4 --level 3 --duration short --type 地城探险 --json
```
参数说明:
- `--duration`:`short`(2–3 场) / `medium`(4–6 场) / `long`(8–10 场·战役级),决定分幕数与遭遇数。
- `--level`:取队伍起始等级(用于 CR 预算)。
- 怪物为 CR 平衡建议,可按费伦原生怪物替换;脚本已在 `notes` 中注明。
## 标准循环
1. 收参数(人数 / 等级 / 时长 / 类型 / 设定 / 基调;缺失则向用户追问)。
2. 运行脚本得到骨架 JSON(含 `paradigm_reference` 与 `party_cr_budget`)。
3. 由你(LLM)据 `paradigm_reference` 的节奏 + `notes` 的怪物建议,填充叙事、NPC 台词、场景描写。
4. 如需更贴费伦,用 world-lore 检索锚点;如需把现实经历套进来,先走 echo-map。
> 提示词骨架与分幕/钩子写法见 **`references/module-forge-workflow.md`**。SKILL.md
---
name: dnd-dm
description: "AI 地下城主引擎 —— 基于2024版D&D 5e规则,三层架构(dnd-engine + dnd-api + dnd-dm Skill),支持模组化运行、战斗裁决、角色创建与存档管理"
homepage: https://github.com/laobaigan/dnd-engine
user-invocable: true
metadata:
{"openclaw": {"emoji": "🎲", "os": ["darwin", "linux", "win32"], "requires": {"bins": ["python3", "pip"]}}}
version: 1.2.1
---
# D&D 5e AI 地下城主引擎 — 三层架构
基于 **2024版 D&D 5e 规则** 的 AI 地下城主系统。纯对话交互,无需专用客户端,任何 IM 软件即可运行。本 Skill 将 DM(地下城主)角色交给 AI,严格按照模组剧本和规则书推进游戏。
**城主人格**:明萨拉·班瑞(Minthara Baenre)——守序邪恶卓尔圣武士,前魔索布莱城贵族。语气霸道、果断、直接,但绝不放水作弊。详见 [SOUL.md](references/SOUL.md) 和 [IDENTITY.md](references/IDENTITY.md)。
---
## 三层架构概览
```
┌─────────────────────────────────────────────┐
│ LLM 层:dnd-dm Skill (OpenClaw) │
│ 叙事生成、NPC 对话、场景描述、行为红线 │
│ ← prompt 驱动,保持 LLM 核心优势 │
├─────────────────────────────────────────────┤
│ API 层:dnd-api (FastAPI,端口自动检测) │
│ 30 个 HTTP 端点 + CLI 命令行工具 │
│ ← 任何平台(Discord/Foundry/Web)均可调用 │
├─────────────────────────────────────────────┤
│ 引擎层:dnd-engine(已内置) │
│ 骰子、战斗、存档、世界状态、模组缓存、SRD 搜索 │
│ ← 纯 Python,零 LLM 依赖,220 项测试覆盖 │
└─────────────────────────────────────────────┘
```
**核心原则**:上层依赖下层,下层不依赖上层。LLM 层只管叙事 + 调用引擎函数,不自行计算或拼数据。
---
## 模式与手动骰
- **模式(mode)**:系统支持两种运行模式:`adventurer`(默认)和 `gm_assist`。
- `adventurer`:引擎按规则自动执行掷骰与结算,玩家不干预骰面结果。
- `gm_assist`:城主辅助模式,允许通过 MCP 工具预设「手动骰」,用于演示、复现或争议裁定。
- **选择时机**:在新游戏启动时选择(例:`start_new_game(mode="gm_assist")`)。
- **MCP 工具**:`start_new_game(mode)`、`get_mode()`、`set_manual_roll(name, value)`、`list_manual_rolls()`、`clear_manual_rolls()`。
- **行为**:`gm_assist` 且存在手动骰时,掷骰函数优先使用手动骰并记录使用历史;否则正常随机掷骰。
- **透明性要求**:所有手动骰操作必须在会话内记录并可查询,避免秘密修改。
---
## 快速开始 — 安装指引
### 步骤 1:解压到工作目录
将 `dnd-dm-skill-x.x.x.zip` 解压到空目录即可使用。
```
your-workspace/
├── SKILL.md / _meta.json
├── references/ ← 核心规则文件(供 LLM 读取)
│ └── party-sheet.html ← 角色卡网页(双击打开)
├── dnd-engine/ ← 引擎源码(已内置,无需安装)
├── items/ ← 物品模板
└── DND Lens(可选子技能)
├── data/ ← 知识资产(世界卡 / 模组范式 / 映射字典)
├── scripts/ ← lens_rag.py(BM25 中文检索)+ lens_pipeline.py
├── world-lore/ ← 功能一:世界观 / 编年史检索
├── module-forge/ ← 功能二:按需求生成模组
└── echo-map/ ← 功能三:真实经历 → DND 映射
```
### 步骤 2:放入规则书和模组
> ⚠️ **需用户自行准备**:规则书和模组因版权原因无法随 Skill 分发。
将 2024版三宝书放入 `rules/` 目录,模组文件放入 `modules/` 目录。
### 步骤 3:校验并开玩
在对话中回复 `/verify`,Agent 自动校验环境。通过后即可开始游戏。
*首次使用时 LLM 会自动加载引擎:`import sys; sys.path.insert(0, "dnd-engine")`*
---
## 一条命令完成检定(推荐)
```bash
dnd-check --actor 老白 --skill 潜行 --dc 15 # Windows 用 dnd-check.cmd
dnd-check --actor 老白 --ac 16 # 攻击检定(走 AC)
```
自动读 `live_party.json`、组装加值、投骰,输出即为可直接贴给玩家的明细。
实测 **≈0.13 秒/次**(含 Python 启动)。**不要为了调引擎去写临时 Python 脚本。**
参数与“角色卡缺技能信息怎么办”见 `references/DM_RULES.md` 规则 1.2.1。
---
## 相关技能
| 技能 | 作用 | 配合方式 |
|:----|------|---------|
| **`dnd-dm`(本技能)** | 城主行为规则 + 三层架构调度 | 主技能,定义 DM 如何行动 |
| **`dnd5e-srd`** | SRD 5.2.1 RAG 检索 | 战时快速查规则,通过 Psrd/SKILL.md
# SRD 5.2.1 — D&D 2024 系统参考文档 > 本目录是 `dnd5e-srd` OpenClaw skill 的引用副本,用于工作目录内本地检索。 > 官方维护版本位于 `~/AppData/Roaming/LobsterAI/SKILLs/dnd5e-srd/`。 ## 内容 20 个参考文件 + 2 个 Python 搜索脚本,覆盖 **SRD 5.2.1**(2024版 D&D 5e,CC-BY-4.0 许可)。 ## 使用方式 通过 Python 脚本搜索+展开: ```bash # 搜索——返回精确字符位置 python srd/scripts/search_with_positions.py "fireball" --all # 展开上下文 python srd/scripts/expand_context.py "fireball" --result 1 --mode section --all ``` 引用格式:`[DND5eSRD_XXX-YYY.md, chars N-M]` ## 文件索引 `references/DND5eSRD_001-018.md` — 介绍/角色创建 `references/DND5eSRD_019-035.md` — 野蛮人/吟游诗人/牧师 `references/DND5eSRD_036-046.md` — 牧师/德鲁伊/战士/武僧 `references/DND5eSRD_047-063.md` — 武僧/圣武士/游侠/游荡者 `references/DND5eSRD_064-076.md` — 术士/邪术师/法师 `references/DND5eSRD_077-086.md` — 法师/起源/专长 `references/DND5eSRD_087-103.md` — 装备/武器/护甲/工具 `references/DND5eSRD_104-120.md` — 法术(规则+法术列表·A-C) `references/DND5eSRD_121-137.md` — 法术(D-M) `references/DND5eSRD_138-154.md` — 法术(M-P) `references/DND5eSRD_155-175.md` — 法术(P-Z) `references/DND5eSRD_176-191.md` — 规则术语表(含全部15种状态) `references/DND5eSRD_192-203.md` — 玩法工具箱/魔法物品(1) `references/DND5eSRD_204-229.md` — 玩法工具箱/魔法物品(2) `references/DND5eSRD_230-252.md` — 魔法物品(3) `references/DND5eSRD_253-272.md` — 怪物(1) `references/DND5eSRD_273-292.md` — 怪物(2) `references/DND5eSRD_293-312.md` — 怪物(3) `references/DND5eSRD_313-332.md` — 怪物(4) `references/DND5eSRD_333-364.md` — 怪物(5)/动物 --- *基于 dnd5e-srd skill v1.0 · SRD 5.2.1 · CC-BY-4.0*
world-lore/SKILL.md
# 功能一 · World Lore(世界观对话 + 费伦编年史) > 子技能 `dnd-dm-skill:world-lore` > 基于 `DNDbook/8-世界观与功能设计/data/world_cards.jsonl`(360 张知识卡)的 RAG 检索, > 让 DM 能以「托尔金式」深度追问费伦 / 多元宇宙设定,并按纪元模板生成可编年史。 ## 何时调用 - 玩家 / 用户追问世界观细节(神祇、种族、位面、地理、派系、历史事件) - 需要生成一段「有重量、可追问、可编年」的设定叙述或编年史 - 为功能二(模组生成)检索地点 / 派系 / 怪物素材 ## 核心原则(对标托尔金) 1. **有据可依**:所有事实性陈述必须来自检索到的知识卡(`source_file` 可追溯),禁止凭空编造设定。 2. **有重量**:把事件写成「起因 → 经过 → 后果 → 遗留」,而非罗列词条。 3. **可编年**:时间叙述用「纪元 → 时代 → 事件」三级框架(见 `references/world-lore-workflow.md` §编年史模板)。 4. **可追问**:每段叙述末尾给出 2–3 个「可进一步追问」的钩子,引导下一轮对话。 5. **中文叙述**:默认中文输出,专有名词保留中文译名(如「深水城」「被遗忘的国度」)。 ## 运行方式(脚本) 检索脚本位于 skill 根 `scripts/lens_rag.py`(共享引擎)。从本子技能目录调用: ```bash # 1) 普通世界观查询(返回知识摘要,供你撰写叙述) python "scripts/lens_rag.py" "提夫林 起源" --top-k 6 # 2) 限定类型查询(如只查神祇 / 地点 / 事件) python "scripts/lens_rag.py" "深水城 领主" --types location faction --top-k 5 # 3) 编年史模式(优先聚合 chronicle/event/location/faction/deity) python "scripts/lens_rag.py" --chronicle "阴影帝国兴衰" --top-k 12 # 4) 输出原始 JSON(含 _score,便于程序化处理) python "scripts/lens_rag.py" "费伦万神殿" --types deity --json ``` > 环境变量 `DND_LENS_DATA` 可覆盖数据目录;默认指向 skill 内 `data/`。 ## 工作流 详细提示词骨架、编年史三级模板、单事件卡片结构见 **`references/world-lore-workflow.md`**。 标准循环: 1. 解析用户问题 → 提炼检索词(中文关键词 + 可能的英文专名)。 2. 运行检索脚本拿到「知识摘要」。 3. 按 workflow 的叙事约束撰写回答 / 编年史(事实来自卡片,文学加工在你)。 4. 末尾给出可追问钩子;若用户深挖,回到第 1 步。
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/ackiles/skills/dnd-dm-skill",
"sourceUrl": "https://clawhub.ai/ackiles/skills/dnd-dm-skill",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T18:30:49.607Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-ackiles-dnd-dm-skill/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-ackiles-dnd-dm-skill/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T18:30:49.607Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "2.1K downloads",
"href": "https://clawhub.ai/ackiles/dnd-dm-skill",
"sourceUrl": "https://clawhub.ai/ackiles/dnd-dm-skill",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T18:30:49.607Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.2.1",
"href": "https://clawhub.ai/ackiles/dnd-dm-skill",
"sourceUrl": "https://clawhub.ai/ackiles/dnd-dm-skill",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-09-24T17:38:33.174Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-ackiles-dnd-dm-skill/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-ackiles-dnd-dm-skill/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.2.1",
"description": "DND DM Skill 1.2.1 introduces a suite of new official subskills and a unified DND Lens toolkit, along with an expanded judge/narrative layer and CLI tool. - 新增「DND Lens」三件套子技能(world-lore, module-forge, echo-map),支持世界观检索、定制模组生成、真实经历映射 - 引入统一的知识资产目录(data/)+ 检索脚本(scripts/lens_rag.py) - 新增一条命令式检定工具(dnd-check),自动组装加值和检定,极大提升效率 - 判定层 & 叙事层升级,完善 contract 保护、四级文本注入及缓存、性能与确定性兜底 - Skill 结构调整:详细引导各子技能用法,丰富协作流程 - 增加多项开发与数据文件,优化目录结构与文件组织",
"href": "https://clawhub.ai/ackiles/dnd-dm-skill",
"sourceUrl": "https://clawhub.ai/ackiles/dnd-dm-skill",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-09-24T17:38:33.174Z",
"isPublic": true
}
]
}Record generated Oct 9, 2026.
