当前位置: 首页 > news >正文

人人都能写 OpenClaw Skill!手把手带你做一个自动日报技能

人人都能写 OpenClaw Skill!手把手带你做一个自动日报技能

引子

我前几天在想一个问题:AI Agent 到底怎么才能"学会"新技能?

不是那种微调训练的学法,而是——我今天有个新需求,希望 Agent 明天就能处理,后天就能自动化。这种"即插即用"的能力扩展,有没有一种足够轻量的实现方式?

后来我在 OpenClaw 里找到了答案:Skill

它的做法简单到有点反直觉——写一个 Markdown 文件,描述清楚"你是谁、什么时候用、怎么做",放到指定目录下,Agent 下次对话就能自动识别和执行。不需要编译,不需要注册,不需要重启。

这篇文章我会手把手带你写一个"每日技术日报"Skill,从目录结构到完整代码,再到调试上线。你会发现,门槛真的没有想象中那么高。


Skill 是什么

在 OpenClaw 的架构里,Skill 是 AI Agent 的能力扩展单元。但它不是传统意义上的代码插件——它是一份Markdown 格式的操作手册

工作原理:

  1. Agent 启动时扫描所有 Skill 的namedescription(元数据层,常驻内存)
  2. 用户发来请求时,Agent 根据 description 判断该不该触发某个 Skill
  3. 触发后,Agent 才去读取 SKILL.md 的正文内容(指令层,按需加载)
  4. 按正文中的指令执行操作

这种三层加载的设计(元数据 → 正文 → 附属资源)是为了节省上下文窗口。毕竟 Agent 的上下文是有限资源,不能把所有 Skill 的内容都塞进去。

你可以把 Skill 理解为给 Agent 写的 SOP(标准操作程序)。写得好的 Skill,Agent 拿到就能干活。


目录结构

一个 Skill 的标准结构:

bash

skill-name/

├── SKILL.md # 必需:技能定义文件

├── scripts/ # 可选:可执行脚本

├── references/ # 可选:参考文档

└── assets/ # 可选:模板、图标等资源

只有 SKILL.md 是必需的,其他目录根据需要创建:

  • scripts/:放 Bash 或 Python 脚本。适合那些每次都要重写且需要确定性输出的操作
  • references/:放详细的参考资料。比如 API 文档、数据库 schema,Agent 在需要时才读取
  • assets/:放模板文件、图标等。Agent 不会读取这些文件的内容,而是直接在输出中使用它们

关键原则:SKILL.md 保持精简,大段内容拆到子目录。这样 Agent 触发 Skill 时只加载核心指令,不会一次性吃掉太多上下文。


SKILL.md 的写法

SKILL.md 由两部分组成:

Frontmatter(YAML 头部)

yaml

---

name: daily-tech-digest

description: |

每日技术日报生成与推送。自动搜索当天技术热点新闻,

生成中文摘要日报,推送到 Slack 频道。

触发条件:日报、技术新闻、热点、每日摘要、tech digest。

---

name 是 Skill 的标识符,小写+连字符。

description 是核心——Agent 靠它决定什么时候触发这个 Skill。写 description 的关键是要覆盖足够多的触发场景,把用户可能的各种说法都考虑到。

正文(Markdown 指令)

正文就是写给 Agent 看的操作指南。用祈使句,简洁直接。

内容一般包含:

  • 什么时候用 / 不用
  • 具体执行步骤
  • 输出格式要求
  • 注意事项

实战:每日技术日报 Skill

说够了理论,来看完整实现。

需求

每天早上自动搜索技术热点,生成中文日报,推送到 Slack。

目录结构

markdown

daily-tech-digest/

├── SKILL.md

└── scripts/

└── generate_digest.sh

完整 SKILL.md

yaml

---

name: daily-tech-digest

description: |

每日技术日报生成与推送。自动搜索当天技术热点新闻,生成中文摘要日报,

推送到 Slack 频道。

触发条件:用户要求生成技术日报、每日新闻摘要、技术热点汇总,

或定时任务触发每日日报生成。

关键词:日报、技术新闻、热点、每日摘要、tech digest。

---

# 每日技术日报

自动搜索技术热点,生成中文日报并推送到 Slack。

## 使用场景

✅ **适用:**

- 用户说"生成今天的技术日报"

- 定时任务触发每日日报

- 用户要求搜索技术热点并汇总

❌ **不适用:**

- 查询特定技术问题的深度分析

- 非技术类新闻汇总

## 执行流程

### 1. 搜索技术热点

使用 web_search 工具搜索以下关键词(每个取前 5 条):

- "AI 人工智能 新闻 today"

- "云计算 cloud computing news"

- "开源项目 trending"

- "软件开发 技术趋势"

### 2. 筛选和去重

从搜索结果中筛选:

- 过滤掉超过 48 小时的旧新闻

- 去除重复内容(相同 URL 或标题相似度 > 80%)

- 保留 8-12 条高质量条目

### 3. 生成日报

按以下格式生成中文日报:

```markdown

📰 技术日报 | YYYY-MM-DD

## 🔥 今日热点

### 1. [标题]

摘要(2-3 句话概括核心内容)

🔗 来源:[链接]

### 2. [标题]

...

---

💡 由 OpenClaw 自动生成

4. 推送到 Slack

使用 message 工具发送到指定 Slack 频道:

  • 默认频道:当前对话所在频道
  • 如果用户指定了频道,发送到指定频道
  • 消息格式使用 Slack 兼容的 Markdown

5. 保存归档

将日报保存到 ~/.openclaw/workspace/digests/YYYY-MM-DD.md 归档。

脚本

如需批量抓取,可执行辅助脚本:

bash

bash scripts/generate_digest.sh

定时任务

建议通过 OpenClaw 的 cron 功能设置每日定时执行:

  • 时间:每天早上 9:00(UTC+8)
  • 任务:生成技术日报并推送到 Slack

注意事项

  • 搜索结果依赖 web_search 工具的可用性
  • 单次生成的日报条目控制在 8-12 条,避免信息过载
  • 如搜索结果不足,如实告知,不要编造内容
bash

### 辅助脚本

`scripts/generate_digest.sh`:

```bash

#!/usr/bin/env bash

# 辅助脚本:抓取 AWS 官方博客最新文章作为日报素材之一

set -euo pipefail

DATE=$(date +%Y-%m-%d)

OUTPUT_DIR="${HOME}/.openclaw/workspace/digests"

OUTPUT_FILE="${OUTPUT_DIR}/${DATE}.md"

mkdir -p "$OUTPUT_DIR"

echo "📰 技术日报 | ${DATE}" > "$OUTPUT_FILE"

echo "" >> "$OUTPUT_FILE"

echo "## 🔥 今日技术热点" >> "$OUTPUT_FILE"

echo "" >> "$OUTPUT_FILE"

# 从 AWS 官方博客 RSS 拉取最新条目

FEED_URL="https://aws.amazon.com/blogs/china/feed/"

TITLES=$(curl -s "$FEED_URL" | grep -oP '(?<=<title>).*?(?=</title>)' | head -12 | tail -10)

INDEX=1

while IFS= read -r title; do

if [ -n "$title" ]; then

echo "### ${INDEX}. ${title}" >> "$OUTPUT_FILE"

echo "" >> "$OUTPUT_FILE"

INDEX=$((INDEX + 1))

fi

done <<< "$TITLES"

echo "---" >> "$OUTPUT_FILE"

echo "💡 由 OpenClaw 自动生成" >> "$OUTPUT_FILE"

echo "日报已保存到: ${OUTPUT_FILE}"

这个脚本作为 fallback 使用——主搜索由 Agent 的 web_search 工具完成,脚本则从 AWS 官方博客 RSS 补充素材。


安装和测试

安装

bash

# 创建 Skill 目录

mkdir -p ~/.openclaw/workspace/skills/daily-tech-digest/scripts

# 复制文件

cp SKILL.md ~/.openclaw/workspace/skills/daily-tech-digest/

cp scripts/generate_digest.sh ~/.openclaw/workspace/skills/daily-tech-digest/scripts/

chmod +x ~/.openclaw/workspace/skills/daily-tech-digest/scripts/generate_digest.sh

放好就行了。OpenClaw 会在下次会话时自动扫描加载,不用重启

测试

在 Slack 里直接说:

生成今天的技术日报

或者换个说法:

帮我整理一下今天的技术热点

Agent 应该能识别到 daily-tech-digest Skill 并执行。如果没有触发,往下看调试部分。


调试技巧

Skill 没被加载?

问 Agent:"你现在有哪些 skills?"

如果列表里没有你的 Skill,检查:

  • 路径是否正确:~/.openclaw/workspace/skills/daily-tech-digest/SKILL.md
  • YAML frontmatter 的 --- 分隔符是否完整
  • name 和 description 是否存在

加载了但没触发?

多半是 description 覆盖不够。解决办法:在 description 里加更多触发关键词和场景描述。

YAML 解析出错?

常见坑——description 中包含冒号:

yaml

# ❌ 冒号会导致解析错误

description: 功能:生成日报

# ✅ 用引号包裹

description: "功能:生成日报"

# ✅ 或用多行语法

description: |

功能:生成日报

脚本执行失败?

检查清单:

  • 有没有执行权限(chmod +x)
  • 依赖的命令是否存在(curl)
  • 网络是否通畅

写好 description 的窍门

description 是 Skill 开发中容易被忽视但又极其关键的部分。我的经验是先上线一个"够用"的版本,然后在实际对话中观察 Agent 什么时候该触发但没触发,把那些没覆盖到的说法补回去。

好的 description 写法:

yaml

description: |

每日技术日报生成与推送。自动搜索当天技术热点新闻,

生成中文摘要日报,推送到 Slack 频道。

触发条件:用户要求生成技术日报、每日新闻摘要、技术热点汇总,

或定时任务触发每日日报生成。

关键词:日报、技术新闻、热点、每日摘要、tech digest、

今日资讯、新闻早报、技术周报。

注意最后加了"今日资讯""新闻早报""技术周报"这些变体——用户不会永远用同一种说法来描述同一个需求。


进阶:发布到 ClawHub

写好的 Skill 可以打包发布到 ClawHub——OpenClaw 的技能分享平台。

大致流程:

  1. 确保 frontmatter 完整
  2. 用打包工具生成 .skill 文件
  3. 提交到 ClawHub

这样其他 OpenClaw 用户就能一键安装你的 Skill。如果你对 Skill 的质量有信心,值得试试。


进阶技巧:让 Skill 更好用

在实际使用中,我总结了几个让 Skill 更健壮的小技巧:

善用 references/ 拆分内容

如果你的 Skill 涉及多个领域的热点(AI、云计算、前端等),可以把每个领域的搜索策略拆到 references/ 目录下:

objectivec

daily-tech-digest/

├── SKILL.md

├── scripts/

│ └── generate_digest.sh

└── references/

├── ai-sources.md

├── cloud-sources.md

└── frontend-sources.md

在 SKILL.md 中引用:

markdown

## 数据源配置

- AI 方向:参见 [references/ai-sources.md](references/ai-sources.md)

- 云计算方向:参见 [references/cloud-sources.md](references/cloud-sources.md)

- 前端方向:参见 [references/frontend-sources.md](references/frontend-sources.md)

这样 Agent 会根据用户的具体需求,只加载对应的参考文件,节省上下文。

用 assets/ 存模板

如果你想让日报有固定的排版模板,可以放一个模板文件到 assets/ 目录:

objectivec

daily-tech-digest/

├── SKILL.md

├── scripts/

│ └── generate_digest.sh

└── assets/

└── digest_template.md

Agent 会直接拿模板来填充内容,不需要每次重新生成格式。

定时任务配合 HEARTBEAT

除了 cron,OpenClaw 还有一个 heartbeat 机制——Agent 会定期被唤醒检查是否有待办任务。你可以在 HEARTBEAT.md 里加一行:

markdown

- [ ] 如果是工作日早上 9:00 左右,执行每日技术日报 Skill

这样即使不设 cron,Agent 在心跳检查时也会主动触发日报生成。


小结

写 OpenClaw Skill 的体验可以用一句话概括:像写文档一样写插件

核心要点回顾:

  • SKILL.md 是仅有的必需文件,Markdown 格式
  • description 决定触发时机,写得越覆盖越好
  • 正文写给 Agent 看的操作指令,简洁直接
  • 需要脚本就放 scripts/,需要参考文档就放 references/
  • 放到 ~/.openclaw/workspace/skills/ 下即可生效

我目前在亚马逊云科技的工作中用 OpenClaw 自动化了不少重复流程,Skill 机制是其中很关键的一环。AI Agent 的能力边界不再由框架开发者决定,而是由使用者自己定义。如果你也在做 AI Agent 相关的探索,建议从一个小 Skill 开始尝试,你会惊讶于它的灵活性。


你写了什么有趣的 Skill?评论区晒一下 🎉

原文链接:https://juejin.cn/post/7615972610168176686

http://www.jsqmd.com/news/719870/

相关文章:

  • ESP32-C6开发板在智能家居中的应用与实践
  • 2026年杭州萧山学历提升机构实力排行榜:Top 5深度测评,帮你避开无证办学陷阱 - 浙江教育评测
  • 如何计算AutoCAD的license管理项目的投资回报率(ROI)
  • 不只是locate:在WSL2中高效管理文件索引的完整指南(updatedb.conf详解)
  • Sketchfab Blender插件终极指南:在Blender中无缝连接3D模型平台
  • 手把手教你用Proteus 8.9和Arduino UNO仿真一个远程气压监控系统(附完整代码)
  • Qwen-Image-2512GPU算力优化:CPU卸载策略降低空闲显存98%实测
  • 做一款同城信息类小程序,3种变现模式算清楚再动手 - 维双云小凡
  • 保姆级教程:用Tinc在CentOS 7上搭建跨云服务器的虚拟局域网(含防火墙配置)
  • NCM文件终极解密:3分钟解锁网易云音乐全平台播放权限
  • 2026年板材行业十大排行:实木板十大品牌深度解析 - 十大品牌榜
  • 今天,OpenAI与微软正式「分手」!AGI卖身契作废
  • JAVA 面经汇总2026最新版,1100+ 大厂面试题附答案详解
  • 产品路标规划与版本规划的有效衔接
  • 7 种让 iCloud 备份更快的解决方案
  • 拿CRMEB开源商城系统做电商外包,我究竟看中了什么
  • 2026年自动化抓取方案:柔性气爪主流品牌与厂家推荐 - 品牌2026
  • 终极指南:如何彻底解除Cursor AI的API限制,实现永久免费使用
  • YOLOv5-Face:如何在复杂场景中实现96%精度的人脸检测与关键点定位
  • RTranslator模型下载快速指南:5分钟搞定离线翻译模型部署
  • 保姆级教程:在紫光同创PGL50H开发板上,用Verilog手撸一个HDMI彩条发生器
  • WxMsgDump:开源微信聊天记录导出工具完全指南
  • 集成电路展怎么选?这几场专业展会采购商都在关注 - 品牌2026
  • QtScrcpy终极指南:如何用5分钟实现安卓设备跨平台无缝操控
  • 领嵌iLeadE-588AI边缘计算盒子人脸识别明厨亮灶监控智能安防
  • 7-Zip完全指南:免费开源压缩软件从入门到精通
  • 行业人必看!微电子行业展会推荐,覆盖技术、供应链全场景 - 品牌2026
  • 2026年国内环保板材十大排行:环保板材十大品牌深度盘点,布局山东四川陕西等地区 - 十大品牌榜
  • Svelte中动态更新用户界面
  • DAMO-YOLO-S置信度阈值调优:平衡检出率与误报率的实测参数建议