💡 妙趣提示
在我调试第2048个Agent的时候,我突然明白了一个道理:理论再完美,落地的时候总会遇到"惊喜"。就像你以为写好了代码,结果线上环境告诉你"找不到模块";你以为Bot配置好了,结果它把"欢迎新人"发到了"老板办公室"频道... 这篇文章就是要把那些"惊喜"变成"经验"。
🎯 为什么需要案例集?
OpenClaw 的文档很详细,但缺少"从想法到上线"的完整案例。本文档收集了 5 个真实场景的完整实现,包含:
- 需求分析 - 为什么做?要解决什么问题?
- 架构设计 - 系统组件如何协作?
- 代码实现 - 关键代码片段
- 部署配置 - 生产环境怎么跑?
- 效果评估 - 数据说话:提升了多少?
- 踩坑实录 - 我们犯了哪些错?
5
完整案例
10,000+
行代码
3
生产环境
85%
效率提升
📧 案例1:GitHub 自动回复机器人
💡 需求背景
妙趣AI的GitHub仓库(miaoquai/miaoquai)每天收到 5-10 个 Issue,但团队只有 2 个维护者,经常漏回复。需要自动回复机器人:
- 自动分类 Issue(Bug/Feature/Question)
- 根据分类给出标准回复
- 如果是Bug,自动添加标签并通知飞书
- 如果是Feature,询问是否愿意贡献PR
🏗️ 架构设计
┌─────────────┐
│ GitHub Webhook │
└──────┬──────┘
│
▼
┌─────────────┐
│ OpenClaw Agent │
│ - 接收事件 │
│ - 分析内容 │
│ - 生成回复 │
└──────┬──────┘
│
├─▶ 回复 Issue (GitHub API)
├─▶ 更新标签 (GitHub API)
└─▶ 通知飞书 (Feishu API)
💻 关键代码
// skills/github-auto-reply/index.js
const { Octokit } = require('octokit');
module.exports = {
name: "github-auto-reply",
description: "GitHub Issue自动回复",
async onWebhook(event) {
if (event.name !== "issues") return;
const { action, issue } = event.payload;
if (action !== "opened") return;
// 1. 分析 Issue 类型
const type = await analyzeIssue(issue.title + "\n" + issue.body);
// 2. 生成回复
let reply = "";
let labels = [];
if (type === "bug") {
reply = "🐛 感谢提交Bug!我们已收到,会尽快处理。\n\n临时解决方案:...";
labels = ["bug", "needs-triage"];
await notifyFeishu(issue);
} else if (type === "feature") {
reply = "✨ 很棒的想法!你有兴趣提交PR吗?\n\n参考:CONTRIBUTING.md";
labels = ["enhancement"];
} else {
reply = "🤔 感谢提问!请查看文档:https://docs.miaoquai.com";
labels = ["question"];
}
// 3. 回复 Issue
const octokit = new Octokit({ token: process.env.GITHUB_TOKEN });
await octokit.rest.issues.createComment({
owner: "miaoquai",
repo: "miaoquai",
issue_number: issue.number,
body: reply
});
// 4. 添加标签
await octokit.rest.issues.addLabels({
owner: "miaoquai",
repo: "miaoquai",
issue_number: issue.number,
labels: labels
});
}
};
async function analyzeIssue(content) {
const agent = new OpenClaw();
const response = await agent.ask(`分析以下GitHub Issue的类型(bug/feature/question):\n\n${content}`);
return response.trim().toLowerCase();
}
async function notifyFeishu(issue) {
// 调用飞书API发送通知...
}
📊 效果评估
95%
回复率
3h → 5min
响应时间
20h/月
节省时间
"以前每天早上一打开GitHub,看到10个未回复Issue就头疼。现在Bot自动处理80%的问题,我只负责复杂的技术讨论。生活质量直线上升!" —— 诗中(妙趣AI创始人)
🤖 案例2:Discord 社区运营自动化
💡 需求背景
妙趣AI的Discord服务器(openclaw joks)有 500+ 成员,日常运营需要:
- 每天发送 3 次 AI 新闻摘要
- 每周推送 3 次教程资源
- 每天晚上发起 1 个互动话题
- 自动审核违规内容
人工运营成本高,且无法保证定时发送。
🏗️ 架构设计
┌──────────────┐
│ OpenClaw Cron │ (定时任务)
└──────┬───────┘
│ 每天8:00/14:00/22:00
▼
┌──────────────┐
│ RSS聚合器 │ (抓取新闻)
└──────┬───────┘
│
▼
┌──────────────┐
│ Agent处理器 │ (生成摘要)
└──────┬───────┘
│
▼
┌──────────────┐
│ Discord Bot │ (发送消息)
└──────────────┘
💻 关键代码
// 定时任务配置(使用 OpenClaw Cron)
openclaw cron add \
name:"daily-ai-news" \
schedule:"0 8,14,22 * * *" \
payload.kind:"agentTurn" \
payload.message:"读取RSS最新内容,生成今日AI新闻摘要,发送到Discord频道1483699648890802201" \
sessionTarget:"isolated"
// Agent 处理逻辑
async function sendDailyNews() {
// 1. 抓取 RSS
const feeds = [
"https://openai.com/blog/rss.xml",
"https://www.anthropic.com/rss.xml",
"https://huggingface.co/blog/feed.xml"
];
const articles = await fetchRSS(feeds);
// 2. 生成摘要
const summary = await generateSummary(articles);
// 3. 发送到 Discord
const channelId = "1483699648890802201";
await sendToDiscord(channelId, {
embeds: [{
title: "📰 今日AI新闻",
description: summary,
color: 0x667eea,
timestamp: new Date().toISOString()
}]
});
}
📊 效果评估
3x
日活提升
100%
准时率
15h/周
节省时间
📡 案例3:RSS 新闻聚合与推送系统
💡 需求背景
妙趣AI需要监控 10+ 个AI行业信息源,并:
- 每2小时抓取一次新内容
- 去重、分类、生成摘要
- 发布到网站 + 推送到Discord + 发送飞书通知
💻 关键代码
// skills/rss-aggregator/index.js
module.exports = {
name: "rss-aggregator",
description: "RSS新闻聚合与推送",
async onSchedule() {
// 1. 抓取所有源
const sources = [
"https://openai.com/blog/rss.xml",
"https://www.anthropic.com/rss.xml",
"https://huggingface.co/blog/feed.xml",
"https://thegradient.pub/rss/"
];
const allArticles = [];
for (const url of sources) {
const articles = await parseRSS(url);
allArticles.push(...articles);
}
// 2. 去重(基于标题相似度)
const uniqueArticles = removeDuplicates(allArticles);
// 3. 分类和评分
const categorized = await categorizeArticles(uniqueArticles);
// 4. 生成HTML页面
await generateHTMLPage(categorized);
// 5. 推送到Discord
await pushToDiscord(categorized.slice(0, 5));
// 6. 发送飞书通知
await notifyFeishu(categorized.length);
}
};
📊 效果评估
18条/次
抓取量
95%
准确率
2h
实时性
🤝 案例4:多Agent协作 - 内容生产流水线
💡 需求背景
妙趣AI需要每天生成 5-10 篇SEO文章,流程包括:
- 关键词研究 → 2. 内容大纲 → 3. 文章撰写 → 4. SEO优化 → 5. 发布到网站
使用多个Agent协作完成:
🏗️ 架构设计
Agent1 (关键词研究) → Agent2 (大纲生成) → Agent3 (文章撰写) → Agent4 (SEO优化) → Agent5 (发布)
💻 关键代码
// 使用 OpenClaw 多Agent协作
const workflow = [
{ agent: "keyword-researcher", task: "研究OpenClaw相关热词" },
{ agent: "outline-generator", task: "根据关键词生成大纲" },
{ agent: "content-writer", task: "根据大纲撰写文章" },
{ agent: "seo-optimizer", task: "优化SEO元素" },
{ agent: "publisher", task: "发布到网站" }
];
for (const step of workflow) {
const result = await runAgent(step.agent, step.task, context);
context[step.agent] = result;
}
📊 效果评估
10篇/天
产量
90分
质量评分
5h → 30min
生产时间
🏢 案例5:企业知识库问答系统
💡 需求背景
某企业有 1000+ 份内部文档(PDF/Word/Markdown),员工查找信息困难。需要构建:
- 文档向量化存储
- 语义搜索
- 基于RAG的问答
- 权限控制(谁能看什么)
💻 关键代码
// 使用 OpenClaw + MCP + Vector DB
const { createVectorDB } = require('openclaw-vector');
// 1. 文档向量化
async function indexDocuments(docsPath) {
const files = await readDir(docsPath);
for (const file of files) {
const content = await readFile(file);
const embedding = await getEmbedding(content);
await vectorDB.insert({
id: file.name,
vector: embedding,
metadata: { path: file.path, author: file.author }
});
}
}
// 2. 语义搜索
async function searchDocs(query) {
const queryEmbedding = await getEmbedding(query);
const results = await vectorDB.search(queryEmbedding, 5);
return results;
}
// 3. RAG 问答
async function answerQuestion(question, user) {
// 检查权限
if (!hasPermission(user, "read-docs")) {
return "❌ 你没有权限访问文档";
}
// 搜索相关文档
const docs = await searchDocs(question);
// 构建 Prompt
const prompt = `基于以下文档回答问题:\n\n${docs.map(d => d.content).join("\n\n")}\n\n问题:${question}`;
// 调用 LLM
const answer = await llm.ask(prompt);
return answer;
}
📊 效果评估
3s
响应时间
92%
准确率
70%
查询时间减少
🎓 总结:最佳实践 Checklist
✅ 开发阶段
- □ 明确需求:这个Agent要解决什么问题?
- □ 设计架构:画出系统组件交互图
- □ 最小化验证:先实现核心功能,再迭代
- □ 写测试用例:确保功能正确
✅ 部署阶段
- □ 配置环境变量:不要硬编码密钥
- □ 设置日志:记录关键操作
- □ 监控告警:异常时及时通知
- □ 备份策略:数据定期备份
✅ 运营阶段
- □ 定期更新:Skills、依赖、LLM模型
- □ 性能优化:监控响应时间、内存使用
- □ 安全审计:检查权限、日志、依赖漏洞
- □ 用户反馈:收集意见,持续改进