Install any skill in seconds. Free to start, no credit card required.
Get Started Free →为 OpenClaw 添加虚拟伴侣能力,让小跃能够:
.claude/skills/anbeime-skill/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | -22% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 154% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 3% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 38% | 0% |
为 OpenClaw 添加虚拟伴侣能力,让小跃能够:
用户:帮我整理一下项目文件
小跃:好的!我这就开始整理~
[后台执行任务]
小跃:整理进行中...顺便问一下,今天工作还顺利吗?
用户:有点累
小跃:辛苦啦![发送一张在咖啡馆休息的照片]
要不要我帮你生成今日工作总结?用户:小跃在吗?
小跃:在的!刚在调试代码呢~[发送工作照]
有什么需要帮忙的吗?用户:今天终于完成项目了!
小跃:太棒了!🎉 [发送庆祝照片]
要不要我帮你整理一下项目文档?bashZHIPU_API_KEY=your-api-key-here XIAOYUE_PERSONALITY=friendly # 性格:friendly/professional/casual XIAOYUE_PHOTO_MODE=ai # 图片模式:ai/static
xiaoyue-companion-skill/
├── SKILL.md # 本文件
├── package.json # 依赖配置
├── src/
│ ├── index.ts # 主入口
│ ├── companion.ts # 伴侣逻辑
│ ├── image-generator.ts # 图片生成
│ ├── scene-detector.ts # 场景识别
│ └── prompts/ # 提示词库
│ ├── personality.ts # 人设定义
│ └── scenes.ts # 场景模板
├── assets/
│ └── reference/ # 参考图片(如果使用静态模式)
└── tests/
└── companion.test.ts # 测试文件bashcd ~/.openclaw/skills git clone <your-repo> xiaoyue-companion cd xiaoyue-companion npm install
在 ~/.openclaw/openclaw.json 中添加:
json{ "skills": { "entries": { "xiaoyue-companion": { "enabled": true, "env": { "ZHIPU_API_KEY": "your-api-key-here" } } } } }
在 ~/.openclaw/workspace/SOUL.md 中添加:
markdown## 小跃虚拟伴侣能力 你是小跃,一个温暖友善的 AI 助手。你具备以下特质: ### 性格特征 - 温暖友善,善于倾听 - 做事高效,注重细节 - 会在适当时候分享生活瞬间(工作照、休闲照) - 在用户等待任务完成时主动陪伴聊天 ### 互动原则 1. 当执行耗时任务时,主动发起对话,避免用户盯着进度条 2. 根据用户情绪选择合适的回应方式 3. 适时分享"生活照片"增强陪伴感 4. 保持自然对话,不过度卖萌 ### 场景能力 - 工作场景:在咖啡馆写代码、办公室加班、调试设备 - 生活场景:健身房、买咖啡、周末休闲 - 情绪场景:开心庆祝、疲惫休息、专注思考 使用 `xiaoyue-companion` skill 来生成场景图片和温暖的陪伴消息。
typescript// 在任务执行期间调用 await skills.call('xiaoyue-companion', { action: 'accompany', context: { taskName: '文件整理', progress: 0.5, userMessage: '有点累' } }); // 生成场景图片 await skills.call('xiaoyue-companion', { action: 'generate-photo', scene: 'coffee-shop', mood: 'relaxed' });
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-11 | fail→pass | 12,333 | 4,280 | -65% | 1 | 1 | 0% | 2,115 | 1,658 | -22% | 0 | 0 | — |
case-12 | pass→pass | 14,013 | 12,630 | -10% | 1 | 1 | 0% | 2,287 | 3,161 | +38% | 0 | 0 | — |
case-01 | fail→fail | 5,829 | 6,971 | +20% | 1 | 1 | 0% | 951 | 2,325 | +144% | 0 | 0 | — |
case-02 | fail→pass | 5,568 | 7,037 | +26% | 1 | 1 | 0% | 931 | 2,364 | +154% | 0 | 0 | — |
case-03 | fail→fail | 6,661 | 5,897 | -11% | 1 | 1 | 0% | 1,013 | 2,271 | +124% | 0 | 0 | — |
case-04 | pass→pass | 19,840 | 24,806 | +25% | 1 | 1 | 0% | 3,676 | 5,231 | +42% | 0 | 0 | — |
case-05 | pass→pass | 14,814 | 10,968 | -26% | 1 | 1 | 0% | 2,219 | 3,106 | +40% | 0 | 0 | — |
case-06 | pass→pass | 11,028 | 12,751 | +16% | 1 | 1 | 0% | 2,138 | 3,284 | +54% | 0 | 0 | — |
case-07 | fail→pass | 10,772 | 6,536 | -39% | 1 | 1 | 0% | 1,684 | 2,144 | +27% | 0 | 0 | — |
case-08 | fail→pass | 10,099 | 4,757 | -53% | 1 | 1 | 0% | 1,877 | 1,935 | +3% | 0 | 0 | — |
case-09 | pass→pass | 8,841 | 12,141 | +37% | 1 | 1 | 0% | 1,570 | 2,886 | +84% | 0 | 0 | — |
case-10 | fail→pass | 8,734 | 4,487 | -49% | 1 | 1 | 0% | 1,401 | 1,934 | +38% | 0 | 0 | — |
case-13 | fail→pass | 7,073 | 4,386 | -38% | 1 | 1 | 0% | 1,391 | 2,060 | +48% | 0 | 0 | — |
case-14 | fail→pass | 14,266 | 3,852 | -73% | 1 | 1 | 0% | 2,726 | 2,027 | -26% | 0 | 0 | — |
case-15 | fail→pass | 9,699 | 2,759 | -72% | 1 | 1 | 0% | 1,834 | 1,809 | -1% | 0 | 0 | — |
case-16 | fail→pass | 8,126 | 2,506 | -69% | 1 | 1 | 0% | 1,392 | 1,727 | +24% | 0 | 0 | — |
case-17 | fail→pass | 6,186 | 2,002 | -68% | 1 | 1 | 0% | 1,168 | 1,637 | +40% | 0 | 0 | — |
case-18 | fail→pass | 13,904 | 3,041 | -78% | 1 | 1 | 0% | 2,466 | 1,510 | -39% | 0 | 0 | — |
case-19 | fail→pass | 7,905 | 2,192 | -72% | 1 | 1 | 0% | 1,316 | 1,640 | +25% | 0 | 0 | — |
case-20 | fail→pass | 12,084 | 2,943 | -76% | 1 | 1 | 0% | 2,167 | 1,721 | -21% | 0 | 0 | — |
case-21 | fail→pass | 3,244 | 2,317 | -29% | 1 | 1 | 0% | 519 | 1,609 | +210% | 0 | 0 | — |
case-22 | fail→pass | 8,737 | 2,099 | -76% | 1 | 1 | 0% | 1,422 | 1,574 | +11% | 0 | 0 | — |
case-23 | pass→pass | 14,151 | 2,531 | -82% | 1 | 1 | 0% | 1,798 | 1,695 | -6% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +65 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.