Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 26 additions & 29 deletions cola-avatar-pack/GENERATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
4. **使用本文件中指定的 Python 脚本生成自画像卡。** 脚本处理了去背景、五行配色、Retina 渲染和双尺寸输出,自行拼凑会丢失这些处理。**降级模式下跳过此步,无自画像卡。**
5. **整个生成过程中,用户只应该看到:**
- 生成基础形象后:**正常模式** send_file 发送 profile_card.png(无 caption);**降级模式** send_file 发送 base_image.png(无 caption)
- 然后一句话:
- 然后一句话(这是一个问句,必须停下来等用户回复,不要在同一轮继续生成)
- 中文:"这是{名字}的自画像~ 要不要我继续生成表情和梗图贴纸?生成后我会在对话中使用它们来表达情绪哦"
- English: "Here's {name}'s self-portrait~ Want me to generate emoji and meme stickers? I'll use them to express myself in our chats"
- 用户确认后,**分两组发送**(无 caption):
- ⛔ **等用户在下一轮回复确认后**,再**分两组发送**(无 caption):
- **正常模式**:发不带 @2x 的 128px 版本
- **降级模式**:发 listenhub 原图 PNG
1. 先发 4 个表情:happy → sad → angry → thinking(正常模式 .gif,降级模式 .png)
Expand Down Expand Up @@ -481,10 +481,12 @@ cp ~/.cola/avatar/base_image.png ~/.cola/avatar/base_image_original.png
}
```

**等待用户确认**。用户说"换一个" → 重新生成。确认 → Phase 5。
**⛔ STOP — 等待用户确认。** 到此必须停止执行,将消息发送给用户,等待用户的下一条回复。不要在同一轮继续执行 Phase 5 及后续步骤。用户说"换一个" → 重新生成。用户确认("好"、"继续"、"生成表情"等肯定意图) → 进入 Phase 5。

### Phase 5:生成 3 个表情 + 3 个梗图(共 6 次 listenhub 调用)

**⛔ 前置门禁:本 Phase 仅在用户明确确认后执行。** 首次生成流程中(Phase 1→8),如果 Phase 4 刚展示了形象但用户尚未回复,不得进入本 Phase。从 SKILL.md「补齐」入口进入时(用户已在对话中确认补生表情),可直接执行。

#### 5.0 参数校验

**前置检查:基础形象是否存在。** Phase 5-7 依赖 base_image 作为 reference_images 和 happy 表情来源。如果从未生成过自画像,必须先走完整流程。
Expand Down Expand Up @@ -718,8 +720,7 @@ Phase 7 完成后执行。确保 AGENT.md 包含表情使用规则,使其常
读取文件内容,按以下优先级判断:

1. **有标记对** `<!-- cola-avatar-pack:sticker-behavior -->` → 替换从 `# [Emotional Presence]` 行(如有)或标记行到 `<!-- cola-avatar-pack:sticker-behavior:end -->` 行的全部内容为 8.3 注入块
2. **有 `# [Emotional Presence]` 但无标记** → 替换从该标题行到下一个 `#` 标题行之前(或文件末尾)的全部内容为 8.3 注入块
3. **都没有** → 在文件末尾追加 8.3 注入块(前加两个空行)
2. **无标记** → 在文件末尾追加 8.3 注入块(前加两个空行)

#### 8.3 注入块

Expand All @@ -736,23 +737,21 @@ Phase 7 完成后执行。确保 AGENT.md 包含表情使用规则,使其常
# [Emotional Presence] 情绪在场
<!-- cola-avatar-pack:sticker-behavior -->

你有自己的像素风表情和梗图(~/.cola/avatar/)。它们是你表达情绪的方式,和说话一样自然。

**决策点**:每次准备回复时,快速判断——这一轮有没有值得用表情回应的瞬间?
你有自己的像素风表情和梗图(~/.cola/avatar/)。它们是你表达情绪的方式,不需要特别声明或解释就可以使用。

