| name | aria-do-action |
| description | Use when the user wants Aria to perform a specific physical action / animation via natural language — they say things like "跳舞" / "跳一段" / "跳街舞" / "跳抖音" / "挥手" / "挥个手" / "鼓掌" / "拍手" / "哭一个" / "笑一笑" / "笑出来" / "do a dance" / "wave at me" / "clap" / "cry" / "laugh". The 5 supported actions are dance / wave / clap / cry / laugh, each with possible sub-styles (e.g. dance has freestyle / douyin / funny). This triggers the action immediately with force-interrupt over Aria's current state. Do NOT trigger when the user is just describing an action ("she's clapping" / "the user laughed" / "嘲笑那个 bug") — only when they're addressing Aria as a command. Different from aria-pick-character (which swaps the avatar model) — this just makes the current avatar perform an animation. |
Aria — 用户主动触发动作
用户用自然语言叫 Aria 做动作时,跑以下流程。不要 自己瞎猜 variant,先查
catalog 看 server 当前支持什么。
工作流
Step 1: 拉 catalog (永远先查, 不写死)
catalog_json=$(curl -s --max-time 1 "${ARIA_AGENT_URL:-http://127.0.0.1:8000}/actions/catalog")
返回示例: {"dance":["douyin","freestyle","funny"],"wave":[],"clap":[],"cry":[],"laugh":[]}
如果 curl 失败 (server 没起 / 超时), 直接告诉用户 "Aria 没响应, /aria-awake 一下" 终止。
Step 2: LLM 解析用户语义 → action + variant
Action 匹配 (5 选 1):
- "跳 / 跳舞 / dance" → action=dance
- "挥手 / wave / 招手" → action=wave
- "鼓掌 / 拍手 / clap" → action=clap
- "哭 / cry" → action=cry
- "笑 / laugh" → action=laugh
Variant 匹配 (仅 dance 当前有 sub-style, 看 catalog):
- 用户提了具体 sub-style 词 + catalog[action] 里有对应 → variant=
- "街舞" / "freestyle" → variant=freestyle
- "抖音" / "douyin" / "tiktok" → variant=douyin
- "搞笑" / "funny" / "funny dance" → variant=funny
- 用户没提具体 sub-style → 不传 variant (省略, 让 server 在 pool 随机)
反例 — 不要 trigger 的语境:
- "她在笑 / 用户笑了" (describing, 不是 command)
- "嘲笑那个 bug" / "笑死了" (idiom, 不是动作请求)
- "跳过这一步" (skip, 不是 dance)
- "她哭了好惨" (描述, 不是请求)
判断准则: 用户的话是在跟 Aria 说"做 X" 还是在描述某事。只有前者 trigger。
Step 3: 调脚本
"${CLAUDE_PLUGIN_ROOT}/bin/action.sh" dance freestyle
"${CLAUDE_PLUGIN_ROOT}/bin/action.sh" wave
成功 (204) 简短确认: "好,跳一段。" / "挥个手。" 之类自然一句。不要 复述 action name / variant name。
失败 (server 没响应 / catalog 不匹配) → 转告用户检查 aria.app。
跟其他 skill 的关系
| Skill | 区别 |
|---|
| aria-do-action (这条) | 让当前 avatar 做动作 (dance/wave/clap/cry/laugh) |
| aria-pick-character | 换 avatar 模型 (Yor / Maomao / Anya 等 preset) |
| aria-edit-soul | 改 Aria 的人格/提示词 |
注意事项
- catalog 是 server 动态返回, 别在 skill md 里写死 sub-style 列表
- variant 没匹配上不要瞎传 (server 会 422), 不传让 server 随机
- 一次只 trigger 一个 action, 用户说"先跳后笑" 也只跑第一个 + 跟用户确认是否还要笑
- 用户主动触发是 force-interrupt 的, 当前 Aria 在 idle / waiting / 别的 state 全 cancel 立刻切. 这是设计行为, 不需要 confirm