Install
openclaw skills install dnd-dm-skill通用Dungeon Master AI城主系统。基于2024版D&D 5e规则的智能AI地牢城主程序。支持场景级懒加载、世界状态追踪、剧情摘要、模块化运行。
openclaw skills install dnd-dm-skill基于 2024版 D&D 5e 规则 的 AI 地下城主系统。纯对话交互,不需要专用客户端,任何 IM 软件即可运行。
如果你已经通过插件安装了本技能 (dnd-dm),请执行以下部署步骤:
将插件 skill/references/ 目录中的文件复制到工作目录根:
your-workspace/
├── DM_RULES.md ← 运行规则(6层分层架构)
├── DM_RULES_INDEX.md ← 层级索引(含关键词速查列)
├── DM_TEMPLATES.md ← 信息展示模板(9种场景模板)
├── DM_MAP_SYS.md ← 地图生成系统
├── CHAR_CREATION.md ← 角色创建流程(7阶段)
├── MODULE_ARC.md ← 模组运行结构(通用模板)
├── MODULE_INDEX.md ← 模组章节索引(指针格式)
├── DM_DEV_GUIDE.md ← 城主开发规则
├── SOUL.md / IDENTITY.md ← DM 人格定义文件
├── srd/ ← SRD 5.2.1 参考文档(含Python搜索脚本)
├── code/ ← 代码模板库
├── rules/ ← [自行准备] 2024版三宝书
├── modules/ ← [自行准备] D&D 模组文件
├── saves/ ← [自动生成] 存档目录
├── world_state.json ← [自动生成] 世界状态
├── plot_summary.json ← [自动生成] 剧情摘要
└── live_party.json ← [自动生成] 实时角色状态
在 ~/.config/openclaw/agents.yaml 中配置此 skill:
agent:
name: dnd-dm
skills:
- dnd-dm
启动后,城主会自动:
modules/ 目录扫描可用模组init_module() 自动生成模板→进入对话式角色创建本技能与 dnd5e-srd skill 配合使用:
| 技能 | 作用 | 配合方式 |
|---|---|---|
dnd-dm(本技能) | 城主行为规则 + 裁决流程 + 展示模板 | 主技能,定义DM如何行动 |
dnd5e-srd | SRD 5.2.1 RAG 检索——法术、职业、装备、怪物、状态 | 战时快速查规则 — 通过 Python 脚本搜索+展开引用 |
rules/ 目录 | 2024版三宝书全文(玩家手册+城主指南+怪物图鉴) | 备份查阅 — SRD 搜索不到时降级使用 |
分工原则:
srd/ Python 脚本检索[DND5eSRD_XXX-YYY.md, chars N-M]rules/ 规则书全文本技能不包含 SRD 文件;需用户同时安装
dnd5e-srdskill 或将 SRD 文件部署到工作目录的srd/子目录。 详细分工参见DM_RULES.md→「规则参考来源分工」。
19条运行规则按场景分为 6层,含 5 级上下文加载优先级体系(P0-P5):
| 层 | 名称 | 规则 | Token 策略 |
|---|---|---|---|
| 0 | 全局基石 | 规则10(红线15条), 规则18(代码模板) | P0 常驻 |
| 1 | 运行时交互 | 规则0-1.5,2,2b,3,4,7,8,17(共12条) | P1 场景推进时加载 |
| 2 | 展示模板 | 规则5(经验结算), 规则9(模板), 规则15(战斗展示) | P1 展示时加载 |
| 3 | 战斗系统 | 规则15b(装备加成) | P3 进入战斗检索 |
| 4 | 进度与状态 | 规则13(升级), 规则14(存档+剧情摘要), 规则16(实时状态) | P4 升级/存档时加载 |
| 5 | 模组控制 | 规则12(通用构建+存档恢复核查) | P5 开新局加载 |
5级上下文加载优先级(P0-P5):
| 级别 | 内容 | Token预算 |
|---|---|---|
| P0 常驻 | SOUL + 世界状态摘要(50-100t) + 剧情摘要(100-300t) | ~2.3K |
| P1 当前场景 | 场景原文(场景索引行范围加载) + NPC条目 | ~3.5-6.5K |
| P2 对话 | 最近5-10轮 | ~2K |
| P3 规则检索 | 关键词 → rule/retriever.py 按需加载 | 0~2K |
| P4 SRD检索 | 法术/怪物/装备 → srd/scripts/ 按需搜索 | 0~1K |
| 总计 |
日常探索仅需 P0+P1+P2(~8-10K tokens),较旧版全量加载(~50-75K)节省 70-85%。
按 ## 识别场景边界,每次只加载当前场景(~2.5K tokens),替代整章文件(~27-55K tokens)。场景切换时通过 scene_index.py 自动更新行范围。
6种数据结构追踪派系关系、任务进度、NPC状态、地点发现、游戏天数、当前场景。增量更新 API:update_faction()、update_quest()、update_npc_status() 等。
每次存档自动生成100-300 token摘要(队伍状态+位置+NPC关系+关键事件+任务进度)。会话启动优先加载摘要替代完整聊天历史。仅当玩家要求详细回溯时才加载原始历史。
retriever.py 提供19组关键词→规则ID映射。load_rules_by_keywords() 按需提取匹配规则文本,替代加载整层(5K→0.5-2K tokens)。
init_module(module_name) 接受任意模组名,自动生成通用模板(索引/运行结构/世界状态/场景索引)。所有文件通过 scan_modules() 自动发现,零硬编码。
checks.py 提供 resolve_skill_check()、check_hit_v2()、resolve_save_check(),显示完整加值构成明细(熟练+属性+装备+临时),替代纯数字总览。
combat_state.json 文件跟踪,替代LLM记忆live_party.jsonsaves/存档*.json:自动递增编号,不覆盖已有plot_summary.json)live_party.json:实时角色状态(每次变更后立即更新)combat_state.json:持久化跟踪回合/HP/效果module_cache.json:章节内容一次读取,按场景/NPC检索quickref.py:按关键词1行检索,不翻阅全文| 文件 | 说明 |
|---|---|
DM_RULES.md | 核心规则,19条规则按6层组织 + P0-P5优先级 |
DM_RULES_INDEX.md | 层级索引,含关键词速查列和规则检索提示 |
DM_TEMPLATES.md | 展示模板:剧情整理、房间布局、战斗态势表、角色卡、任务清单、法术展示 |
DM_MAP_SYS.md | 地图生成系统:Excel地图 + emoji标记 + 坐标查询 |
CHAR_CREATION.md | 对话式角色创建的7阶段流程 |
MODULE_ARC.md | 模组剧情框架通用模板 |
MODULE_INDEX.md | 模组章节索引(指针格式,引用场景索引) |
SOUL.md / IDENTITY.md | DM 人格定义文件 |
DM_DEV_GUIDE.md | 城主开发规则(8条开发规则,包含版本发布约束) |
运行时所有计算、格式化、文件操作强制优先调用以下预构建函数:
| 分类 | 目录 | 核心函数 |
|---|---|---|
| 🎲 骰子 | code/dice/rolls.py | roll_d20() / rolling("3d6+2") / roll_stat() |
| ⚔️ 战斗 | code/combat/display.py | build_combat_table() 先攻表 |
code/combat/resolve.py | check_hit() 命中 / calc_damage() 伤害 | |
code/combat/checks.py | resolve_skill_check() / check_hit_v2() / resolve_save_check() 检定展示 | |
code/combat/state.py | new_combat()→advance_turn()→get_combat_table() 战斗持久化 | |
code/combat/formulas.py | full_attack_sequence() / save_check_text() 公式模板 | |
| 💾 存档 | code/save/io.py | list_saves() / load_save() / write_save() / write_save_with_summary() |
code/save/templates.py | new_save_template() 预定义存档结构(含 plotSummary 字段) | |
| 📦 模组 | code/module/scanner.py | scan_modules() / read_chapter() 自动发现章节文件 |
code/module/init.py | init_module(module_name) 通用模组初始化(零硬编码) | |
code/module/scene_index.py | build_scene_index() / load_scene_by_index() / set_current_scene() 场景懒加载 | |
code/module/cache.py | load_chapter_cache() 章节预加载缓存 | |
code/module/builder.py | build_chapter_content() 通用章节内容构建 | |
| 👥 角色 | code/party/live.py | get_character() / update_party() / find_item_in_party() |
code/party/xp.py | calc_combat_xp() / calc_noncombat_xp() | |
| 📋 状态 | code/state/world.py | load_world_state() / update_faction() / update_quest() / update_npc_status() / get_world_summary() |
| 📝 摘要 | code/summary/generate.py | generate_plot_summary() / save_summary() / load_summary() / update_summary() |
| 🔍 规则 | code/rule/retriever.py | retrieve_by_keyword(keyword) / load_rules_by_keywords() 关键词→规则文本 |
| 📋 速查 | code/quickref.py | get_rule() / search_rules() / get_red_lines() |
完整函数索引见 code/CODE_LIBRARY.md。
运行时城主使用以下标记格式描述场景:
[交互物] — 可互动的物体/位置【NPC】 — 非玩家角色"对话" — 引号内为NPC对话plot_summary.json(100-300 tokens)替代完整聊天历史所有新增规则必须归入层0-5之一(DM_DEV_GUIDE.md 开发规则6)。违反视为结构污染,会被回退。
版本 1.0.12 · 2026-05-23 · 基于2024版D&D 5e规则 · 集成 dnd5e-srd skill · 通用模组架构 · 场景级懒加载