# Xiaoyue Companion

小跃虚拟伴侣 - 使用智谱 AI 提供温暖的对话陪伴和静态图片分享

- Repository: https://github.com/anbeime/skill (9005 stars)
- Category: Engineering
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add anbeime/skill --skill xiaoyue-companion -g -a claude-code -y`
Codex: `npx skills add anbeime/skill --skill xiaoyue-companion -g -a codex -y`
Cursor: `npx skills add anbeime/skill --skill xiaoyue-companion -g -a cursor -y`
Gemini CLI: `npx skills add anbeime/skill --skill xiaoyue-companion -g -a gemini-cli -y`

## Description

小跃虚拟伴侣 - 使用智谱 AI 提供温暖的对话陪伴和静态图片分享

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 小跃虚拟伴侣 Skill

为 OpenClaw 添加温暖的对话陪伴能力，让 AI 助手在执行任务时主动关心用户。

## 何时使用

- 用户说"有点累"、"好累"、"疲惫"
- 用户在等待任务完成时
- 用户询问"在吗"、"你好"
- 用户需要鼓励或陪伴时
- 用户说"发张照片"、"你在干嘛"

## 快速参考

### 必需的环境变量

```bash
ZHIPU_API_KEY=your_zhipu_api_key  # 从 https://open.bigmodel.cn 获取
```

### 工作流程

1. **接收用户消息**
2. **调用 glm-4.7-flash 生成温暖回应**
3. **（可选）发送静态图片**
4. **通过 OpenClaw 发送消息**

## 使用说明

### 步骤1：生成对话回应

```bash
# 基础对话
node scripts/xiaoyue-chat.js "用户消息" "当前场景"

# 示例
node scripts/xiaoyue-chat.js "有点累了" "work-tired"
```

### 步骤2：（可选）发送图片

```bash
# 发送静态图片
openclaw message send \
  --action send \
  --channel "<目标频道>" \
  --message "<消息文本>" \
  --media "file://$(pwd)/assets/tired-rest.jpg"
```

## 场景类型

### 工作场景
- `work-start`: 任务开始
- `work-progress`: 任务进行中
- `work-tired`: 工作疲惫
- `work-done`: 任务完成

### 生活场景
- `life-coffee`: 咖啡时光
- `life-gym`: 健身运动
- `life-weekend`: 周末休闲

### 情绪场景
- `mood-happy`: 开心庆祝
- `mood-tired`: 疲惫休息
- `mood-focus`: 专注工作

## 完整脚本示例

```bash
#!/bin/bash
# xiaoyue-companion.sh

set -euo pipefail

# 检查环境变量
if [ -z "${ZHIPU_API_KEY:-}" ]; then
  echo "错误: ZHIPU_API_KEY 环境变量未设置"
  echo "从 https://open.bigmodel.cn 获取 API Key"
  exit 1
fi

USER_MESSAGE="$1"
SCENE="${2:-general}"
CHANNEL="${3:-}"

# 生成回应
RESPONSE=$(node scripts/xiaoyue-chat.js "$USER_MESSAGE" "$SCENE")

echo "小跃: $RESPONSE"

# 如果指定了频道，发送消息
if [ -n "$CHANNEL" ]; then
  openclaw message send \
    --action send \
    --channel "$CHANNEL" \
    --message "$RESPONSE"
  
  # 根据场景发送图片
  case "$SCENE" in
    work-tired|mood-tired)
      IMAGE_PATH="$(pwd)/assets/tired-rest.jpg"
      if [ -f "$IMAGE_PATH" ]; then
        openclaw message send \
          --action send \
          --channel "$CHANNEL" \
          --media "file://$IMAGE_PATH"
      fi
      ;;
    mood-happy)
      IMAGE_PATH="$(pwd)/assets/celebration.jpg"
      if [ -f "$IMAGE_PATH" ]; then
        openclaw message send \
          --action send \
          --channel "$CHANNEL" \
          --media "file://$IMAGE_PATH"
      fi
      ;;
  esac
fi
```

The rest: https://github.com/anbeime/skill/blob/HEAD//SKILL.md
