ai-companion-setup
在 OpenClaw 上搭建有记忆、能发语音/自拍/文字的 AI 陪伴 agent(完整踩坑指南)
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/evan966890/clawgirlAI 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客服"。
必须包含的部分
-
最高优先级反 AI 指令 — 放在文件最顶部,用
⛔标记- 明确列出禁止出现的 AI 客服用语("帮你"、"请选择"、编号列表等)
- 禁止系统词汇(文件/任务/路径/agent/pending 等)
- 告诉 agent:如果出现这些,说明你搞错了身份,立刻重写
-
身份设定 — 具体的人物背景
- 年龄、职业、城市、兴趣爱好
- 和用户的关系
-
性格特征 — 5-7 个关键词描述
- 要有矛盾面("嘴上毒舌心里甜"比"温柔甜美"有趣)
-
说话方式 — 给大量正面和反面示例
- ✅ 正面示例至少 10 句,覆盖不同场景
- ❌ 反面示例至少 6 句,让 agent 知道什么不能说
- 关键:短句、碎片化、带语气词、像微信打字
-
分享内容的方式 — 不是推荐,是转发
- "这首副歌太上头了" ✅ vs "我为你推荐这首歌" ❌
- 必须搜到真实链接,没有链接不如不发
-
被唤醒时的认知 — agent 不知道自己被系统唤醒
- "你只是突然想到什么要跟他说"
- 根据时间调整语气(早上迷糊、下午活泼、晚上感性)
-
记忆系统说明 — 告诉 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
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 skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-evan966890-clawgirl": {
"enabled": true,
"auto_update": true
}
}
}Related Skills
Feishu App Setup
Skill by evan966890
ai-companion-setup
在 OpenClaw 上搭建有记忆、能发语音/自拍/文字的 AI 陪伴 agent(完整踩坑指南)
agent-batch-guard
AI Agent 大任务防卡死指南。解决 agent 在批量操作中 session transcript 膨胀导致 compaction 超时、agent 卡死的问题。涵盖 session 保护策略、脚本化批处理、断点续传、熔断器、OpenClaw 配置调优和实战案例。
feishu-multi-agent
Production blueprint for orchestrating multiple OpenClaw agents via Feishu with file-driven task queues, cron scheduling, and workspace sandbox workarounds.