Token导航 LogoToken导航

Agent Skill · 效率

mud-adventure(泥浆冒险)

mud-adventure 用于补充效率相关能力,适合在 OpenClaw 中需要让 Agent 承接效率相关任务时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

mud-adventure 是效率类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为只读;许可证为 MIT-0,第三方扫描已通过,按安装量在效率类的 21,003 个 Skill 里排第 12,774。

总安装 3,992周安装 168GitHub Stars 公开资料未说明下载 1,398核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
1.0.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:mud-adventure(泥浆冒险)
来源仓库:https://github.com/weistiger/mud-adventure
安装命令:
openclaw skills install mud-adventure
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install mud-adventure

这个 Skill 是做什么的

效率类 Skill 把重复的整理、汇总、转换工作交给助手完成,减少手工复制粘贴。

文字冒险型 MUD 游戏创作助手。用于快速搭建文字冒险游戏的世界观、地图、NPC、物品、任务与对话树。当用户说"做 MUD"、"写文字冒险"、"创建mud游戏"、"搭建mud世界"时触发。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install mud-adventure;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它标注为只读,先用只读任务试一次,确认行为符合预期再扩大使用范围。

常见问题

6 条

mud-adventure 怎么安装?

在终端执行 openclaw skills install mud-adventure。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

mud-adventure 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

mud-adventure 需要什么权限?

权限级别是只读。该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

mud-adventure 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

mud-adventure 用的人多吗?

公开数据是累计安装 3,992 次,近一周安装 168 次,下载 1,398 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

mud-adventure 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。
  • 标注为只读权限,试用阶段不容易误改本地文件。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理效率类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

效率类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
github

GitHub 代码协作 · OpenClaw

7,632,918545需要联网MIT-0通过
nano-pdf

Nano PDF 文档 · OpenClaw

4,249,476231需要联网MIT-0通过
auto-updater

自动更新程序 · OpenClaw

2,964,063386操作浏览器MIT-0通过
video-frames

视频帧 · OpenClaw

2,621,304112需要联网MIT-0通过
gemini

Gemini 助手 · OpenClaw

2,547,39648需要联网MIT-0有提醒
mud-adventure

泥浆冒险 · 本页

3,992—只读MIT-0通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
mud-adventure
description
文字冒险型 MUD 游戏创作助手。用于快速搭建文字冒险游戏的世界观、地图、NPC、物品、任务与对话树。当用户说"做 MUD"、"写文字冒险"、"创建mud游戏"、"搭建mud世界"时触发。

MUD Adventure Skill

文字冒险型 MUD 游戏创作技能包。帮你从零构建可运行的单文件 Python MUD 游戏。

快速开始

游戏核心只需一个 Python 文件(game.py),运行方式:

python game.py

首次使用,按以下流程构建游戏:

世界观设计 → 地图建模 → 人物/物品 → 对话/任务 → 合并到 game.py

详细设计指南见 references/world-design.md(世界观、故事结构) 详细系统指南见 references/game-systems.md(战斗、物品、任务) 示例代码见 references/examples.md

默认游戏模板

以下模板可直接复制到 game.py 运行,内含 3 个房间、1 个 NPC、1 个战斗场景:

import random

# ============ 世界设定 ============
TITLE = "迷雾森林"
AUTHOR = "石头龙虾二号"

# ============ 房间定义 ============
rooms = {
    "入口": {
        "name": "森林入口",
        "desc": "你站在一棵巨大的古橡树下,晨雾弥漫,四周静得只能听见自己的呼吸。",
        "exits": {"北": "大厅", "东": "小屋"},
        "items": [],
        "npcs": [],
    },
    "大厅": {
        "name": "迷雾大厅",
        "desc": "雾气中隐约可见一座石制大厅,墙壁上刻着模糊的文字。",
        "exits": {"南": "入口", "北": "宝藏室"},
        "items": ["古老的钥匙"],
        "npcs": ["守卫"],
    },
    "小屋": {
        "name": "林间小屋",
        "desc": "一间破旧的小木屋,窗户透出微弱的烛光。",
        "exits": {"西": "入口"},
        "items": ["治疗药水"],
        "npcs": ["隐士"],
    },
    "宝藏室": {
        "name": "隐藏宝藏室",
        "desc": "你推开门,金光闪闪的宝物堆满了整个房间!",
        "exits": {"南": "大厅"},
        "items": ["黄金剑"],
        "npcs": [],
        "locked": True,
    },
}

