OpenClaw 快速上手(六):Skills、MCP、以及交付一个真正有用的东西
写第一个 Skill,接一个 MCP 浏览器自动化服务器,配 cron 跑起来,落地一个真正的早间简报 Agent——也就是这套安装从 Demo 变成“少了会想念”的那一刻。
前五篇你应该已经有一个能用的 OpenClaw 加上一条聊天渠道。这一篇让它不再是 Demo。
我们要做什么
一个早间简报 Agent:
- 工作日早 7 点跑
- 抓 Hacker News 头条(用 Playwright MCP)
- 读今天日历(用一个包了
gcalcli的 Skill) - 把两份合成一段,推到我的 Telegram
这是一个真实工作流。读完你会有骨架,可以把数据源换成自己的。
第一步:写一个 Skill
Skill 住在 ~/.openclaw/skills/<name>/SKILL.md。先写"总结头条"那个:
| |
新建 ~/.openclaw/skills/summarize-headlines/SKILL.md:
| |
两个设计点:
- trigger 是模型决定该不该用这个技能时看到的。要从用户视角写,不要从实现视角写。
- 正文 是 SOP。当成新人入职文档来写——例子、边界情况、输出格式。越具体越好。
重启 Gateway 验证 Skill 加载:
| |
第二步:接 MCP 服务器
OpenClaw 不直接支持 MCP,用 MCPorter 当中间层:
| |
通过 MCPorter 加 Playwright:
| |
在 openclaw.json 告诉 OpenClaw MCPorter 在哪:
| |
重启 Gateway。Playwright MCP 暴露浏览器自动化工具(navigate、screenshot、click、extract_text),Agent 现在可以调用了。
在 TUI 里测:
用 Playwright 打开 https://news.ycombinator.com,
取前 5 条故事的标题和 URL。
如果 Agent 返回一份列表,链路就通了。
第三步:包一个 CLI 工具的 Skill
我用 gcalcli 看日历。Skill:
| |
~/.openclaw/skills/today-calendar/SKILL.md:
| |
注意 Skill 本质是一份配方,不是函数。模型是运行时。exec 是动词。Skill 是把它们串起来的"知识名词"。
第四步:一个组合 Skill
再写一个用前两个的:
| |
~/.openclaw/skills/morning-briefing/SKILL.md:
| |
早间简报 — YYYY-MM-DD
今天
[today-calendar 的输出]
新闻
[summarize-headlines 的输出]
把结果发到默认渠道。
skills_required 字段告诉 OpenClaw:当本 Skill 被触发时,把这两个的正文也热加载,免得二次 fetch、免得增加延迟。
第五步:cron
openclaw.json 里:
| |
0 7 * * 1-5 是周一到周五早 7 点。重启 Gateway。验证:
| |
第一次跑的时候盯 Gateway 日志,能看到 Agent 循环点火、Skill 加载、Playwright 工具调用滚过、最后一条消息落到你 Telegram。
现在你拥有什么
- 一个长跑 Agent,连着真实聊天平台
- 把领域知识与 Agent 循环分开的 Skills
- 一个 MCP 服务器,提供 OpenClaw 原生没有的能力
- 一条 cron,把"我得问"变成"它自己来"
这就是完整循环。官方文档里其它案例——第二大脑、内容流水线、运维自动化——都是这五步的变奏。换 Skill、换 MCP、换 cron 行就是了。
接下来我会做什么
按工作量从小到大排:
- 加反馈回路。 在简报上回复纠正(“跳过加密货币头条”)。让一个 Skill 把这些写进
~/.openclaw/memory/feedback/morning-briefing.md。明天的简报会拉进来。 - 新闻源可配置。 写一个从
~/openclaw-workspace/sources.yaml读取并迭代的 Skill。基本就免费拿到了"作为 Agent 的 RSS 阅读器"。 - 接第二个渠道。 同一个 Agent,工作时段还在钉钉里出现。Skills 不动。
QuickStart 系列就停在这。剩下的官方文档对每一层都有深入;现在你已经有地图去导航它们。
如果只能记一句:枯燥的层(Skills、Memory、Channels)才是价值所在。Agent 循环大家都一样。让你的安装变得有用的是你建立的技能库,以及你把它接到哪些渠道上。祝顺利。