最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你掌握openclaw skill開發(fā)的詳細(xì)教程

  發(fā)布時(shí)間:2026-07-15 08:56:20   作者:每日技術(shù)   我要評(píng)論
OpenClaw 的 Skill 本質(zhì)上是給 AI Agent 看的“任務(wù)說明書 + 工具包”,核心是一個(gè)包含 SKILL.md的目錄,下面我們就來看看如何打造一個(gè)能自主查詢天氣、管理任務(wù)的OpenClaw Skill吧

OpenClaw 的 Skill 本質(zhì)上是給 AI Agent 看的“任務(wù)說明書 + 工具包”,核心是一個(gè)包含 SKILL.md的目錄。它不需要復(fù)雜的編譯,主要靠 Markdown 指令引導(dǎo) Agent 調(diào)用系統(tǒng)工具(如 exec、browser、web_fetch)或自定義腳本。

以下是詳細(xì)的開發(fā)教程:

前置準(zhǔn)備

  • 已安裝并運(yùn)行 OpenClaw(Gateway 正常啟動(dòng))。
  • 熟悉基礎(chǔ)命令行與 YAML/Markdown 語法。
  • 知道你的技能目錄位置,通常是 ~/.openclaw/workspace/skills/

Skill 標(biāo)準(zhǔn)結(jié)構(gòu)

一個(gè)典型的 Skill 目錄如下,SKILL.md唯一必需的文件:

my-custom-skill/
├── SKILL.md        # 核心指令(元數(shù)據(jù)+YAML frontmatter+Markdown正文)
├── scripts/        # 可選:Shell/Python/Node.js 執(zhí)行腳本
│   └── run.sh
├── references/     # 可選:API文檔、詳細(xì)參考,按需加載節(jié)省 Token
└── assets/         # 可選:靜態(tài)資源

編寫核心文件 SKILL.md

這是 Skill 的靈魂,分為 **Frontmatter(元數(shù)據(jù))**? 和 **Markdown 正文(指令)**? 兩部分。

YAML Frontmatter(頭部元數(shù)據(jù))

放在文件頂部,用 ---包裹,定義技能的“身份”與“觸發(fā)條件”:

---
name: hello-world          # 技能名,小寫kebab-case,與文件夾名一致
description: 當(dāng)用戶需要打招呼或說hello時(shí)使用的簡(jiǎn)單演示技能
trigger: "打招呼|hello|hi|問好"  # 觸發(fā)詞(關(guān)鍵詞或正則),AI據(jù)此激活技能
tools: [exec, browser]     # 聲明本技能需要用到的系統(tǒng)工具
version: 1.0.0
author: yourname
config:                    # 可選:需要的配置項(xiàng)(如API Key)
  API_KEY:
    type: string
    required: true
---
  • name:必須唯一,僅含小寫字母、數(shù)字、短橫線。
  • trigger:不寫則需用戶顯式指定;寫 "*"表示全局常駐;也可寫正則 /^deploy .+ to (staging|prod)$/i。

Markdown 正文(給 AI 的指令)

Frontmatter 之后寫具體內(nèi)容,像給同事下達(dá)任務(wù)一樣清晰:

# Hello World 技能

## 何時(shí)使用
當(dāng)用戶請(qǐng)求問候、說“你好”、“hello”或需要測(cè)試連接時(shí)使用此技能。

## 執(zhí)行步驟
1. 使用 `echo` 工具(或 exec 運(yùn)行 `echo`)輸出:"Hello from your custom skill! ??"
2. 如果是中文語境,額外輸出當(dāng)前日期。

## 輸入/輸出
- 輸入:無特定參數(shù)
- 輸出:一段友好的問候語字符串

## 注意事項(xiàng)
- 不要執(zhí)行任意用戶輸入的代碼,僅輸出固定問候。
- 保持輸出簡(jiǎn)潔。

(可選)編寫執(zhí)行腳本

如果邏輯復(fù)雜,可在 scripts/下放腳本,在 SKILL.md 里指示 Agent 調(diào)用:

#!/bin/bash
# scripts/fetch_news.sh
CATEGORY=$1
curl -s "https://news.example.com/api/$CATEGORY" | jq '.[].title'

在 SKILL.md 正文中寫明:運(yùn)行 node scripts/fetch_news.js tech 獲取科技新聞。確保腳本有執(zhí)行權(quán)限 (chmod +x)。

加載與測(cè)試

放置目錄:將 my-custom-skill放入 ~/.openclaw/workspace/skills/。

刷新/重啟:讓 Agent 發(fā)現(xiàn)新技能,執(zhí)行 openclaw gateway restart或在聊天中說“刷新技能”。

驗(yàn)證列表:運(yùn)行 openclaw skills list確認(rèn)狀態(tài)為 ready。

測(cè)試觸發(fā)

  • 發(fā)送消息:“跟我打個(gè)招呼”
  • 或用命令行測(cè)試:openclaw agent --message "give me a greeting"。

本地調(diào)試(SDK 模式):若用 TypeScript/JS SDK 開發(fā),可用 clawhub dev模擬調(diào)用。

進(jìn)階與發(fā)布

Workshop 提案:可用 openclaw skills workshop propose-create讓 AI 輔助審查再落地。

發(fā)布到 ClawHub:登錄 clawhub login后執(zhí)行 clawhub publish,需確保 SKILL.md完整且無硬編碼密鑰。

安全建議:使用 exec工具時(shí)嚴(yán)防命令注入;敏感信息(API Key)通過 envopenclaw.json5config注入,勿寫死在文件里。

最佳實(shí)踐總結(jié)

  • 描述精準(zhǔn)descriptiontrigger決定 AI 會(huì)不會(huì)用,關(guān)鍵詞要覆蓋全。
  • 指令明確:寫“做什么、按什么順序、輸出什么格式”,減少歧義。
  • Token 優(yōu)化:重內(nèi)容放 references/SKILL.md只留核心流程。
  • 單一職責(zé):一個(gè) Skill 專注一件事(如“查天氣”而非“查天氣+發(fā)郵件”)。

OpenClaw 查天氣 Skill 完整示例

下面我寫一個(gè)簡(jiǎn)單的例子:

下面給你一個(gè)可直接用的 OpenClaw 查天氣 Skill 完整示例,包含 SKILL.md+ 腳本 + 配置說明,適合新手直接復(fù)制跑通。

Skill 目錄結(jié)構(gòu)

weather/
├── SKILL.md
├── scripts/
│   └── get_weather.sh
└── references/
    └── open-meteo-api.md

只需要 SKILL.md+ scripts/get_weather.sh就能運(yùn)行

references/僅用于給 AI 查閱 API 文檔,節(jié)省 Token

SKILL.md(核心文件)

路徑:~/.openclaw/workspace/skills/weather/SKILL.md

---
name: weather
description: 查詢城市當(dāng)前天氣和未來預(yù)報(bào),支持中文城市名自動(dòng)解析經(jīng)緯度
trigger: "天氣|氣溫|下雨|forecast|weather|查天氣"
tools: [exec]
version: 1.0.0
author: you
config:
  UNITS:
    type: string
    default: "metric"
    description: "metric(攝氏度) 或 imperial(華氏度)"
---
# Weather 天氣查詢技能
## 何時(shí)使用
當(dāng)用戶詢問某個(gè)城市的天氣、氣溫、是否下雨、未來幾天天氣時(shí)使用本技能。
## 執(zhí)行流程
1. **解析城市**
   - 如果用戶給出的是中文城市名(如“北京”),先使用 geocoding API 轉(zhuǎn)換為經(jīng)緯度。
   - 接口示例:
geocoding-api.open-meteo.com/v1/search?n…北京&count=1
2. **調(diào)用天氣 API**
- 使用 Open-Meteo(無需 API Key)
- 基礎(chǔ) URL:
api.open-meteo.com/v1/forecast
- 必須參數(shù):
- latitude
- longitude
- current_weather=true
- hourly=temperature_2m,precipitation_probability
- timezone=auto
3. **運(yùn)行腳本**
- 調(diào)用本地腳本獲取天氣數(shù)據(jù):
bash scripts/get_weather.sh "城市名"
- 示例:
bash scripts/get_weather.sh "Beijing"
bash scripts/get_weather.sh "東京"
4. **輸出規(guī)范**
- 使用自然語言總結(jié),不要直接輸出 JSON
- 至少包含:
- 城市名
- 當(dāng)前氣溫
- 天氣狀況(晴 / 雨 / 陰等)
- 降水概率
- 風(fēng)速
- 示例輸出:
> 北京當(dāng)前氣溫 22°C,晴朗,降水概率 10%,風(fēng)速 12 km/h。
## 錯(cuò)誤處理
- 若城市無法解析:提示用戶檢查城市名稱拼寫
- 若 API 超時(shí):提示“暫時(shí)無法獲取天氣數(shù)據(jù),請(qǐng)稍后重試”
## 參考
- API 詳細(xì)字段說明見 `references/open-meteo-api.md`

scripts/get_weather.sh(執(zhí)行腳本)

