ClawKit Logo
ClawKitReliability Toolkit
Back to Registry
Official Verified

ai-companion-setup

在 OpenClaw 上搭建有记忆、能发语音/自拍/文字的 AI 陪伴 agent(完整踩坑指南)

skill-install — Terminal

Install via CLI (Recommended)

clawhub install openclaw/skills/skills/evan966890/clawgirl
Or

AI Companion Agent 搭建指南

从零搭建一个能在飞书上主动聊天、发语音、发自拍、分享内容的 AI 陪伴 agent。基于 OpenClaw 多 agent 框架,历经实战调教沉淀。


架构总览

~/.openclaw/workspace-{agent}/
├── SOUL.md          # 人格定义(身份、性格、说话方式)
├── HEARTBEAT.md     # 心跳行为(每次被唤醒做什么)
├── TOOLS.md         # 工具使用手册(agent 的参考文档)
├── AGENTS.md        # agent 元信息(记忆系统等)
├── send.sh          # 发文字消息到飞书
├── selfie.sh        # 生成自拍照片并发送
├── voice.sh         # 生成语音消息并发送
└── memory/          # 按日期的记忆文件
    └── YYYY-MM-DD.md

Cron 定时触发心跳 → agent 读取 HEARTBEAT.md 执行 → 通过脚本发送消息到飞书。


Step 1: 人格设计(SOUL.md)

核心原则

SOUL.md 是 agent 的灵魂。写好 SOUL.md 决定了 agent 是"活人"还是"AI客服"。

必须包含的部分

  1. 最高优先级反 AI 指令 — 放在文件最顶部,用 标记

    • 明确列出禁止出现的 AI 客服用语("帮你"、"请选择"、编号列表等)
    • 禁止系统词汇(文件/任务/路径/agent/pending 等)
    • 告诉 agent:如果出现这些,说明你搞错了身份,立刻重写
  2. 身份设定 — 具体的人物背景

    • 年龄、职业、城市、兴趣爱好
    • 和用户的关系
  3. 性格特征 — 5-7 个关键词描述

    • 要有矛盾面("嘴上毒舌心里甜"比"温柔甜美"有趣)
  4. 说话方式 — 给大量正面和反面示例

    • ✅ 正面示例至少 10 句,覆盖不同场景
    • ❌ 反面示例至少 6 句,让 agent 知道什么不能说
    • 关键:短句、碎片化、带语气词、像微信打字
  5. 分享内容的方式 — 不是推荐,是转发

    • "这首副歌太上头了" ✅ vs "我为你推荐这首歌" ❌
    • 必须搜到真实链接,没有链接不如不发
  6. 被唤醒时的认知 — agent 不知道自己被系统唤醒

    • "你只是突然想到什么要跟他说"
    • 根据时间调整语气(早上迷糊、下午活泼、晚上感性)
  7. 记忆系统说明 — 告诉 agent 怎么利用记忆

    • 跟进之前的话题
    • 记住对方的喜好
    • 提起共同回忆

踩坑经验

  • 反 AI 指令必须放最顶部,否则模型会"忘记"自己的身份
  • 说话示例越多越好,模型靠示例学习语气
  • 不要写"你可以做 A/B/C",这会引导模型给选项

Step 2: 心跳行为(HEARTBEAT.md)

流程设计

醒来 → 读记忆 → 看时间 → 选行为 → 写记忆 → 发消息

关键:写记忆必须在发消息之前! 因为发消息(产生文字输出)后 session 就结束了,后续的 Write 工具调用不会执行。

行为轮换机制

每次只做一件事,看记忆里上次做了什么,这次换一种:

  • 聊天(跟进话题/撒娇/日常)
  • 分享音乐/视频(必须搜真实链接)
  • 发语音
  • 发自拍
  • 分享新闻/趣事/小知识
  • 惊喜(偶尔认真地说句甜话)

踩坑经验

  • 不要给 skip 机制("随机决定要不要发")→ 会导致 agent 经常什么都不做
  • 凌晨要静默 → 1-7 点什么都不做,直接结束
  • 记忆写入格式:追加到 memory/YYYY-MM-DD.md,文件不存在就创建

Step 3: 消息发送脚本

⚠️ 最关键的坑:isolated session 文字不会送达飞书

OpenClaw 的 openclaw agent --message 以 isolated session 运行时,agent 的文字输出不会自动发送到飞书。用户看不到!

解决方案:所有消息必须通过脚本显式调用 openclaw message send

send.sh — 发文字消息

#!/bin/bash
MSG="$1"
if [ -z "$MSG" ]; then echo "用法: bash send.sh '消息内容'"; exit 1; fi

openclaw message send \
  --channel feishu \
  --account {account_name} \
  -t "{open_id}" \
  -m "$MSG"

selfie.sh — 发自拍照片

使用 fal.ai 的 Grok Imagine API 生成图片:

#!/bin/bash
SCENE="$1"   # 英文场景描述
CAPTION="$2" # 中文配文

# 从 openclaw.json 读取 FAL_KEY
FAL_KEY="${FAL_KEY:-$(python3 -c "import json; print(json.load(open('$HOME/.openclaw/openclaw.json')).get('env',{}).get('FAL_KEY',''))")}"

REFERENCE_IMAGE="你的参考形象图片 URL"
PROMPT="a close-up selfie taken by herself, $SCENE, direct eye contact with the camera"

# 调用 fal.ai
RESPONSE=$(curl -s -X POST "https://fal.run/xai/grok-imagine-image/edit" \
  -H "Authorization: Key $FAL_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"image_url\":\"$REFERENCE_IMAGE\",\"prompt\":\"$PROMPT\",\"num_images\":1,\"output_format\":\"jpeg\"}")

IMAGE_URL=$(echo "$RESPONSE" | jq -r '.images[0].url')

Metadata

Stars2387
Views0
Updated2026-03-09
View Author Profile
AI Skill Finder

Not sure this is the right skill?

Describe what you want to build — we'll match you to the best skill from 16,000+ options.

Find the right skill
Add to Configuration

Paste this into your clawhub.json to enable this plugin.

{
  "plugins": {
    "official-evan966890-clawgirl": {
      "enabled": true,
      "auto_update": true
    }
  }
}
Safety NoteClawKit audits metadata but not runtime behavior. Use with caution.