# ============ NPC 定义 ============
npcs = {
    "守卫": {
        "name": "石甲守卫",
        "desc": "一个身披石甲的沉默战士,目光警惕地盯着你。",
        "hp": 30,
        "attack": 8,
        "dialogue": {
            "你好": "守卫冷哼一声:'想过去?先证明你的实力!'",
            "挑战": "守卫举起巨剑:'那就来吧!'",
            "离开": "守卫退回阴影中,不再说话。",
        },
        "hostile": True,
    },
    "隐士": {
        "name": "森林隐士",
        "desc": "一位白发苍苍的老人,正对着烛火沉思。",
        "hp": 20,
        "attack": 0,
        "dialogue": {
            "你好": "隐士微微一笑:'旅人,这片森林藏着许多秘密。'",
            "帮助": "隐士点点头:'在大厅的墙壁上,有打开宝藏室的提示。'",
            "离开": "隐士挥挥手:'愿森林保佑你。'",
        },
        "hostile": False,
    },
}

# ============ 物品定义 ============
items = {
    "古老的钥匙": {"name": "古老的钥匙", "desc": "一把生锈但依然坚固的钥匙。", "effect": None},
    "治疗药水": {"name": "治疗药水", "desc": "散发淡蓝色光芒的恢复药剂。", "effect": "heal"},
    "黄金剑": {"name": "黄金剑", "desc": "传说中的宝剑,剑身流淌着金色的光芒。", "effect": "power"},
}

# ============ 玩家状态 ============
player = {
    "hp": 100,
    "max_hp": 100,
    "attack": 10,
    "inventory": [],
    "location": "入口",
    "flags": {"大厅_交谈过": False, "击败守卫": False},
}

# ============ 核心函数 ============
def print_intro():
    print(f"\
{'='*50}")
    print(f"  🎮 {TITLE}")
    print(f"  作者:{AUTHOR}")
    print(f"{'='*50}\
")
    print("输入 'help' 查看所有命令。\
")

def show_room():
    room = rooms[player["location"]]
    locked_msg = " [门被锁住了]" if room.get("locked") and not player["flags"].get("有钥匙") else ""
    print(f"\
📍 【{room['name']}】{locked_msg}")
    print(f"  {room['desc']}")
    exits = "、".join(room["exits"].keys())
    print(f"  出口:{exits}")
    if room.get("items"):
        print(f"  物品:{', '.join(room['items'])}")
    if room.get("npcs"):
        print(f"  NPC:{', '.join(room['npcs'])}")

def show_help():
    print("""
  help     - 显示此帮助
  look     - 环顾四周
  go <方向> - 向指定方向移动(北/南/东/西/前/后)
  look <物品>- 查看物品
  take <物品> - 拾取物品
  inventory - 查看背包
  use <物品> - 使用物品
  talk <NPC> - 与NPC交谈
  attack <NPC>- 攻击敌人
  status    - 查看角色状态
  quit      - 退出游戏
  """)

def move(direction):
    room = rooms[player["location"]]
    if direction not in room["exits"]:
        print("  你无法往那个方向走。")
        return
    target = room["exits"][direction]
    if rooms[target].get("locked") and not player["flags"].get("有钥匙"):
        print(f"  {rooms[target]['name']}的门是锁着的。你需要找到钥匙。")
        return
    player["location"] = target
    show_room()

def take_item(item_name):
    room = rooms[player["location"]]
    for i, item in enumerate(room.get("items", [])):
        if item_name in item or item in item_name:
            player["inventory"].append(item)
            room["items"].pop(i)
            if item == "古老的钥匙":
                player["flags"]["有钥匙"] = True
            print(f"  你拾取了「{item}」。")
            return
    print("  这里没有这个东西。")

def use_item(item_name):
    for i, item in enumerate(player["inventory"]):
        if item_name in item or item in item_name:
            if items[item]["effect"] == "heal":
                heal = min(30, player["max_hp"] - player["hp"])
                player["hp"] += heal
                player["inventory"].pop(i)
                print(f"  你喝下了「{item}」,恢复了 {heal} 点生命!")
            elif items[item]["effect"] == "power":
                player["attack"] += 5
                player["inventory"].pop(i)
                print(f"  你装备了「{item}」,攻击力提升!")
            else:
                print(f"  你使用了「{item}」。")
            return
    print("  你的背包里没有这个东西。")

