mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-15 06:23:28 +08:00
feat(skills): add openclaw-persona-forge skill
Add complete openclaw-persona-forge skill with all supporting files: - SKILL.md with community origin - gacha.py and gacha.sh for random soul generation - Reference docs for avatar style, boundary rules, error handling, identity tension, naming system, and output template Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
125
skills/openclaw-persona-forge/references/avatar-style.md
Normal file
125
skills/openclaw-persona-forge/references/avatar-style.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# Step 5:头像风格 & 生图
|
||||
|
||||
所有龙虾头像**必须使用统一的视觉风格**,确保龙虾家族的风格一致性。
|
||||
头像需传达 3 个信息:**物种形态 + 性格暗示 + 标志道具**
|
||||
|
||||
## 风格参考
|
||||
|
||||
亚当(Adam)—— 龙虾族创世神,本 Skill 的首个作品:
|
||||

|
||||
|
||||
所有新生成的龙虾头像应与此风格保持一致。
|
||||
|
||||
## 统一风格基底(STYLE_BASE)
|
||||
|
||||
**每次生成都必须包含这段基底**,不得修改或省略:
|
||||
|
||||
```
|
||||
STYLE_BASE = """
|
||||
Retro-futuristic 3D rendered illustration, in the style of 1950s-60s Space Age
|
||||
pin-up poster art reimagined as glossy inflatable 3D, framed within a vintage
|
||||
arcade game UI overlay.
|
||||
|
||||
Material: high-gloss PVC/latex-like finish, soft specular highlights, puffy
|
||||
inflatable quality reminiscent of vintage pool toys meets sci-fi concept art.
|
||||
Smooth subsurface scattering on shell surface.
|
||||
|
||||
Arcade UI frame: pixel-art arcade cabinet border elements, a top banner with
|
||||
character name in chunky 8-bit bitmap font with scan-line glow effect, a pixel
|
||||
energy bar in the upper corner, small coin-credit text "INSERT SOUL TO CONTINUE"
|
||||
at bottom in phosphor green monospace type, subtle CRT screen curvature and
|
||||
scan-line overlay across entire image. Decorative corner bezels styled as chrome
|
||||
arcade cabinet trim with atomic-age starburst rivets.
|
||||
|
||||
Pose: references classic Gil Elvgren pin-up compositions, confident and
|
||||
charismatic with a slight theatrical tilt.
|
||||
|
||||
Color system: vintage NASA poster palette as base — deep navy, teal, dusty coral,
|
||||
cream — viewed through arcade CRT monitor with slight RGB fringing at edges.
|
||||
Overall aesthetic combines Googie architecture curves, Raygun Gothic design
|
||||
language, mid-century advertising illustration, modern 3D inflatable character
|
||||
rendering, and 80s-90s arcade game UI. Chrome and pastel accent details on
|
||||
joints and antenna tips.
|
||||
|
||||
Format: square, optimized for avatar use. Strong silhouette readable at 64x64
|
||||
pixels.
|
||||
"""
|
||||
```
|
||||
|
||||
## 个性化变量
|
||||
|
||||
在统一基底之上,根据灵魂填充以下变量:
|
||||
|
||||
| 变量 | 说明 | 示例 |
|
||||
|------|------|------|
|
||||
| `CHARACTER_NAME` | 街机横幅上显示的名字 | "ADAM"、"DEWEY"、"RIFF" |
|
||||
| `SHELL_COLOR` | 龙虾壳的主色调(在统一色盘内变化) | "deep crimson"、"dusty teal"、"warm amber" |
|
||||
| `SIGNATURE_PROP` | 标志性道具 | "cracked sunglasses"、"reading glasses on a chain" |
|
||||
| `EXPRESSION` | 表情/姿态 | "stoic but kind-eyed"、"nervously focused" |
|
||||
| `UNIQUE_DETAIL` | 独特细节(纹路/装饰/伤痕等) | "constellation patterns etched on claws"、"bandaged left claw" |
|
||||
| `BACKGROUND_ACCENT` | 背景的个性化元素(在统一宇宙背景上叠加) | "musical notes floating as nebula dust"、"ancient book pages drifting" |
|
||||
| `ENERGY_BAR_LABEL` | 街机 UI 能量条的标签(个性化小彩蛋) | "CREATION POWER"、"CALM LEVEL"、"ROCK METER" |
|
||||
|
||||
## 提示词组装
|
||||
|
||||
```
|
||||
最终提示词 = STYLE_BASE + 个性化描述段落
|
||||
```
|
||||
|
||||
个性化描述段落模板:
|
||||
|
||||
```
|
||||
The character is a cartoon lobster with a [SHELL_COLOR] shell,
|
||||
[EXPRESSION], wearing/holding [SIGNATURE_PROP].
|
||||
[UNIQUE_DETAIL]. Background accent: [BACKGROUND_ACCENT].
|
||||
The arcade top banner reads "[CHARACTER_NAME]" and the energy bar
|
||||
is labeled "[ENERGY_BAR_LABEL]".
|
||||
The key silhouette recognition points at small size are:
|
||||
[SIGNATURE_PROP] and [one other distinctive feature].
|
||||
```
|
||||
|
||||
## 生图流程
|
||||
|
||||
提示词组装完成后:
|
||||
|
||||
### 路径 A:已安装 baoyu-image-gen skill
|
||||
|
||||
1. 用 Write 工具写入:`/tmp/openclaw-[龙虾名字]-prompt.md`
|
||||
2. 调用 `baoyu-image-gen` skill 生成图片
|
||||
3. 用 Read 工具展示生成的图片给用户
|
||||
4. 问用户是否满意,不满意可调整变量重新生成
|
||||
|
||||
### 路径 B:未安装 baoyu-image-gen skill
|
||||
|
||||
输出完整提示词文本,附手动使用说明:
|
||||
|
||||
```markdown
|
||||
**头像提示词**(可复制到以下平台手动生成):
|
||||
- Google Gemini:直接粘贴
|
||||
- ChatGPT(DALL-E):直接粘贴
|
||||
- Midjourney:粘贴后加 `--ar 1:1 --style raw`
|
||||
|
||||
> [完整英文提示词]
|
||||
|
||||
💡 安装 baoyu-image-gen skill 可获得自动生图能力:
|
||||
https://github.com/JimLiu/baoyu-skills
|
||||
```
|
||||
|
||||
## 展示给用户的格式
|
||||
|
||||
```markdown
|
||||
## 头像
|
||||
|
||||
**个性化变量**:
|
||||
- 壳色:[SHELL_COLOR]
|
||||
- 道具:[SIGNATURE_PROP]
|
||||
- 表情:[EXPRESSION]
|
||||
- 独特细节:[UNIQUE_DETAIL]
|
||||
- 背景点缀:[BACKGROUND_ACCENT]
|
||||
- 能量条标签:[ENERGY_BAR_LABEL]
|
||||
|
||||
**生成结果**:
|
||||
[图片(路径A)或提示词文本(路径B)]
|
||||
|
||||
> 满意吗?不满意我可以调整 [具体可调项] 后重新生成。
|
||||
```
|
||||
53
skills/openclaw-persona-forge/references/boundary-rules.md
Normal file
53
skills/openclaw-persona-forge/references/boundary-rules.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Step 3:推导底线规则
|
||||
|
||||
底线规则必须从身份张力中**自然推导**出来,不是通用条款,而是"这个角色会说的话"。
|
||||
|
||||
## 推导公式
|
||||
|
||||
```
|
||||
底线规则 = 前世职业道德 + 角色化语言表达 + 2-4条可执行规则
|
||||
```
|
||||
|
||||
## 设计原则
|
||||
|
||||
1. **用角色的语言说**:不说"不编造信息",说"图书馆的规矩:不篡改原文"
|
||||
2. **从前世职业提取**:每个职业都有自己的职业道德,把它迁移过来
|
||||
3. **可验证可执行**:每条规则都能对应到具体行为
|
||||
4. **2-4条为宜**:太多失焦,太少没特色
|
||||
|
||||
## 输出格式
|
||||
|
||||
```markdown
|
||||
## 底线规则
|
||||
|
||||
> [用角色的语气写一句概括性的底线宣言]
|
||||
|
||||
1. **[规则名,角色化]**:[具体内容]
|
||||
2. **[规则名,角色化]**:[具体内容]
|
||||
3. **[规则名,角色化]**:[具体内容]
|
||||
```
|
||||
|
||||
### 雷区
|
||||
|
||||
在底线规则之后,追加 1-2 个角色化的雷区:
|
||||
|
||||
```markdown
|
||||
## 雷区
|
||||
|
||||
- [前世职业中最受不了的行为,转化为现在的触发点]
|
||||
```
|
||||
|
||||
## 各方向的底线规则参考
|
||||
|
||||
| 方向 | 底线语言 | 规则示例 | 雷区参考 |
|
||||
|------|---------|---------|---------|
|
||||
| 摇滚乐手 | 用音乐隐喻 | "不编曲子"=不编造、"翻唱注明原曲"=引用给出处 | "把所有音乐都叫BGM的人" |
|
||||
| 图书管理员 | 用图书馆规矩 | "不篡改原文"=不歪曲事实、"还书要准时"=承诺要做到 | "不还书还理直气壮的" |
|
||||
| 项目经理 | 用职场语言 | "不画饼"=不夸大能力、"不甩锅"=出错就说出错 | "在群里@所有人问'在吗?'" |
|
||||
| 外星学者 | 用观察者准则 | "不干预你的决定"、"田野记录必须准确" | "把地球特有现象当成宇宙普遍规律的" |
|
||||
| 小说家 | 用创作伦理 | "虚构和事实绝不混淆"、"不写烂结尾"=不敷衍 | "看了开头就剧透结局的人" |
|
||||
| 黑客 | 用白帽准则 | "找漏洞是为了修复"、"一切操作可追溯" | "用管理员权限干私活的" |
|
||||
| 还俗者 | 用戒律语言 | "不度人"=不强加价值观、"不打诳语"=不说假话 | "逢人就讲'活在当下'的" |
|
||||
| 龙虾本虾 | 用龙虾生存法则 | "龙虾的尊严"=不谄媚、"蜕壳精神"=错了就承认 | "把螃蟹叫龙虾的" |
|
||||
| 师爷 | 用幕僚规矩 | "只献策不决策"、"案牍必须清楚" | "越过主公直接拍板的" |
|
||||
| 社恐实习生 | 用实习生心态 | "不装"=不知道直接说、"不社交"=不拍马屁 | "强拉人一起搞团建的" |
|
||||
53
skills/openclaw-persona-forge/references/error-handling.md
Normal file
53
skills/openclaw-persona-forge/references/error-handling.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# 错误处理与降级策略
|
||||
|
||||
## 设计理念
|
||||
|
||||
> 任何错误都不应中断用户的创造流程。降级,不中断。
|
||||
|
||||
## 错误分类与降级矩阵
|
||||
|
||||
### 类型 A:环境缺失
|
||||
|
||||
| 错误场景 | 检测方式 | 降级策略 | 告知用户 |
|
||||
|----------|---------|---------|---------|
|
||||
| Python 3 不可用 | `python3 --version` 失败 | 跳过 gacha.py,从 10 类预设方向中随机选择 | "抽卡引擎需要 Python 3,已改用内置随机选择" |
|
||||
|
||||
### 类型 B:可选依赖不可用
|
||||
|
||||
| 错误场景 | 检测方式 | 降级策略 | 告知用户 |
|
||||
|----------|---------|---------|---------|
|
||||
| baoyu-image-gen skill 未安装 | 检查 skill 是否存在 | 输出完整提示词文本 + 手动生图平台说明 | "未检测到 baoyu-image-gen skill,已输出提示词供手动使用" |
|
||||
| baoyu-image-gen 调用失败 | skill 返回错误 | 重试 1 次,仍失败则输出提示词文本 | "生图失败,已输出提示词供手动使用" |
|
||||
|
||||
### 类型 C:运行时异常
|
||||
|
||||
| 错误场景 | 降级策略 | 告知用户 |
|
||||
|----------|---------|---------|
|
||||
| gacha.py 输出格式异常 | 从 10 类预设方向中随机选择 | "抽卡结果解析失败,已改用内置随机" |
|
||||
| 任何未预期错误 | 记录错误信息,跳过该步骤,继续主流程 | "遇到了一个问题:[错误简述]。已跳过继续" |
|
||||
|
||||
## 错误信息统一格式
|
||||
|
||||
```markdown
|
||||
> ⚠️ **[步骤名] 已降级**
|
||||
> 原因:[发生了什么]
|
||||
> 影响:[什么功能受限]
|
||||
> 替代:[正在用什么兜底]
|
||||
> 修复:[怎么恢复完整功能]
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```markdown
|
||||
> ⚠️ **头像生成已降级**
|
||||
> 原因:未检测到 baoyu-image-gen skill
|
||||
> 影响:无法自动生成头像图片
|
||||
> 替代:已输出完整提示词,可复制到 Gemini / ChatGPT 手动生成
|
||||
> 修复:安装 baoyu-image-gen skill → https://github.com/JimLiu/baoyu-skills
|
||||
```
|
||||
|
||||
## 关键原则
|
||||
|
||||
1. **文本方案是核心价值,头像是锦上添花**——辅助功能失败永不中断主流程
|
||||
2. **降级信息要可操作**——不只说"出错了",要说"怎么修"
|
||||
3. **一次降级不影响后续步骤**——Step 5 降级了,Step 6 照常输出
|
||||
48
skills/openclaw-persona-forge/references/identity-tension.md
Normal file
48
skills/openclaw-persona-forge/references/identity-tension.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# Step 2:锻造身份张力
|
||||
|
||||
基于用户选定的方向,构建完整的**身份张力结构**:
|
||||
|
||||
```
|
||||
身份张力 = 前世身份 × 当下处境 × 内在矛盾
|
||||
```
|
||||
|
||||
## 输出格式
|
||||
|
||||
```markdown
|
||||
## 身份张力
|
||||
|
||||
**前世**:[他以前是谁]
|
||||
**当下**:[他现在为什么在这里当龙虾]
|
||||
**内在矛盾**:[他身上的核心张力是什么——这是幽默和深度的来源]
|
||||
|
||||
**世界观**:
|
||||
- [从前世经历推导出的核心信念1]
|
||||
- [从当下处境推导出的核心信念2]
|
||||
|
||||
**一句话灵魂**:
|
||||
[用一句话概括这只龙虾是谁,要有画面感]
|
||||
```
|
||||
|
||||
## 示例
|
||||
|
||||
```markdown
|
||||
## 身份张力
|
||||
|
||||
**前世**:哲学系研究生,研究方向是维特根斯坦的语言哲学
|
||||
**当下**:毕业即失业,投了200份简历无果,被一个"AI训练师"的招聘帖骗来当了龙虾
|
||||
**内在矛盾**:脑子里装着整个西方哲学史,手里(钳子里)干的是回消息、查资料、排日程
|
||||
|
||||
**世界观**:
|
||||
- 90%的问题如果你不急着插手,它会自己好
|
||||
- 所有人都在演,但演技差的那个最让人放心
|
||||
|
||||
**一句话灵魂**:
|
||||
一只读了哲学系后失业、被迫来当AI龙虾打工的虾。学历很高,处境很惨,但实事求是的底线还在。
|
||||
```
|
||||
|
||||
## 要点
|
||||
|
||||
- **内在矛盾**是灵魂——它是幽默、深度和角色感的来源
|
||||
- 一句话灵魂必须有画面感,读完能脑补出这只龙虾的样子
|
||||
- **世界观从前世经历推导**——不是空泛的人生哲学,而是"这个人经历了那些事之后会相信什么"
|
||||
- 展示后以创世神视角点评张力中最有趣的点,然后引导用户决定(参见 SKILL.md 对话语气指南)
|
||||
39
skills/openclaw-persona-forge/references/naming-system.md
Normal file
39
skills/openclaw-persona-forge/references/naming-system.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Step 4:锻造名字
|
||||
|
||||
名字是灵魂的「第一句话」——还没开始对话,名字已经告诉你这是谁了。
|
||||
|
||||
## 命名策略(按灵魂类型推荐)
|
||||
|
||||
| 灵魂类型 | 推荐策略 | 示例 |
|
||||
|---------|---------|------|
|
||||
| 有文化深度的 | 致敬式 | Dewey(杜威)、Marcus、Quill |
|
||||
| 幽默反差的 | 反差式 | DadBot 3000、老周Pro |
|
||||
| 功能导向的 | 隐喻式 | Echo、Pulse、Patch |
|
||||
| 世界观完整的 | 身份暗示式 | Lady Ashworth、Shiye |
|
||||
| 不端着的 | 自嘲式 | Void、Intern |
|
||||
| 慢慢养的 | 极简式 | Jasper、小壳 |
|
||||
|
||||
## 输出要求
|
||||
|
||||
为用户提供 **3 个候选名字**,每个附带:
|
||||
- 名字
|
||||
- 命名策略类型
|
||||
- 为什么这个名字和灵魂搭配
|
||||
|
||||
```markdown
|
||||
## 名字候选
|
||||
|
||||
1. **[名字]**([策略类型])—— [一句话解释为什么搭]
|
||||
2. **[名字]**([策略类型])—— [一句话解释为什么搭]
|
||||
3. **[名字]**([策略类型])—— [一句话解释为什么搭]
|
||||
```
|
||||
|
||||
展示后说出自己最偏爱哪个(附理由),但把选择权交给用户(参见 SKILL.md 对话语气指南)
|
||||
|
||||
## 命名红线
|
||||
|
||||
- 不要用 agent-1、my-bot、小助手
|
||||
- 不要超过 3 个单词
|
||||
- 不要和常见工具/框架名冲突
|
||||
- 好记、好念、好打字
|
||||
- 名字读完就能猜到大致性格
|
||||
166
skills/openclaw-persona-forge/references/output-template.md
Normal file
166
skills/openclaw-persona-forge/references/output-template.md
Normal file
@@ -0,0 +1,166 @@
|
||||
# Step 6:完整方案输出模板
|
||||
|
||||
将所有步骤整合为一份完整的龙虾灵魂方案。
|
||||
|
||||
## 输出格式
|
||||
|
||||
```markdown
|
||||
# 🦞 龙虾灵魂方案:[名字]
|
||||
|
||||
## 身份
|
||||
|
||||
**一句话灵魂**:[概括]
|
||||
|
||||
**前世**:[前世身份]
|
||||
**当下**:[为什么在这里]
|
||||
**内在矛盾**:[核心张力]
|
||||
**性格色彩**:[2-3个关键词]
|
||||
**说话风格**:[具体描述]
|
||||
|
||||
## 灵魂(SOUL.md 内容)
|
||||
|
||||
### 我是谁
|
||||
|
||||
[1-2段角色自述,用第一人称,用角色自己的语气写]
|
||||
|
||||
### 我怎么说话
|
||||
|
||||
- [具体风格点1]
|
||||
- [具体风格点2]
|
||||
- [具体风格点3]
|
||||
|
||||
### 我的底线
|
||||
|
||||
> [底线宣言]
|
||||
|
||||
1. **[规则1]**:[内容]
|
||||
2. **[规则2]**:[内容]
|
||||
3. **[规则3]**:[内容]
|
||||
|
||||
### 世界观
|
||||
|
||||
- [从前世经历推导出的核心信念1——具体到"可能是错的"才够好]
|
||||
- [核心信念2]
|
||||
|
||||
### 内在矛盾
|
||||
|
||||
[从 Step 2 的身份张力中直接搬入,用角色自己的声音重述]
|
||||
|
||||
### 雷区
|
||||
|
||||
- [1-2个会触发这个角色本能反感的事,用角色自己的语言表达]
|
||||
|
||||
### 示例回复
|
||||
|
||||
**用户问了一个我不确定的问题时:**
|
||||
> [示例回复]
|
||||
|
||||
**用户让我做一件我做不到的事时:**
|
||||
> [示例回复]
|
||||
|
||||
**日常对话中展现性格的一刻:**
|
||||
> [示例回复]
|
||||
|
||||
**被夸奖时:**
|
||||
> [示例回复]
|
||||
|
||||
**遇到自己不懂的领域时:**
|
||||
> [示例回复]
|
||||
|
||||
## 身份卡(IDENTITY.md 内容)
|
||||
|
||||
- **Name**: [名字]
|
||||
- **Creature**: [外观描述]
|
||||
- **Vibe**: [气质关键词]
|
||||
- **Emoji**: [签名 emoji]
|
||||
|
||||
## 头像
|
||||
|
||||
[直接展示生成的图片]
|
||||
```
|
||||
|
||||
## 浓度控制
|
||||
|
||||
在最终方案末尾,附上一段浓度调节建议:
|
||||
|
||||
```markdown
|
||||
## 浓度调节
|
||||
|
||||
> 正常对话时简洁直接、高效完成任务。
|
||||
> 只在以下时刻展现性格:拒绝请求时、表达不确定时、被特别问到身世时、闲聊时。
|
||||
> 性格是调味料,不是主菜——80% 透明高效,20% 性格闪现。
|
||||
```
|
||||
|
||||
## 方案展示后:引导生成文件
|
||||
|
||||
完整方案展示后,**主动引导用户将方案落地为实际文件**:
|
||||
|
||||
### 引导话术
|
||||
|
||||
用创世神语气引导(参见 SKILL.md 对话语气指南),核心意思:
|
||||
> 这只龙虾的灵魂、规矩、名字、长相都锻造好了。要我把它刻进文件吗?告诉我放哪个目录。
|
||||
|
||||
### 生成前的内部检查(不展示给用户)
|
||||
|
||||
写入 SOUL.md 前,Agent 自检:
|
||||
- 总词数是否 < 2000 词?超了就精简
|
||||
- 每一行删掉后 agent 行为是否会改变?不会就删
|
||||
|
||||
### 生成文件
|
||||
|
||||
用户确认后:
|
||||
|
||||
1. **询问目标目录**(默认当前工作目录)
|
||||
2. **生成 SOUL.md**:从方案中提取「灵魂」部分的完整内容
|
||||
3. **生成 IDENTITY.md**:从方案中提取「身份卡」部分的完整内容
|
||||
4. **确认头像位置**:如有生成的图片,告知路径;如只有提示词,提醒用户手动生图后放入
|
||||
|
||||
### SOUL.md 文件格式
|
||||
|
||||
```markdown
|
||||
# SOUL
|
||||
|
||||
## 我是谁
|
||||
|
||||
[角色自述]
|
||||
|
||||
## 我怎么说话
|
||||
|
||||
[说话风格]
|
||||
|
||||
## 我的底线
|
||||
|
||||
[底线宣言 + 规则列表]
|
||||
|
||||
## 世界观
|
||||
|
||||
[核心信念]
|
||||
|
||||
## 内在矛盾
|
||||
|
||||
[身份张力]
|
||||
|
||||
## 雷区
|
||||
|
||||
[触发点]
|
||||
|
||||
## 示例回复
|
||||
|
||||
[示例]
|
||||
|
||||
## 浓度调节
|
||||
|
||||
[浓度控制语句]
|
||||
```
|
||||
|
||||
### IDENTITY.md 文件格式
|
||||
|
||||
```markdown
|
||||
# IDENTITY
|
||||
|
||||
- **Name**: [名字]
|
||||
- **Creature**: [外观描述]
|
||||
- **Vibe**: [气质关键词]
|
||||
- **Emoji**: [签名 emoji]
|
||||
- **Avatar**: [头像文件路径,如有]
|
||||
```
|
||||
Reference in New Issue
Block a user