路徑:~/.openclaw/workspace/skills/weather/scripts/get_weather.sh

#!/bin/bash

set -euo pipefail

CITY="$1"

# 1. 地理編碼
GEO=$(curl -s "https://geocoding-api.open-meteo.com/v1/search?name=${CITY}&count=1")
LAT=$(echo "$GEO" | jq -r '.results[0].latitude // empty')
LON=$(echo "$GEO" | jq -r '.results[0].longitude // empty')
NAME=$(echo "$GEO" | jq -r '.results[0].name // empty')

if [[ -z "$LAT" || -z "$LON" ]]; then
  echo "? 無法找到城市:$CITY"
  exit 1
fi

# 2. 獲取天氣
WEATHER=$(curl -s "https://api.open-meteo.com/v1/forecast?latitude=$LAT&longitude=$LON&current_weather=true&hourly=temperature_2m,precipitation_probability&timezone=auto")

TEMP=$(echo "$WEATHER" | jq -r '.current_weather.temperature')
WIND=$(echo "$WEATHER" | jq -r '.current_weather.windspeed')
CODE=$(echo "$WEATHER" | jq -r '.current_weather.weathercode')
RAIN=$(echo "$WEATHER" | jq -r '.hourly.precipitation_probability[0]')

# 3. 天氣代碼映射
case $CODE in
  0) COND="晴朗" ;;
  1|2|3) COND="多云" ;;
  45|48) COND="霧" ;;
  51|53|55) COND="小雨" ;;
  61|63|65) COND="雨" ;;
  71|73|75) COND="雪" ;;
  95|96|99) COND="雷暴" ;;
  *) COND="未知" ;;
esac

# 4. 輸出
echo "${NAME} 當(dāng)前氣溫 ${TEMP}°C,${COND},降水概率 ${RAIN}%,風(fēng)速 ${WIND} km/h。"

賦予執(zhí)行權(quán)限:

chmod +x ~/.openclaw/workspace/skills/weather/scripts/get_weather.sh

references/open-meteo-api.md(可選)

# Open-Meteo API 說明

## 地理編碼
GET https://geocoding-api.open-meteo.com/v1/search?name=城市名

返回字段:
- results[0].latitude
- results[0].longitude
- results[0].name

## 天氣預(yù)報(bào)
GET https://api.open-meteo.com/v1/forecast

常用參數(shù):
- latitude
- longitude
- current_weather=true
- hourly=temperature_2m,precipitation_probability
- timezone=auto

天氣代碼(weathercode):
- 0: 晴朗
- 1–3: 多云
- 45,48: 霧
- 51–55: 小雨
- 61–65: 雨
- 71–75: 雪
- 95+: 雷暴

加載 & 測(cè)試

重啟 Gateway

openclaw gateway restart

查看技能狀態(tài)

openclaw skills list

聊天中測(cè)試

查一下上海的天氣

預(yù)期輸出示例:

上海 當(dāng)前氣溫 26°C,多云,降水概率 20%,風(fēng)速 14 km/h。

常見增強(qiáng)方向(進(jìn)階)

你可以繼續(xù)擴(kuò)展這個(gè) Skill:

  • 支持未來 3~7 天預(yù)報(bào)(daily=
  • 自動(dòng)識(shí)別用戶所在城市(IP → 經(jīng)緯度)
  • 多語言輸出(中 / 英)
  • 封裝為 HTTP skill(OpenClaw 的 http工具)
  • 發(fā)布到 ClawHub:clawhub publish

調(diào)試小技巧

手動(dòng)測(cè)試腳本:

./scripts/get_weather.sh "Beijing"

查看 Agent 實(shí)際調(diào)用命令(Gateway 日志)

若 AI 不觸發(fā) Skill,檢查:

  • trigger是否覆蓋用戶說法
  • Skill 是否在 skills list中顯示為 ready

到此這篇關(guān)于一文帶你掌握openclaw skill開發(fā)的詳細(xì)教程的文章就介紹到這了,更多相關(guān)openclaw skill開發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

荆门市| 吴江市| 揭阳市| 苍山县| 三亚市| 凤翔县| 白银市| 屯留县| 浦县| 惠水县| 安泽县| 新安县| 峡江县| 武胜县| 东山县| 湟源县| 博白县| 甘泉县| 胶州市| 松阳县| 达日县| 平乐县| 广平县| 佛冈县| 当涂县| 长春市| 白朗县| 平果县| 禄丰县| 佳木斯市| 龙里县| 顺平县| 三穗县| 栾川县| 靖安县| 井冈山市| 葵青区| 樟树市| 肇源县| 凤台县| 泊头市|