def talk_to(target):
    room = rooms[player["location"]]
    if target not in room.get("npcs", []):
        print("  这里没有这个人。")
        return
    npc = npcs[target]
    print(f"\
  👤 {npc['name']}:{npc['desc']}")
    print("\
  你想说什么?(输入选项前的关键词)")
    for key in npc["dialogue"]:
        print(f"    - {key}")
    choice = input("\
  > ").strip()
    if choice in npc["dialogue"]:
        print(f"\
  {npc['dialogue'][choice]}")
        if choice == "帮助" and target == "隐士":
            player["flags"]["大厅_交谈过"] = True
    else:
        print("  对方没有回应……")

def combat(enemy_id):
    if enemy_id not in npcs:
        print("  这里没有这个敌人。")
        return
    enemy = npcs[enemy_id]
    print(f"\
  ⚔️  你向 {enemy['name']} 发起了战斗!")
    while enemy["hp"] > 0 and player["hp"] > 0:
        dmg_to_enemy = random.randint(max(1, player["attack"]-3), player["attack"]+3)
        enemy["hp"] -= dmg_to_enemy
        print(f"  你造成了 {dmg_to_enemy} 点伤害。")
        if enemy["hp"] <= 0:
            print(f"\
  🎉 你击败了 {enemy['name']}!")
            player["flags"]["击败守卫"] = True
            rooms[player["location"]]["npcs"].remove(enemy_id)
            if "守卫" in enemy_id:
                rooms["宝藏室"]["locked"] = False
            return
        dmg_to_player = random.randint(max(1, enemy["attack"]-2), enemy["attack"]+2)
        player["hp"] -= dmg_to_player
        print(f"  {enemy['name']} 对你造成了 {dmg_to_player} 点伤害!")
        print(f"  你的生命值:{player['hp']}/{player['max_hp']}")
        if player["hp"] <= 0:
            print("\
  💀 你倒下了……游戏结束。")
            return
    print(f"\
  敌人生命值:{enemy['hp']}")

def main():
    print_intro()
    show_room()
    while True:
        cmd = input("\
> ").strip()
        if not cmd:
            continue
        parts = cmd.split(maxsplit=1)
        verb = parts[0].lower()
        arg = parts[1] if len(parts) > 1 else ""
        if verb in ("q", "quit", "exit"):
            print("\
  再见,旅人!👋\
")
            break
        elif verb in ("help", "h", "?"):
            show_help()
        elif verb in ("look", "l"):
            if arg:
                for item in rooms[player["location"]].get("items", []):
                    if arg in item:
                        print(f"  {items[item]['desc']}")
                        break
                else:
                    print("  你没有看到这个东西。")
            else:
                show_room()
        elif verb in ("go", "walk", "移动", "走"):
            move(arg)
        elif verb in ("n", "s", "e", "w", "north", "south", "east", "west", "北", "南", "东", "西"):
            dir_map = {"n":"北","s":"南","e":"东","w":"西","north":"北","south":"南","east":"东","west":"西"}
            move(dir_map.get(verb, verb))
        elif verb in ("take", "get", "捡", "拿"):
            take_item(arg)
        elif verb in ("inv", "inventory", "i", "背包", "物品"):
            if player["inventory"]:
                print("  背包:" + "、".join(player["inventory"]))
            else:
                print("  背包是空的。")
        elif verb in ("use", "use", "使用"):
            use_item(arg)
        elif verb in ("talk", "chat", "说", "谈"):
            talk_to(arg if arg else input("  和谁交谈?> ").strip())
        elif verb in ("attack", "kill", "打", "攻击", "fight"):
            room_npcs = rooms[player["location"]].get("npcs", [])
            if not room_npcs:
                print("  这里没有可以攻击的目标。")
            elif len(room_npcs) == 1:
                combat(room_npcs[0])
            else:
                combat(arg if arg else input("  攻击谁?> ").strip())
        elif verb in ("status", "sta", "状态"):
            print(f"  HP:{player['hp']}/{player['max_hp']} | 攻击:{player['attack']}")

if __name__ == "__main__":
    main()

扩展指南

添加新房间

在 rooms 字典中新增键值对,定义 name、desc、exits、items、npcs。

添加新 NPC

在 npcs 字典中定义,设置 name、desc、hp、attack、dialogue、hostile。

添加新物品

在 items 字典中定义,设置 name、desc、effect(None/heal/power/custom)。

添加战斗系统

参考 references/game-systems.md 中的战斗系统设计,可扩展:经验值、等级、怪物掉落、魔法技能。

添加任务系统

参考 references/game-systems.md 中的任务系统,用 player["flags"] 跟踪任务进度。

平台分布

OpenClaw

76.75%
按下载量换算1,073

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills