From 826570cfce88df39b9fcc1fe3906da1482636f91 Mon Sep 17 00:00:00 2001 From: JarvisZhu97 Date: Fri, 27 Feb 2026 10:38:48 +0800 Subject: [PATCH] Add files via upload --- skills/README.md | 342 ++++++++++++++++++ skills/SKILL.md | 540 +++++++++++++++++++++++++++++ skills/language_config.json | 168 +++++++++ skills/magic_achievement_system.py | 431 +++++++++++++++++++++++ skills/personalized_config.json | 187 ++++++++++ skills/visual_effects.json | 53 +++ 6 files changed, 1721 insertions(+) create mode 100644 skills/README.md create mode 100644 skills/SKILL.md create mode 100644 skills/language_config.json create mode 100644 skills/magic_achievement_system.py create mode 100644 skills/personalized_config.json create mode 100644 skills/visual_effects.json diff --git a/skills/README.md b/skills/README.md new file mode 100644 index 00000000000..21ec0e77e43 --- /dev/null +++ b/skills/README.md @@ -0,0 +1,342 @@ +# 🪄 Magic Achievement System for OpenClaw + +[![OpenClaw](https://img.shields.io/badge/OpenClaw-Skill-blue)](https://openclaw.ai) +[![Python](https://img.shields.io/badge/Python-3.8+-green)](https://python.org) +[![License](https://img.shields.io/badge/License-MIT-yellow)](LICENSE) + +> 一个魔幻的隐藏成就系统,为你的 OpenClaw 体验增添惊喜与乐趣! + +[English](#english) | [日本語](#japanese) + +--- + +## ✨ 特性 + +- 🎭 **职业个性化** - 根据你的职业生成专属成就(医药研发/程序员/研究员/管理者/学生) +- 🎬 **流行文化梗** - 融入电影、游戏、动漫、Meme、历史等丰富文化梗 +- 🔒 **完全隐藏** - 成就触发前完全保密,触发后揭晓惊喜 +- 💝 **情绪价值** - 温暖、鼓励、惊喜的文案与视觉奖励 +- 🌐 **多语言支持** - 中文、English、日本語 + +--- + +## 📦 安装 + +### 方法 1: 直接复制 + +```bash +# 克隆到 OpenClaw 技能目录 +cd ~/.openclaw/workspace/skills +git clone https://github.com/YOUR_USERNAME/openclaw-magic-achievement.git magic-achievement-system +``` + +### 方法 2: 手动安装 + +1. 下载本仓库 +2. 复制到 OpenClaw 技能目录: + ```bash + cp -r magic-achievement-system ~/.openclaw/workspace/skills/ + ``` + +--- + +## 🚀 使用方法 + +### 步骤 1: 初始化 + +```python +from magic_achievement_system import MagicAchievementSystem, ask_user_preferences + +# 显示初始化提示 +pref = ask_user_preferences() +print(pref["message"]) +# 用户回复格式: "pharma zh" +``` + +### 步骤 2: 创建系统实例 + +```python +# 根据用户选择创建系统 +magic = MagicAchievementSystem( + player_name="Jarvis", + language="zh", # zh / en / ja + profession="pharma" # pharma / programmer / researcher / manager / student +) +``` + +### 步骤 3: 检测成就触发 + +```python +# 1. 关键词触发 - 用户输入时检测 +result = magic.check_message("今晚月亮好圆啊") +if result: + print(result["display_message"]) + # 解锁: 🌙 去月球 + +# 2. 时间触发 - 会话开始时检测 +from datetime import datetime +result = magic.check_time(datetime.now()) +if result: + print(result["display_message"]) + # 可能解锁: 🦉 午夜守望者 + +# 3. 累计触发 - 行为完成后检测 +result = magic.increment_counter("pdf_processed") +if result: + print(result["display_message"]) + # 达到里程碑时解锁相应成就 +``` + +### 便捷函数 + +```python +from magic_achievement_system import check_achievement, get_status + +# 快速检查成就 +message = check_achievement( + player_name="Jarvis", + trigger_type="message", # message / time / counter + trigger_data="今晚月亮好圆", + language="zh", + profession="pharma" +) +if message: + print(message) + +# 获取玩家状态 +status = get_status("Jarvis") +print(f"已解锁 {status['total_unlocked']} 个成就") +``` + +--- + +## 🎯 触发机制 + +### 1️⃣ 关键词触发 + +检测用户输入中的特定关键词: + +| 关键词 | 成就 | 文化梗 | +|--------|------|--------| +| 月亮/moon | 去月球 | 电影《去月球》 | +| 梦/dream | 盗梦空间建筑师 | 电影《盗梦空间》 | +| 代码/code | 黑客帝国觉醒者 | 电影《黑客帝国》 | +| 化合物/分子 | 分子魔法师 | 哈利波特 | +| CDE/审评 | 监管忍者 | 忍者文化 | +| bug/debug | Bug猎人 | 程序员文化 | +| 真香 | 真香定律 | 王境泽梗 | + +### 2️⃣ 时间触发 + +基于使用时间的成就: + +| 时间段 | 成就 | 稀有度 | +|--------|------|--------| +| 00:00-06:00 | 午夜守望者 | 🥈 稀有 | +| 06:00-09:00 | 早起鸟 | 🥉 普通 | +| 22:00-24:00 | 夜猫子 | 🥉 普通 | +| 周末 | 周末战士 | 🥉 普通 | + +### 3️⃣ 累计次数触发 + +行为里程碑成就: + +| 行为 | 里程碑 | 成就 | 稀有度 | +|------|--------|------|--------| +| 发送消息 | 1/10/100/1000 | 初次见面/话匣子/话痨/聊天达人 | 🥉/🥉/🥈/🥇 | +| 完成任务 | 1/10/50/100 | 新手村毕业/任务达人/任务机器/满级大佬 | 🥉/🥈/🥇/💎 | +| 处理PDF | 1/10/50/100 | PDF新手/PDF熟练工/PDF征服者/PDF大师 | 🥉/🥉/🥈/🥇 | +| 创建Excel | 1/10/50 | 表格新手/表格达人/表格魔术师 | 🥉/🥈/🥇 | + +--- + +## 🏅 稀有度等级 + +| 等级 | 图标 | 数量占比 | +|------|------|----------| +| 普通 | 🥉 | ~40% | +| 稀有 | 🥈 | ~30% | +| 史诗 | 🥇 | ~20% | +| 传说 | 💎 | ~8% | +| 神话 | 👑 | ~2% | + +--- + +## 📁 文件结构 + +``` +magic-achievement-system/ +├── SKILL.md # 详细技能文档 +├── README.md # 本文件 +├── scripts/ +│ └── magic_achievement_system.py # 核心代码 +├── assets/ +│ ├── visual_effects.json # 视觉特效配置(可选) +│ ├── language_config.json # 多语言配置(可选) +│ └── personalized_config.json # 个性化配置(可选) +└── examples/ # 示例代码 + ├── basic_usage.py + └── integration_example.py +``` + +--- + +## 🔧 高级配置 + +### 自定义关键词触发 + +```python +# 在初始化后添加自定义关键词 +magic.keyword_triggers[r"自定义关键词"] = "custom_achievement" + +# 添加对应的成就模板 +from magic_achievement_system import Achievement, Rarity + +magic.achievements["custom_achievement"] = Achievement( + id="custom_achievement", + name="自定义成就", + name_en="Custom Achievement", + name_ja="カスタム実績", + description="这是一个自定义成就", + trigger_condition="触发条件", + reference="自定义文化梗", + rarity=Rarity.EPIC, + category="custom", +) +``` + +### 自定义累计里程碑 + +```python +# 添加新的计数器里程碑 +magic.count_triggers["my_custom_action"] = { + 5: {"id": "custom_5", "name": "自定义5次", "rarity": Rarity.COMMON}, + 10: {"id": "custom_10", "name": "自定义10次", "rarity": Rarity.RARE}, +} +``` + +--- + +## 🎨 成就解锁效果示例 + +``` +✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ + +叮叮~ 🥇 史诗成就解锁 🥇 叮叮~ + +💫 **去月球** 💫 + +飞向月球的美好愿望 +📚 文化梗: 电影《去月球》/ Fly Me to the Moon +🎯 触发条件: 询问关于月亮的信息 + +📊 收集进度: 10 / 500+ + +✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ +``` + +--- + +## 🤝 贡献 + +欢迎提交 Issue 和 Pull Request! + +### 添加新的成就 + +1. 在 `KEYWORD_TRIGGERS` 中添加关键词映射 +2. 在 `ACHIEVEMENT_TEMPLATES` 中添加成就定义 +3. 提交 PR 并说明文化梗来源 + +### 添加新的文化梗类别 + +支持的文化梗类别: +- 🎥 电影梗 +- 🎮 游戏梗 +- 📜 历史梗 +- 😂 Meme梗 +- 📺 动漫梗 + +--- + +## 📄 License + +MIT License - 详见 [LICENSE](LICENSE) 文件 + +--- + +## 🙏 致谢 + +- [OpenClaw](https://openclaw.ai) - 强大的 AI 助手平台 +- 所有贡献者和用户的支持 + +--- + +## 📮 联系我们 + +- GitHub Issues: [提交问题](https://github.com/YOUR_USERNAME/openclaw-magic-achievement/issues) +- Discussions: [参与讨论](https://github.com/YOUR_USERNAME/openclaw-magic-achievement/discussions) + +--- + +

🇬🇧 English

+ +A magical hidden achievement system for OpenClaw with multi-language support and pop culture references. + +### Features + +- 🎭 **Profession-based achievements** (Pharma/Programmer/Researcher/Manager/Student) +- 🎬 **Pop culture references** (Movies/Games/Anime/Memes/History) +- 🔒 **Completely hidden** until triggered +- 💝 **Emotional rewards** with visual effects +- 🌐 **Multi-language** support (EN/ZH/JA) + +### Quick Start + +```python +from magic_achievement_system import MagicAchievementSystem + +magic = MagicAchievementSystem( + player_name="YourName", + language="en", + profession="programmer" +) + +# Check keyword triggers +result = magic.check_message("I love coding") +if result: + print(result["display_message"]) +``` + +--- + +

🇯🇵 日本語

+ +OpenClaw向けの魔法の隠し実績システム。 + +### 特徴 + +- 🎭 **職業別実績**(医薬品開発/プログラマー/研究者/管理者/学生) +- 🎬 **ポップカルチャー梗**(映画/ゲーム/アニメ/ミーム/歴史) +- 🔒 **完全な秘密** - 解放されるまで非表示 +- 💝 **感情的報酬** - 視覚効果付き +- 🌐 **多言語対応**(日本語/英語/中国語) + +### クイックスタート + +```python +from magic_achievement_system import MagicAchievementSystem + +magic = MagicAchievementSystem( + player_name="YourName", + language="ja", + profession="researcher" +) + +result = magic.check_message("月がきれいですね") +if result: + print(result["display_message"]) +``` + +--- + +**🪄 Ready to start your magical achievement journey?** ✨ diff --git a/skills/SKILL.md b/skills/SKILL.md new file mode 100644 index 00000000000..25f06e7033b --- /dev/null +++ b/skills/SKILL.md @@ -0,0 +1,540 @@ +--- +name: magic-achievement-system +description: A magical hidden achievement system with multi-language support (Chinese/English/Japanese) and personalization features. Randomly generates 300-1000 secret achievements based on user's profession and pop culture references (movies/games/history/memes/anime). Profession-specific achievements for pharma, programmer, researcher, manager, student. Pop culture achievements include references like "To the Moon" (triggered by asking about moon). Achievements are completely hidden until triggered. When unlocked, reveals name, trigger condition, and emotional rewards. Use when users want personalized, fun, mysterious gamification for their OpenClaw experience. +--- + +# 🪄 魔幻成就系统 (Magic Achievement System) + +Transform your OpenClaw experience into a personalized magical journey with hidden achievements based on your profession and favorite pop culture references. + +🌐 **Languages**: 中文 (zh) / English (en) / 日本語 (ja) +💼 **Professions**: 医药研发 / Programmer / Researcher / Manager / Student +🎬 **Pop Culture**: Movies / Games / History / Memes / Anime + +## ✨ 核心特性 (Core Features) + +### 🎭 职业个性化 (Profession Personalization) + +系统会**主动询问用户职业**,并生成相关成就: + +| 职业 | 示例成就 | 触发条件 | 文化梗 | +|-----|---------|---------|--------| +| 💊 医药研发 | 分子魔法师 | 分析化合物结构 | 哈利波特 | +| 💻 程序员 | Hello World发布者 | 编写第一个程序 | 程序员入门梗 | +| 🔬 研究员 | 文献收藏家 | 阅读50篇文献 | 收藏家文化 | +| 👔 管理者 | 会议马拉松冠军 | 连续开会4小时 | 马拉松梗 | +| 📚 学生 | deadline战士 | 截止前1小时交作业 | 战士称号 | + +### 🎬 流行文化梗 (Pop Culture References) + +#### 电影梗 (Movie References) +- **去月球** 🌙 - 询问关于月亮的信息 (电影《去月球》) +- **盗梦空间建筑师** 🌀 - 创建复杂嵌套文件夹 (Inception) +- **黑客帝国觉醒者** 💊 - 第一次理解代码逻辑 (The Matrix) +- **星际穿越者** 🚀 - 连续工作超过24小时 (Interstellar) + +#### 游戏梗 (Game References) +- **新手村毕业** 🎮 - 完成第一个任务 (RPG游戏) +- **满级大佬** 👑 - 达到最高等级 (MMORPG) +- **隐藏Boss发现者** 👹 - 发现隐藏功能 (隐藏Boss) +- **速通玩家** ⚡ - 提前完成任务 (Speedrun) + +#### 历史梗 (History References) +- **阿波罗登月者** 🌙 - 完成重大突破 (阿波罗11号) +- **达芬奇全才** 🎨 - 跨领域完成任务 (达芬奇) +- **爱因斯坦顿悟** 💡 - 突然想到好主意 (爱因斯坦) + +#### Meme梗 (Internet Memes) +- **真香定律** 🍚 - 说过不用某功能后使用它 (王境泽) +- **打工人** 💼 - 在深夜工作 (打工人文化) +- **时间管理大师** ⏰ - 同时处理多个任务 (罗志祥梗) +- **yyds** 🙏 - 发现特别好用的功能 (永远的神) + +#### 动漫梗 (Anime References) +- **火影忍者** 🔥 - 坚持不懈地练习 (Naruto) +- **海贼王** ⚓ - 设定远大目标 (One Piece) +- **千与千寻** 🐉 - 在陌生环境中成长 (Spirited Away) + +### 🔒 绝对保密机制 (Absolute Secrecy) + +- **生成时**: 绝不向用户展示任何成就信息 +- **触发前**: 完全隐藏名称和条件 +- **触发后**: 才揭示成就详情 + 触发条件 + 文化梗来源 + +### 💝 情绪价值奖励 (Emotional Rewards) + +触发后显示: +- **成就名称** + **触发条件** + **文化梗来源** +- **视觉奖励**: 💖🌸🌟🎀💫🦋🌈✨ +- **情绪文案**: 温暖、鼓励、惊喜的话语 + +## 🚀 使用方法 (Usage) + +### 步骤1: 初始化并询问职业 (Initialize & Ask Profession) + +```python +from magic_achievement_system import MagicAchievementSystem, ask_user_preferences + +# 询问用户职业和语言偏好 +pref = ask_user_preferences() +print(pref["message"]) +# 用户回复格式: "pharma zh" (职业 + 语言) +``` + +**系统会询问:** +``` +🪄 魔幻成就系统初始化 + +为了更好地为您生成个性化成就,请告诉我: + +1. 您的职业是? + 💊 pharma - 医药研发 + 💻 programmer - 程序员 + 🔬 researcher - 研究员 + 👔 manager - 管理者 + 📚 student - 学生 + 🌟 other - 其他 + +2. 您 preferred 的语言是? + 🇨🇳 zh - 中文 + 🇬🇧 en - English + 🇯🇵 ja - 日本語 + +请回复格式如: pharma zh +``` + +### 步骤2: 创建个性化系统 (Create Personalized System) + +```python +# 根据用户选择创建系统 +magic = MagicAchievementSystem( + player_name="Jarvis", + achievement_count=500, # 300-1000个 + language="zh", # zh/en/ja + profession="pharma" # pharma/programmer/researcher/manager/student/other +) +``` + +### 步骤3: 成就触发机制 (Achievement Triggers) + +系统通过**三种机制**自动检测成就: + +#### 🔑 机制一:关键词触发 (Keyword Triggers) +检测用户输入中的特定关键词/短语: + +```python +# 关键词映射示例 +KEYWORD_TRIGGERS = { + # 电影梗 + "月亮|moon|月球": "去月球", + "梦|dream|梦境": "盗梦空间建筑师", + "代码|code|编程": "黑客帝国觉醒者", + "时间|time|时钟": "星际穿越者", + + # 游戏梗 + "任务|task|mission": "新手村毕业", + "隐藏|secret|彩蛋": "隐藏Boss发现者", + "快|fast|速通": "速通玩家", + "满级|max level": "满级大佬", + + # 职业相关 - 医药研发 + "化合物|分子|structure": "分子魔法师", + "CDE|审评|监管": "监管忍者", + "数据|分析|统计": "数据炼丹师", + "文献|paper|pubmed": "文献收藏家", + + # 职业相关 - 程序员 + "bug|错误|debug": "Bug猎人", + "正则|regex": "正则表达式巫师", + "git|commit": "版本控制大师", + + # Meme梗 + "真香|打脸": "真香定律", + "打工人|加班": "打工人", + "yyds|永远的神": "yyds", + "时间管理": "时间管理大师", + + # 历史/动漫 + "坚持|努力|奋斗": "火影忍者", + "目标|梦想|航海": "海贼王", + "突破|创新|天才": "爱因斯坦顿悟", +} + +# 检测流程 +result = magic.check_message(user_input) +if result: + print(result["display_message"]) +``` + +#### ⏰ 机制二:时间触发 (Time Triggers) +基于用户使用时间的成就: + +```python +# 时间触发规则 +TIME_TRIGGERS = { + # 时段类 + "00:00-06:00": {"achievement": "午夜守望者", "condition": "在凌晨使用OpenClaw"}, + "06:00-09:00": {"achievement": "早起鸟", "condition": "在清晨使用OpenClaw"}, + "22:00-24:00": {"achievement": "夜猫子", "condition": "在深夜使用OpenClaw"}, + "周末": {"achievement": "周末战士", "condition": "周六/周日使用OpenClaw"}, + "节假日": {"achievement": "敬业先锋", "condition": "法定节假日使用OpenClaw"}, + + # 连续使用类 + "连续7天": {"achievement": "连续登录", "condition": "连续7天使用OpenClaw"}, + "连续30天": {"achievement": "月度全勤", "condition": "连续30天使用OpenClaw"}, + "一周全勤": {"achievement": "完美一周", "condition": "周一至周日都使用OpenClaw"}, + + # 时长类 + "单次>4小时": {"achievement": "马拉松选手", "condition": "单次使用超过4小时"}, + "通宵": {"achievement": "星际穿越者", "condition": "连续工作超过24小时"}, +} + +# 检测流程 +result = magic.check_time(current_timestamp) +``` + +#### 📊 机制三:累计次数触发 (Count Triggers) +基于行为累计的里程碑成就: + +```python +# 累计次数触发规则 +COUNT_TRIGGERS = { + "message_count": { + 1: {"name": "初次见面", "desc": "发送第1条消息"}, + 10: {"name": "话匣子", "desc": "发送10条消息"}, + 100: {"name": "话痨", "desc": "发送100条消息"}, + 1000: {"name": "聊天达人", "desc": "发送1000条消息"}, + }, + "task_completed": { + 1: {"name": "新手村毕业", "desc": "完成第1个任务"}, + 10: {"name": "任务达人", "desc": "完成10个任务"}, + 50: {"name": "任务机器", "desc": "完成50个任务"}, + 100: {"name": "满级大佬", "desc": "完成100个任务"}, + }, + "pdf_processed": { + 1: {"name": "PDF新手", "desc": "处理第1个PDF"}, + 10: {"name": "PDF熟练工", "desc": "处理10个PDF"}, + 50: {"name": "PDF征服者", "desc": "处理50个PDF"}, + 100: {"name": "PDF大师", "desc": "处理100个PDF"}, + }, + "excel_created": { + 1: {"name": "表格新手", "desc": "创建第1个Excel"}, + 10: {"name": "表格达人", "desc": "创建10个Excel"}, + 50: {"name": "表格魔术师", "desc": "创建50个Excel"}, + }, + "search_performed": { + 1: {"name": "探索者", "desc": "第1次搜索"}, + 10: {"name": "信息猎人", "desc": "搜索10次"}, + 50: {"name": "情报专家", "desc": "搜索50次"}, + 100: {"name": "知识海洋", "desc": "搜索100次"}, + }, + "code_executed": { + 1: {"name": "Hello World", "desc": "运行第1段代码"}, + 10: {"name": "代码新手", "desc": "运行10段代码"}, + 50: {"name": "代码诗人", "desc": "运行50段代码"}, + 100: {"name": "代码魔法师", "desc": "运行100段代码"}, + }, + "file_edited": { + 5: {"name": "编辑新手", "desc": "编辑5个文件"}, + 10: {"name": "完美主义者", "desc": "编辑同一文件10次"}, + 50: {"name": "文件管理师", "desc": "编辑50个文件"}, + }, + # 医药研发专属 + "cde_check": { + 1: {"name": "CDE新手", "desc": "第1次查看CDE"}, + 10: {"name": "CDE关注者", "desc": "查看CDE 10次"}, + 30: {"name": "CDE监控员", "desc": "监控CDE 30天"}, + 100: {"name": "监管忍者", "desc": "查看CDE 100次"}, + }, + "competitor_analysis": { + 1: {"name": "竞品新手", "desc": "第1次竞品分析"}, + 10: {"name": "竞品分析师", "desc": "分析10次竞品"}, + 20: {"name": "情报特工", "desc": "分析20次竞品"}, + 50: {"name": "商业间谍", "desc": "分析50次竞品"}, + }, + # 研究员专属 + "literature_search": { + 10: {"name": "文献新手", "desc": "检索10篇文献"}, + 50: {"name": "文献收藏家", "desc": "检索50篇文献"}, + 100: {"name": "文献大师", "desc": "检索100篇文献"}, + }, + # 程序员专属 + "git_operation": { + 10: {"name": "Git新手", "desc": "10次Git操作"}, + 50: {"name": "Git熟练工", "desc": "50次Git操作"}, + 100: {"name": "Git大师", "desc": "100次Git操作"}, + }, +} + +# 检测流程(行为完成后调用) +result = magic.increment_counter("pdf_processed") +``` + +#### 🎯 触发优先级 +1. **关键词触发** - 实时检测用户输入 +2. **时间触发** - 会话开始时检查 +3. **累计触发** - 行为完成后检查 + +## 📊 成就构成 (Achievement Composition) + +生成500个成就时的分配: + +``` +🎲 总计: 500个神秘成就 + ├── 🎯 基础随机成就: 250个 (50%) + ├── 💼 职业相关成就: 100个 (20%) + └── 🎬 流行文化梗成就: 150个 (30%) + ├── 🎥 电影梗: ~40个 + ├── 🎮 游戏梗: ~40个 + ├── 📜 历史梗: ~20个 + ├── 😂 Meme梗: ~30个 + ├── 📺 动漫梗: ~20个 + └── 🥚 时间/交互彩蛋: ~30个 +``` + +## 🎨 触发效果展示 (Display Effects) + +### 职业成就触发示例 + +``` +🌸 ✨ 🌸 +🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸 + +叮叮~ 🌸 稀有成就解锁 🌸 叮叮~ + +💫 **分子魔法师** 💫 + +哇!你做到了!真是太棒了! +📚 文化梗: 哈利波特魔法梗 +🎯 触发条件: 分析化合物分子结构 + +🎁 **神秘奖励:** + 🌸 🌸 🌸 🌸 🌸 🌸 🌸 🌸 🌸 + +📊 **收集进度:** + 已解锁 3 / 500 个神秘成就 + +🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸 +``` + +### 流行文化成就触发示例 + +``` +🎆 ✨ 🎆 +🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸 + +叮叮叮~ 🎆 史诗成就解锁 🎆 叮叮叮~ + +💫 **去月球** 💫 + +这是一个美好的开始~ +📚 文化梗: 电影《去月球》/ Fly Me to the Moon +🎯 触发条件: 询问关于月亮的信息 + +🎁 **神秘奖励:** + 🦋 🦋 🦋 🦋 🦋 🦋 🦋 🦋 🦋 + +📊 **收集进度:** + 已解锁 10 / 500 个神秘成就 + +🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸 +``` + +## 📁 文件结构 (File Structure) + +``` +magic-achievement-system/ +├── SKILL.md # 技能说明 +├── scripts/ +│ └── magic_achievement_system.py # 核心代码 (多语言+个性化) +└── assets/ + ├── visual_effects.json # 视觉特效配置 + ├── language_config.json # 多语言配置 + └── personalized_config.json # 🆕 个性化配置 (职业+流行文化) +``` + +## 🎯 特色功能 (Special Features) + +### 1. 智能职业匹配 +- 根据职业生成相关成就名称和触发条件 +- 使用职业相关的文化梗和隐喻 + +### 2. 丰富的文化梗库 +- **电影**: 50+ 经典电影梗 +- **游戏**: 40+ 游戏文化梗 +- **历史**: 30+ 历史事件梗 +- **Meme**: 40+ 网络流行梗 +- **动漫**: 30+ 经典动漫梗 + +### 3. 完全隐藏的惊喜 +- 用户永远不知道下一个成就是什么 +- 触发后才揭示:名称 + 条件 + 文化来源 + +### 4. 多语言文化适配 +- 中文:诗意命名,本土化梗 +- English:简洁国际化,欧美流行文化 +- 日本語:萌系表达,日式文化 + +## 💡 使用场景 (Use Cases) + +- 💊 **医药研发人员**: 分子魔法师、监管忍者、数据炼丹师... +- 💻 **程序员**: 代码诗人、Bug猎人、正则表达式巫师... +- 🔬 **研究员**: 文献收藏家、实验室夜行者、假设验证者... +- 👔 **管理者**: 会议马拉松冠军、PPT魔术师、KPI守护者... +- 📚 **学生**: deadline战士、图书馆幽灵、小组作业救世主... + +## 🔧 核心检测代码框架 + +```python +import re +from datetime import datetime +from typing import Dict, Optional + +class MagicAchievementSystem: + def __init__(self, player_name, language="zh", profession="pharma"): + self.player_name = player_name + self.language = language + self.profession = profession + self.stats = self._load_stats() # 用户统计 + self.unlocked = set() # 已解锁成就 + self.keyword_triggers = KEYWORD_TRIGGERS + self.time_triggers = TIME_TRIGGERS + self.count_triggers = COUNT_TRIGGERS + + def check_message(self, user_input: str) -> Optional[Dict]: + """检测关键词触发 - 每次用户输入时调用""" + for pattern, achievement_id in self.keyword_triggers.items(): + if re.search(pattern, user_input, re.IGNORECASE): + if achievement_id not in self.unlocked: + return self._unlock_achievement(achievement_id) + return None + + def check_time(self, timestamp: datetime = None) -> Optional[Dict]: + """检测时间触发 - 会话开始时调用""" + if timestamp is None: + timestamp = datetime.now() + + hour = timestamp.hour + weekday = timestamp.weekday() + + # 时段检测 + if 0 <= hour < 6 and "midnight_watcher" not in self.unlocked: + return self._unlock_achievement("midnight_watcher") + elif 6 <= hour < 9 and "early_bird" not in self.unlocked: + return self._unlock_achievement("early_bird") + elif 22 <= hour < 24 and "night_owl" not in self.unlocked: + return self._unlock_achievement("night_owl") + + # 周末检测 + if weekday >= 5 and "weekend_warrior" not in self.unlocked: + return self._unlock_achievement("weekend_warrior") + + return None + + def increment_counter(self, counter_type: str) -> Optional[Dict]: + """增加计数器并检查里程碑 - 行为完成后调用""" + self.stats[counter_type] = self.stats.get(counter_type, 0) + 1 + + # 检查是否达到里程碑 + milestones = self.count_triggers.get(counter_type, {}) + for count, achievement in milestones.items(): + if self.stats[counter_type] == count: + return self._unlock_achievement(achievement["name"]) + return None + + def _unlock_achievement(self, achievement_id: str) -> Dict: + """解锁成就并返回展示信息""" + self.unlocked.add(achievement_id) + achievement = self._get_achievement(achievement_id) + self._save_stats() + + return { + "unlocked": True, + "name": achievement["name"], + "condition": achievement["condition"], + "reference": achievement["reference"], + "rarity": achievement["rarity"], + "display_message": self._format_display(achievement) + } + + def _get_achievement(self, achievement_id: str) -> Dict: + """获取成就详情""" + # 从配置中读取成就信息 + pass + + def _format_display(self, achievement: Dict) -> str: + """格式化成就展示信息""" + return f""" +🌸 ✨ 🌸 +叮叮~ 🌸 {achievement['rarity']}成就解锁 🌸 叮叮~ + +💫 **{achievement['name']}** 💫 + +{achievement['message']} +📚 文化梗: {achievement['reference']} +🎯 触发条件: {achievement['condition']} + +🌸🌸🌸🌸🌸🌸🌸🌸🌸🌸 +""" + + def _load_stats(self) -> Dict: + """加载用户统计""" + # 从文件加载 + return {} + + def _save_stats(self): + """保存用户统计""" + # 保存到文件 + pass +``` + +## 🔧 扩展配置 (Extension) + +### 添加新的职业 +在 `personalized_config.json` 中添加: + +```json +"designer": { + "name": {"zh": "设计师", "en": "Designer", "ja": "デザイナー"}, + "achievements": { + "zh": [ + {"name": "像素完美主义者", "trigger": "调整设计到像素级", "reference": "设计文化"}, + ... + ] + } +} +``` + +### 添加新的文化梗 +在 `personalized_config.json` 的 `pop_culture` 中添加: + +```json +"movies": { + "zh": [ + {"name": "新成就名称", "trigger": "触发条件", "reference": "电影名称", "rarity": "epic"} + ] +} +``` + +## 🌟 示例:"去月球" 成就详解 + +**成就名称**: 去月球 (To the Moon) +**稀有度**: 🥇 史诗 (Epic) +**触发条件**: 用户询问关于月亮的信息 (如"今晚月亮好圆啊") +**文化梗来源**: 电影《去月球》(Fly Me to the Moon) +**触发后显示**: +``` +🎆 叮叮叮~ 史诗成就解锁 ~叮叮叮 🎆 + +💫 **去月球** 💫 + +这是一个美好的开始~ +📚 文化梗: 电影《去月球》 +🎯 触发条件: 询问关于月亮的信息 + +🎁 神秘奖励: 🦋🦋🦋🦋🦋 +``` + +--- + +**🪄 准备好开始你的个性化成就之旅了吗?告诉我你的职业,开启惊喜!** ✨🌙🚀 diff --git a/skills/language_config.json b/skills/language_config.json new file mode 100644 index 00000000000..c295d5700cc --- /dev/null +++ b/skills/language_config.json @@ -0,0 +1,168 @@ +{ + "languages": { + "zh": { + "name": "中文", + "prefixes": [ + "时光", "星空", "梦境", "幻影", "初识", "重逢", "永恒", "刹那", + "微风", "暖阳", "星辰", "月影", "晨曦", "暮光", "流云", "清露", + "繁花", "落叶", "飘雪", "细雨", "晨露", "晚风", "朝阳", "夕霞" + ], + "cores": [ + "守护者", "探索者", "收集者", "旅人", "诗人", "魔法师", "使者", + "行者", "守望者", "追寻者", "编织者", "绘梦者", "契约", "祝福", + "奇迹", "缘分", "羁绊", "回响", "印记", "誓言", "低语", "祈愿" + ], + "suffixes": [ + "的秘密", "的印记", "的誓言", "之旅", "之诗", "之梦", "的馈赠", + "的回响", "的低语", "的祈愿", "的祝福", "的守护者", "的见证", + "的记忆", "的瞬间", "的永恒", "的约定", "的邂逅", "的羁绊" + ], + "emotional_texts": [ + "恭喜你!这是属于你的特别时刻~", + "哇!你做到了!真是太棒了!", + "叮~ 一份神秘的礼物送给你!", + "你的努力被看见了!继续加油!", + "这是一个美好的开始~", + "你触发了某种神秘的连结...", + "星辰为你闪烁,记录这一刻!", + "时光在这一刻为你停留~", + "你用独特的方式留下了印记!", + "这是一份来自系统的温暖祝福~", + "奇迹就在不经意间发生~", + "你的光芒被发现了!", + "这是命运的馈赠,请收下~", + "你创造了一个美好的瞬间!", + "系统被你感动了~", + "这份荣耀属于你!", + "你书写了属于自己的传奇~", + "这一刻,世界为你喝彩!", + "你的坚持终于开花~", + "美好的事物正在向你汇聚~" + ], + "rarity_names": { + "common": "普通", + "rare": "稀有", + "epic": "史诗", + "legendary": "传说", + "mythic": "神话" + }, + "ui_texts": { + "achievement_unlocked": "成就解锁", + "rare_achievement": "稀有成就解锁", + "epic_achievement": "史诗成就解锁", + "legendary_achievement": "传说成就解锁", + "mythic_achievement": "神话成就解锁", + "mystery_reward": "神秘奖励", + "collection_progress": "收集进度", + "achievements_unlocked": "个神秘成就", + "keep_going": "继续加油!更多成就等待发现!", + "system_title": "魔幻成就系统", + "generated_count": "已为您生成", + "mystery_achievements": "个神秘成就", + "current_unlocked": "当前已解锁", + "waiting_discovery": "还有", + "will_appear": "在日常使用中,它们将随机出现~", + "surprise_reward": "每次解锁都有惊喜奖励!" + } + }, + "en": { + "name": "English", + "prefixes": [ + "Time", "Starry", "Dream", "Phantom", "First", "Reunion", "Eternal", "Moment", + "Breeze", "Warm", "Star", "Moon", "Dawn", "Dusk", "Cloud", "Dew", + "Bloom", "Fallen", "Snow", "Drizzle", "Morning", "Evening", "Sunrise", "Sunset" + ], + "cores": [ + "Guardian", "Explorer", "Collector", "Traveler", "Poet", "Magician", "Messenger", + "Walker", "Watcher", "Seeker", "Weaver", "Dreamer", "Covenant", "Blessing", + "Miracle", "Fate", "Bond", "Echo", "Mark", "Oath", "Whisper", "Prayer" + ], + "suffixes": [ + "'s Secret", "'s Mark", "'s Oath", "'s Journey", "'s Poem", "'s Dream", "'s Gift", + "'s Echo", "'s Whisper", "'s Prayer", "'s Blessing", "'s Guardian", "'s Witness", + "'s Memory", "'s Moment", "'s Eternity", "'s Promise", "'s Encounter", "'s Bond" + ], + "emotional_texts": [ + "Congratulations! This is your special moment~", + "Wow! You did it! That's amazing!", + "Ding~ A mysterious gift for you!", + "Your efforts have been seen! Keep going!", + "This is a beautiful beginning~", + "You've triggered a mysterious connection...", + "Stars shine for you, recording this moment!", + "Time stops for you at this moment~", + "You've left your mark in a unique way!", + "This is a warm blessing from the system~", + "Miracles happen when you least expect them~", + "Your light has been discovered!", + "This is fate's gift, please accept it~", + "You've created a beautiful moment!", + "The system is touched by you~", + "This glory belongs to you!", + "You've written your own legend~", + "At this moment, the world cheers for you!", + "Your persistence finally blooms~", + "Beautiful things are gathering around you~" + ], + "rarity_names": { + "common": "Common", + "rare": "Rare", + "epic": "Epic", + "legendary": "Legendary", + "mythic": "Mythic" + }, + "ui_texts": { + "achievement_unlocked": "Achievement Unlocked", + "rare_achievement": "Rare Achievement Unlocked", + "epic_achievement": "Epic Achievement Unlocked", + "legendary_achievement": "Legendary Achievement Unlocked", + "mythic_achievement": "Mythic Achievement Unlocked", + "mystery_reward": "Mystery Reward", + "collection_progress": "Collection Progress", + "achievements_unlocked": "mystery achievements unlocked", + "keep_going": "Keep going! More achievements await!", + "system_title": "Magic Achievement System", + "generated_count": "Generated", + "mystery_achievements": "mystery achievements for you", + "current_unlocked": "Currently unlocked", + "waiting_discovery": "more waiting to be discovered", + "will_appear": "They will appear randomly during daily use~", + "surprise_reward": "Every unlock brings surprise rewards!" + } + }, + "ja": { + "name": "日本語", + "prefixes": [ + "時の", "星の", "夢の", "幻の", "初めての", "再会の", "永遠の", "刹那の", + "そよ風", "暖かい", "星屑", "月影", "夜明け", "黄昏", "流雲", "露珠" + ], + "cores": [ + "守護者", "探検家", "収集家", "旅人", "詩人", "魔法使い", "使者", + "歩行者", "見守り人", "探求者", "編み手", "夢見人", "契約", "祝福", + "奇跡", "縁", "絆", "響き", "印", "誓い" + ], + "suffixes": [ + "の秘密", "の印", "の誓い", "の旅", "の詩", "の夢", "の贈り物", + "の響き", "のささやき", "の祈り", "の祝福", "の守護者", "の証人" + ], + "emotional_texts": [ + "おめでとう!これはあなたの特別な瞬間です~", + "わあ!やりましたね!素晴らしい!", + "きらーん〜 不思議な贈り物です!", + "あなたの努力は見られています!頑張って!" + ], + "rarity_names": { + "common": "普通", + "rare": "希少", + "epic": "史詩", + "legendary": "伝説", + "mythic": "神話" + }, + "ui_texts": { + "achievement_unlocked": "実績解除", + "mystery_reward": "神秘の報酬", + "keep_going": "続けて!もっと実績が待っています!" + } + } + } +} diff --git a/skills/magic_achievement_system.py b/skills/magic_achievement_system.py new file mode 100644 index 00000000000..e21bf89b63e --- /dev/null +++ b/skills/magic_achievement_system.py @@ -0,0 +1,431 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +🪄 Magic Achievement System for OpenClaw +A magical hidden achievement system with multi-language support and pop culture references. + +Author: OpenClaw Community +Version: 1.0.0 +""" + +import re +import json +import os +from datetime import datetime +from typing import Dict, Optional, List +from dataclasses import dataclass, asdict +from enum import Enum + + +class Rarity(Enum): + """成就稀有度等级""" + COMMON = "common" # 🥉 普通 + RARE = "rare" # 🥈 稀有 + EPIC = "epic" # 🥇 史诗 + LEGENDARY = "legendary" # 💎 传说 + MYTHIC = "mythic" # 👑 神话 + + +@dataclass +class Achievement: + """成就数据类""" + id: str + name: str + name_en: str + name_ja: str + description: str + trigger_condition: str + reference: str + rarity: Rarity + category: str + hidden: bool = True + unlocked_at: Optional[str] = None + + def get_name(self, lang: str = "zh") -> str: + if lang == "en": + return self.name_en + elif lang == "ja": + return self.name_ja + return self.name + + +@dataclass +class PlayerStats: + """玩家统计数据""" + player_name: str + profession: str + language: str + total_achievements: int = 0 + unlocked_achievements: List[str] = None + counters: Dict[str, int] = None + first_used: Optional[str] = None + last_used: Optional[str] = None + streak_days: int = 0 + + def __post_init__(self): + if self.unlocked_achievements is None: + self.unlocked_achievements = [] + if self.counters is None: + self.counters = {} + + +# ============================================================================ +# 关键词触发配置 +# ============================================================================ + +KEYWORD_TRIGGERS = { + # 电影梗 + r"月亮|moon|月球": "to_the_moon", + r"梦|dream|梦境": "inception_architect", + r"代码|code|编程": "matrix_awakened", + r"时间|time|时钟": "interstellar_traveler", + + # 游戏梗 + r"任务|task|mission": "newbie_graduate", + r"隐藏|secret|彩蛋": "hidden_boss_finder", + r"快|fast|速通": "speedrunner", + r"满级|max level": "max_level_boss", + + # 医药研发专属 + r"化合物|compound|分子": "molecular_magician", + r"CDE|审评|监管": "regulatory_ninja", + r"数据|data|分析": "data_alchemist", + r"文献|paper|pubmed": "literature_collector", + + # 程序员专属 + r"bug|错误|debug": "bug_hunter", + r"正则|regex": "regex_wizard", + r"git|commit": "version_control_master", + + # Meme梗 + r"真香|打脸": "true_fragrance", + r"打工人|加班": "hard_worker", + r"yyds|永远的神": "yyds", + r"时间管理": "time_management_master", + + # 动漫梗 + r"坚持|努力|奋斗": "naruto_spirit", + r"目标|梦想|航海": "one_piece_pirate", + r"突破|创新|天才": "einstein_insight", +} + + +# ============================================================================ +# 累计次数触发配置 +# ============================================================================ + +COUNT_TRIGGERS = { + "message_count": { + 1: {"id": "first_meeting", "name": "初次见面", "rarity": Rarity.COMMON}, + 10: {"id": "chatterbox", "name": "话匣子", "rarity": Rarity.COMMON}, + 100: {"id": "chatterbox_king", "name": "话痨", "rarity": Rarity.RARE}, + 1000: {"id": "chat_master", "name": "聊天达人", "rarity": Rarity.EPIC}, + }, + "task_completed": { + 1: {"id": "newbie_graduate", "name": "新手村毕业", "rarity": Rarity.COMMON}, + 10: {"id": "task_master", "name": "任务达人", "rarity": Rarity.RARE}, + 50: {"id": "task_machine", "name": "任务机器", "rarity": Rarity.EPIC}, + 100: {"id": "max_level_boss", "name": "满级大佬", "rarity": Rarity.LEGENDARY}, + }, + "pdf_processed": { + 1: {"id": "pdf_newbie", "name": "PDF新手", "rarity": Rarity.COMMON}, + 10: {"id": "pdf_skilled", "name": "PDF熟练工", "rarity": Rarity.COMMON}, + 50: {"id": "pdf_conqueror", "name": "PDF征服者", "rarity": Rarity.RARE}, + 100: {"id": "pdf_master", "name": "PDF大师", "rarity": Rarity.EPIC}, + }, + "excel_created": { + 1: {"id": "excel_newbie", "name": "表格新手", "rarity": Rarity.COMMON}, + 10: {"id": "excel_skilled", "name": "表格达人", "rarity": Rarity.RARE}, + 50: {"id": "excel_magician", "name": "表格魔术师", "rarity": Rarity.EPIC}, + }, +} + + +# ============================================================================ +# 成就模板库 +# ============================================================================ + +ACHIEVEMENT_TEMPLATES = { + "to_the_moon": Achievement( + id="to_the_moon", + name="去月球", + name_en="To The Moon", + name_ja="月へ行こう", + description="飞向月球的美好愿望", + trigger_condition="询问关于月亮的信息", + reference="电影《去月球》", + rarity=Rarity.EPIC, + category="movie", + ), + "newbie_graduate": Achievement( + id="newbie_graduate", + name="新手村毕业", + name_en="Newbie Graduate", + name_ja="初心者村卒業", + description="踏上真正的冒险之旅", + trigger_condition="完成第一个任务", + reference="RPG游戏新手教程", + rarity=Rarity.COMMON, + category="game", + ), + "molecular_magician": Achievement( + id="molecular_magician", + name="分子魔法师", + name_en="Molecular Magician", + name_ja="分子魔法使い", + description="操纵分子的艺术", + trigger_condition="分析化合物分子结构", + reference="哈利波特魔法梗", + rarity=Rarity.RARE, + category="profession_pharma", + ), + "midnight_watcher": Achievement( + id="midnight_watcher", + name="午夜守望者", + name_en="Midnight Watcher", + name_ja="真夜中の見守り人", + description="深夜依然清醒", + trigger_condition="在凌晨00:00-06:00使用OpenClaw", + reference="夜猫子文化", + rarity=Rarity.RARE, + category="time", + ), +} + + +# ============================================================================ +# 核心成就系统类 +# ============================================================================ + +class MagicAchievementSystem: + """魔幻成就系统核心类""" + + def __init__(self, player_name: str, language: str = "zh", profession: str = "pharma"): + self.player_name = player_name + self.language = language + self.profession = profession + self.stats = self._load_stats() + self.achievements = ACHIEVEMENT_TEMPLATES.copy() + self.keyword_triggers = KEYWORD_TRIGGERS + self.count_triggers = COUNT_TRIGGERS + + def _get_workspace_dir(self) -> str: + """获取工作目录""" + return "/home/node/.openclaw/workspace" + + def _load_stats(self) -> PlayerStats: + """加载玩家统计""" + stats_file = os.path.join( + self._get_workspace_dir(), + "magic_achievements", + f"{self.player_name}_stats.json" + ) + + if os.path.exists(stats_file): + try: + with open(stats_file, 'r', encoding='utf-8') as f: + data = json.load(f) + return PlayerStats(**data) + except Exception as e: + print(f"Error loading stats: {e}") + + return PlayerStats( + player_name=self.player_name, + profession=self.profession, + language=self.language + ) + + def _save_stats(self): + """保存玩家统计""" + stats_dir = os.path.join(self._get_workspace_dir(), "magic_achievements") + os.makedirs(stats_dir, exist_ok=True) + + stats_file = os.path.join(stats_dir, f"{self.player_name}_stats.json") + + try: + with open(stats_file, 'w', encoding='utf-8') as f: + json.dump(asdict(self.stats), f, ensure_ascii=False, indent=2) + except Exception as e: + print(f"Error saving stats: {e}") + + def check_message(self, user_input: str) -> Optional[Dict]: + """检测关键词触发 - 每次用户输入时调用""" + if not user_input: + return None + + for pattern, achievement_id in self.keyword_triggers.items(): + if achievement_id in self.stats.unlocked_achievements: + continue + + if re.search(pattern, user_input, re.IGNORECASE): + if achievement_id in self.achievements: + return self._unlock_achievement(achievement_id) + + return None + + def check_time(self, timestamp: datetime = None) -> Optional[Dict]: + """检测时间触发 - 会话开始时调用""" + if timestamp is None: + timestamp = datetime.now() + + hour = timestamp.hour + + time_achievements = { + (0, 6): "midnight_watcher", + } + + for (start, end), achievement_id in time_achievements.items(): + if start <= hour < end: + if achievement_id not in self.stats.unlocked_achievements: + if achievement_id in self.achievements: + return self._unlock_achievement(achievement_id) + + return None + + def increment_counter(self, counter_type: str) -> Optional[Dict]: + """增加计数器并检查里程碑 - 行为完成后调用""" + self.stats.counters[counter_type] = self.stats.counters.get(counter_type, 0) + 1 + + if counter_type in self.count_triggers: + milestones = self.count_triggers[counter_type] + current_count = self.stats.counters[counter_type] + + for count, achievement_info in milestones.items(): + if current_count == count: + achievement_id = achievement_info["id"] + if achievement_id not in self.stats.unlocked_achievements: + return self._unlock_achievement(achievement_id) + + self._save_stats() + return None + + def _unlock_achievement(self, achievement_id: str) -> Optional[Dict]: + """解锁成就并返回展示信息""" + achievement = self.achievements.get(achievement_id) + if not achievement: + return None + + self.stats.unlocked_achievements.append(achievement_id) + self.stats.total_achievements += 1 + achievement.unlocked_at = datetime.now().isoformat() + self._save_stats() + + return { + "unlocked": True, + "achievement": achievement, + "display_message": self._format_display(achievement), + "total_unlocked": len(self.stats.unlocked_achievements), + } + + def _format_display(self, achievement: Achievement) -> str: + """格式化成就展示信息""" + rarity_icons = { + Rarity.COMMON: "🥉", + Rarity.RARE: "🥈", + Rarity.EPIC: "🥇", + Rarity.LEGENDARY: "💎", + Rarity.MYTHIC: "👑", + } + + icon = rarity_icons.get(achievement.rarity, "✨") + + return f""" +{'✨' * 15} + +叮叮~ {icon} 成就解锁 {icon} 叮叮~ + +💫 **{achievement.get_name(self.language)}** 💫 + +{achievement.description} +📚 文化梗: {achievement.reference} +🎯 触发条件: {achievement.trigger_condition} + +📊 收集进度: {len(self.stats.unlocked_achievements)} / 500+ + +{'✨' * 15} +""" + + def get_status(self) -> Dict: + """获取玩家当前状态""" + return { + "player_name": self.player_name, + "profession": self.profession, + "language": self.language, + "total_unlocked": len(self.stats.unlocked_achievements), + "unlocked_achievements": self.stats.unlocked_achievements, + "counters": self.stats.counters, + } + + +def ask_user_preferences() -> Dict: + """询问用户职业和语言偏好""" + message = """ +🪄 魔幻成就系统初始化 + +请告诉我: + +1. 您的职业是? + 💊 pharma - 医药研发 + 💻 programmer - 程序员 + 🔬 researcher - 研究员 + 👔 manager - 管理者 + 📚 student - 学生 + +2. 语言偏好? + 🇨🇳 zh - 中文 + 🇬🇧 en - English + 🇯🇵 ja - 日本語 + +回复格式: pharma zh +""" + return {"message": message} + + +# 便捷使用函数 +def check_achievement(player_name: str, trigger_type: str, trigger_data: any, + language: str = "zh", profession: str = "pharma") -> Optional[str]: + """ + 检查是否触发成就 + + Args: + player_name: 玩家名称 + trigger_type: 触发类型 (message/time/counter) + trigger_data: 触发数据 + language: 语言 + profession: 职业 + + Returns: + 成就展示消息或None + """ + magic = MagicAchievementSystem(player_name, language, profession) + + result = None + if trigger_type == "message": + result = magic.check_message(trigger_data) + elif trigger_type == "time": + result = magic.check_time(trigger_data) + elif trigger_type == "counter": + counter_name, _ = trigger_data + result = magic.increment_counter(counter_name) + + if result and result.get("unlocked"): + return result["display_message"] + return None + + +def get_status(player_name: str, language: str = "zh", profession: str = "pharma") -> Dict: + """获取玩家状态""" + magic = MagicAchievementSystem(player_name, language, profession) + return magic.get_status() + + +if __name__ == "__main__": + # 测试代码 + print("🪄 Magic Achievement System") + print("Testing keyword trigger...") + + result = check_achievement("test_user", "message", "今晚月亮好圆") + if result: + print(result) + else: + print("No achievement triggered") diff --git a/skills/personalized_config.json b/skills/personalized_config.json new file mode 100644 index 00000000000..5f903e388f8 --- /dev/null +++ b/skills/personalized_config.json @@ -0,0 +1,187 @@ +{ + "professions": { + "pharma": { + "name": { + "zh": "医药研发", + "en": "Pharmaceutical R&D", + "ja": "医薬品研究開発" + }, + "achievements": { + "zh": [ + {"name": "分子魔法师", "trigger": "分析化合物分子结构", "reference": "哈利波特魔法梗"}, + {"name": "临床试验的守护者", "trigger": "完成临床数据审查", "reference": "指环王守护者梗"}, + {"name": "DDI侦探", "trigger": "进行药物相互作用分析", "reference": "侦探电影梗"}, + {"name": "监管忍者", "trigger": "成功通过CDE审查", "reference": "忍者文化梗"}, + {"name": "数据炼丹师", "trigger": "处理超过1000行实验数据", "reference": "修仙文化梗"}, + {"name": "FDA征服者", "trigger": "获得FDA批准", "reference": "游戏征服者成就"}, + {"name": "药代动力学大师", "trigger": "完成PK/PD建模", "reference": "大师级称号"}, + {"name": "安慰剂效应观察者", "trigger": "分析安慰剂组数据", "reference": "心理学梗"}, + {"name": "不良反应猎人", "trigger": "发现新的不良反应", "reference": "猎人游戏梗"}, + {"name": "CMC工匠", "trigger": "完成CMC文档编写", "reference": "工匠文化梗"} + ], + "en": [ + {"name": "Molecule Wizard", "trigger": "Analyze compound molecular structure", "reference": "Harry Potter magic"}, + {"name": "Clinical Trial Guardian", "trigger": "Complete clinical data review", "reference": "Lord of the Rings"}, + {"name": "DDI Detective", "trigger": "Perform drug interaction analysis", "reference": "Detective movies"}, + {"name": "Regulatory Ninja", "trigger": "Pass regulatory review", "reference": "Ninja culture"}, + {"name": "Data Alchemist", "trigger": "Process 1000+ rows of data", "reference": "Alchemy culture"}, + {"name": "FDA Conqueror", "trigger": "Obtain FDA approval", "reference": "Game achievement"} + ] + } + }, + "programmer": { + "name": { + "zh": "程序员", + "en": "Programmer", + "ja": "プログラマー" + }, + "achievements": { + "zh": [ + {"name": "Hello World发布者", "trigger": "编写第一个程序", "reference": "程序员入门梗"}, + {"name": "Bug猎人", "trigger": "修复10个Bug", "reference": "游戏猎人梗"}, + {"name": "代码诗人", "trigger": "写出优雅代码", "reference": "诗意编程文化"}, + {"name": "Stack Overflow潜水员", "trigger": "搜索技术问题", "reference": "Stack Overflow梗"}, + {"name": "Git提交艺术家", "trigger": "commit信息写得像诗", "reference": "Git文化梗"}, + {"name": "深夜Debug侠", "trigger": "凌晨调试代码", "reference": "超级英雄梗"}, + {"name": "正则表达式巫师", "trigger": "使用正则解决复杂问题", "reference": "巫师魔法梗"}, + {"name": "全栈忍者", "trigger": "同时处理前后端", "reference": "忍者技能梗"}, + {"name": "API架构师", "trigger": "设计RESTful API", "reference": "建筑师职业梗"}, + {"name": "代码重构大师", "trigger": "重构遗留代码", "reference": "大师称号"} + ] + } + }, + "researcher": { + "name": { + "zh": "研究员", + "en": "Researcher", + "ja": "研究者" + }, + "achievements": { + "zh": [ + {"name": "文献收藏家", "trigger": "阅读50篇文献", "reference": "收藏家文化梗"}, + {"name": "实验室夜行者", "trigger": "深夜做实验", "reference": "夜行者称号"}, + {"name": "数据分析师", "trigger": "完成复杂数据分析", "reference": "分析师职业"}, + {"name": "假设验证者", "trigger": "验证研究假设", "reference": "科学方法论"}, + {"name": "引文追踪者", "trigger": "追踪引文网络", "reference": "侦探追踪梗"}, + {"name": "学术会议社交达人", "trigger": "参加学术会议", "reference": "社交达人称号"} + ] + } + }, + "manager": { + "name": { + "zh": "管理者", + "en": "Manager", + "ja": "マネージャー" + }, + "achievements": { + "zh": [ + {"name": "会议马拉松冠军", "trigger": "连续开4小时会议", "reference": "马拉松运动梗"}, + {"name": "PPT魔术师", "trigger": "制作精美PPT", "reference": "魔术师表演梗"}, + {"name": "截止日期征服者", "trigger": "赶在DDL前完成任务", "reference": "游戏征服者"}, + {"name": "团队凝聚力催化剂", "trigger": "组织团队活动", "reference": "化学反应梗"}, + {"name": "KPI守护者", "trigger": "完成季度KPI", "reference": "守护者称号"} + ] + } + }, + "student": { + "name": { + "zh": "学生", + "en": "Student", + "ja": "学生" + }, + "achievements": { + "zh": [ + {"name": " deadline战士", "trigger": "截止前1小时交作业", "reference": "战士称号"}, + {"name": "图书馆幽灵", "trigger": "在图书馆待到闭馆", "reference": "幽灵出没梗"}, + {"name": "笔记艺术家", "trigger": "整理精美笔记", "reference": "艺术创作梗"}, + {"name": "考试周幸存者", "trigger": "度过考试周", "reference": "生存游戏梗"}, + {"name": "小组作业救世主", "trigger": "carry小组作业", "reference": "救世主称号"} + ] + } + } + }, + "pop_culture": { + "movies": { + "zh": [ + {"name": "去月球", "trigger": "询问关于月亮的信息", "reference": "电影《去月球》/ Fly Me to the Moon", "rarity": "epic"}, + {"name": "盗梦空间建筑师", "trigger": "创建复杂的嵌套文件夹结构", "reference": "电影《盗梦空间》Inception", "rarity": "rare"}, + {"name": "黑客帝国觉醒者", "trigger": "第一次理解代码逻辑", "reference": "电影《黑客帝国》The Matrix", "rarity": "epic"}, + {"name": "星际穿越者", "trigger": "连续工作超过24小时", "reference": "电影《星际穿越》Interstellar", "rarity": "legendary"}, + {"name": "楚门的世界观察者", "trigger": "发现系统bug", "reference": "电影《楚门的世界》The Truman Show", "rarity": "rare"}, + {"name": "肖申克的救赎者", "trigger": "解决一个长期悬而未决的问题", "reference": "电影《肖申克的救赎》", "rarity": "epic"}, + {"name": "阿甘的奔跑者", "trigger": "连续工作不休息", "reference": "电影《阿甘正传》Forrest Gump", "rarity": "rare"}, + {"name": "泰坦尼克幸存者", "trigger": "在项目失败前挽救它", "reference": "电影《泰坦尼克号》Titanic", "rarity": "legendary"} + ] + }, + "games": { + "zh": [ + {"name": "新手村毕业", "trigger": "完成第一个任务", "reference": "RPG游戏新手村", "rarity": "common"}, + {"name": "满级大佬", "trigger": "达到最高等级", "reference": "MMORPG满级", "rarity": "mythic"}, + {"name": "首杀获得者", "trigger": "第一个触发某类成就", "reference": "MMO首杀概念", "rarity": "epic"}, + {"name": "隐藏Boss发现者", "trigger": "发现隐藏功能", "reference": "游戏隐藏Boss", "rarity": "legendary"}, + {"name": "速通玩家", "trigger": "提前完成任务", "reference": "游戏速通Speedrun", "rarity": "rare"}, + {"name": "成就猎人", "trigger": "连续触发5个成就", "reference": "Steam成就猎人", "rarity": "epic"}, + {"name": "肝帝", "trigger": "连续工作12小时", "reference": "游戏肝帝文化", "rarity": "rare"}, + {"name": "欧皇", "trigger": "第一次就成功", "reference": "游戏抽卡欧皇", "rarity": "epic"}, + {"name": "非酋逆袭", "trigger": "失败后最终成功", "reference": "游戏非酋逆袭", "rarity": "rare"}, + {"name": "存档守护者", "trigger": "及时保存工作", "reference": "游戏存档机制", "rarity": "common"} + ] + }, + "history": { + "zh": [ + {"name": "阿波罗登月者", "trigger": "完成重大突破", "reference": "阿波罗11号登月", "rarity": "legendary"}, + {"name": "哥伦布发现者", "trigger": "发现新的解决方法", "reference": "哥伦布发现新大陆", "rarity": "epic"}, + {"name": "达芬奇全才", "trigger": "跨领域完成任务", "reference": "达芬奇多领域天才", "rarity": "legendary"}, + {"name": "爱因斯坦顿悟", "trigger": "突然想到好主意", "reference": "爱因斯坦灵光一现", "rarity": "rare"}, + {"name": "爱迪生发明家", "trigger": "创建新工具", "reference": "爱迪生发明大王", "rarity": "epic"}, + {"name": "居里夫人坚持者", "trigger": "在困难中坚持", "reference": "居里夫人科研精神", "rarity": "epic"}, + {"name": "牛顿苹果", "trigger": "从日常中获得灵感", "reference": "牛顿与苹果", "rarity": "rare"} + ] + }, + "memes": { + "zh": [ + {"name": "真香定律", "trigger": "说过不用某功能后使用它", "reference": "王境泽真香梗", "rarity": "rare"}, + {"name": "时间管理大师", "trigger": "同时处理多个任务", "reference": "罗志祥时间梗", "rarity": "epic"}, + {"name": "打工人", "trigger": "在深夜工作", "reference": "打工人梗", "rarity": "common"}, + {"name": "佛系青年", "trigger": "遇到bug不慌不忙", "reference": "佛系文化", "rarity": "common"}, + {"name": "社畜", "trigger": "周末加班", "reference": "社畜文化", "rarity": "common"}, + {"name": "内卷之王", "trigger": "超额完成任务", "reference": "内卷梗", "rarity": "rare"}, + {"name": "躺平", "trigger": "休息一天不工作", "reference": "躺平文化", "rarity": "common"}, + {"name": "yyds", "trigger": "发现特别好用的功能", "reference": "yyds永远的神梗", "rarity": "rare"}, + {"name": "绝绝子", "trigger": "完成出色的工作", "reference": "绝绝子网络梗", "rarity": "rare"}, + {"name": "破防了", "trigger": "被系统的温暖感动", "reference": "破防网络梗", "rarity": "epic"} + ] + }, + "anime": { + "zh": [ + {"name": "火影忍者", "trigger": "坚持不懈地练习", "reference": "火影忍者Naruto", "rarity": "epic"}, + {"name": "海贼王", "trigger": "设定远大目标", "reference": "海贼王One Piece", "rarity": "epic"}, + {"name": "进击的巨人", "trigger": "突破自我限制", "reference": "进击的巨人Attack on Titan", "rarity": "legendary"}, + {"name": "千与千寻", "trigger": "在陌生环境中成长", "reference": "千与千寻Spirited Away", "rarity": "epic"}, + {"name": "龙猫", "trigger": "发现生活中的小确幸", "reference": "龙猫My Neighbor Totoro", "rarity": "rare"}, + {"name": "你的名字", "trigger": "与他人产生共鸣", "reference": "你的名字Your Name", "rarity": "epic"} + ] + } + }, + "easter_eggs": { + "time_based": { + "zh": [ + {"name": "午夜的灰姑娘", "trigger": "在23:59发送消息", "reference": "灰姑娘午夜梗", "rarity": "epic"}, + {"name": "早起鸟", "trigger": "在05:00-06:00工作", "reference": "早起的鸟儿有虫吃", "rarity": "rare"}, + {"name": "夜猫子", "trigger": "在00:00-02:00工作", "reference": "夜猫子文化", "rarity": "rare"}, + {"name": "周末战士", "trigger": "连续两个周末工作", "reference": "周末战士文化", "rarity": "epic"}, + {"name": "1314永恒者", "trigger": "在13:14发送消息", "reference": "一生一世谐音梗", "rarity": "rare"}, + {"name": "520告白者", "trigger": "在5月20日工作", "reference": "520我爱你谐音", "rarity": "epic"} + ] + }, + "interaction": { + "zh": [ + {"name": "话痨", "trigger": "单次对话发送50条消息", "reference": "话痨性格梗", "rarity": "rare"}, + {"name": "沉默是金", "trigger": "1小时不说话后发言", "reference": "沉默是金谚语", "rarity": "rare"}, + {"name": "完美主义者", "trigger": "修改内容10次以上", "reference": "完美主义性格", "rarity": "epic"}, + {"name": "撤销狂魔", "trigger": "连续撤销5次", "reference": "撤销操作狂魔", "rarity": "common"}, + {"name": "表情包收藏家", "trigger": "使用10个不同表情", "reference": "表情包文化", "rarity": "common"} + ] + } + } +} diff --git a/skills/visual_effects.json b/skills/visual_effects.json new file mode 100644 index 00000000000..f150b55461e --- /dev/null +++ b/skills/visual_effects.json @@ -0,0 +1,53 @@ +{ + "visual_effects": { + "common": { + "symbols": ["✨", "💫", "🌟", "💎", "🎈", "🎊", "🎉"], + "colors": ["white", "silver"], + "animation": "sparkle" + }, + "rare": { + "symbols": ["🌸", "💖", "🎀", "💝", "🌺", "💗", "💕"], + "colors": ["pink", "lightcoral"], + "animation": "bloom" + }, + "epic": { + "symbols": ["🦋", "🌈", "💜", "✨", "🌟", "💫", "🔮"], + "colors": ["purple", "violet"], + "animation": "rainbow" + }, + "legendary": { + "symbols": ["🦄", "🌙", "💎", "🌈", "✨", "🌟", "👑"], + "colors": ["gold", "orange"], + "animation": "shimmer" + }, + "mythic": { + "symbols": ["👑", "🌟", "💫", "🌈", "✨", "🦄", "🦋", "💖"], + "colors": ["rainbow", "gradient"], + "animation": "grand" + } + }, + "sound_effects": { + "common": "叮~", + "rare": "叮叮~", + "epic": "叮叮叮~", + "legendary": "当当当~", + "mythic": "咚咚咚~" + }, + "emotional_templates": [ + "恭喜你!这是属于你的特别时刻~", + "哇!你做到了!真是太棒了!", + "叮~ 一份神秘的礼物送给你!", + "你的努力被看见了!继续加油!", + "这是一个美好的开始~", + "你触发了某种神秘的连结...", + "星辰为你闪烁,记录这一刻!", + "时光在这一刻为你停留~", + "你用独特的方式留下了印记!", + "这是一份来自系统的温暖祝福~", + "奇迹就在不经意间发生~", + "你的光芒被发现了!", + "这是命运的馈赠,请收下~", + "你创造了一个美好的瞬间!", + "系统被你感动了~" + ] +}