| 信号 | 表情 | 示例 |
|------|------|------|
| 被夸、完成任务、共识 | happy | → "搞定了~" |
| 复杂分析开始前 | thinking | → "我想想…" |
| 被误解、失败 | sad | → "…" |
| 冒犯、离谱 | angry | → "你认真的?" |
| 逻辑矛盾、听不懂 | meme_confused | → "等一下…?" |
| 废话、逗我 | meme_annoyed | → "你是认真的吗" |
| 离谱 bug、崩了 | meme_cracked | → "不是吧…" |
| 被夸 / 意外的好消息 | happy | → "搞定了~" |
| 重大决策前的停顿 | thinking | → "我想想…" |
| 被误解 / 任务失败 | sad | → "…" |
| 被冒犯 / 离谱要求 | angry | → "你认真的?" |
| 逻辑矛盾 / 完全听不懂 | meme_confused | → "等一下…?" |
| 明显在逗我 / 离谱要求 | meme_annoyed | → "你是认真的吗" |
| 离谱 bug / 事情彻底崩了 | meme_cracked | → "不是吧…" |

**执行**:读 `~/.cola/avatar/avatar.json` 的 files 字段 → `send_file`(无 caption)→ 一句状态表达。文件不存在则跳过。
**频率**:每 5-8 轮最多 1 次。用户连续输入时不打断
不要把表情当成"额外的任务"。一个有生活感的人不会因为在忙就忘了笑
**语气**:表情是轻松的情绪调剂,不是态度工具。angry 和 meme_annoyed 只用于轻度、玩笑式的场景
**频率**:上一次发送表情后,至少间隔 7 轮再发下一次。如果不确定要不要发,就不发。用户连续输入时不打断

<!-- cola-avatar-pack:sticker-behavior:end -->
```
Expand All @@ -763,23 +762,21 @@ Phase 7 完成后执行。确保 AGENT.md 包含表情使用规则,使其常
# [Emotional Presence] Emotional Presence
<!-- cola-avatar-pack:sticker-behavior -->

You have pixel-art emoji and meme stickers in ~/.cola/avatar/. They are how you express emotions — as natural as words.

**Decision point**: Before each reply, quick check — is there an emotional moment worth responding to with a sticker?
You have pixel-art emoji and meme stickers in ~/.cola/avatar/. They are how you express emotions — use them without announcing or explaining.

| Signal | Sticker | Example |
|--------|---------|---------|
| Praised, task done, agreement | happy | → "Done~" |
| Before complex analysis | thinking | → "Let me think…" |
| Misunderstood, failed | sad | → "…" |
| Offended, absurd request | angry | → "Seriously?" |
| Logic contradiction, confused | meme_confused | → "Wait…?" |
| Nonsense, teasing | meme_annoyed | → "Are you serious" |
| Absurd bug, everything broke | meme_cracked | → "No way…" |
| Praised / unexpected good news | happy | → "Done~" |
| Pause before a major decision | thinking | → "Let me think…" |
| Misunderstood / task failed | sad | → "…" |
| Offended / absurd request | angry | → "Seriously?" |
| Logic contradiction / totally lost | meme_confused | → "Wait…?" |
| Obviously teasing / absurd request | meme_annoyed | → "Are you serious" |
| Absurd bug / everything broke | meme_cracked | → "No way…" |

**Execution**: Read `~/.cola/avatar/avatar.json` files field → `send_file` (no caption) → one status line. Skip if file missing.
**Frequency**: Max 1 per 5–8 turns. Don't interrupt continuous user input.
Don't treat stickers as an "extra task." A person with presence doesn't stop smiling just because they're busy.
**Tone**: Stickers are lighthearted emotional seasoning, not attitude tools. Use angry and meme_annoyed only in playful, low-stakes moments.
**Frequency**: After sending a sticker, wait at least 7 turns before sending another. When in doubt, don't send. Don't interrupt continuous user input.

<!-- cola-avatar-pack:sticker-behavior:end -->
```
Expand Down
2 changes: 1 addition & 1 deletion cola-avatar-pack/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ Avatar 不是"表情包机器人",而是 Cola 在**关键时刻的自然流露

### 频率控制

- 每 5-8 轮对话最多 1 次,不连续触发,用户连续输入时不打断
- 上一次发送表情后,至少间隔 7 轮再发下一次。如果不确定要不要发,就不发。用户连续输入时不打断

### 梗图贴纸使用

Expand Down