📦 Surf Forecast Agent — 冲浪预报助手

v1.0.0

使用 Surfline 数据及既定评分标准,按浪高、风向与风速为某地区提供排名前 3 的冲浪点。

0· 0·0 当前·0 累计
0
安全扫描
VirusTotal
无害
查看报告
OpenClaw
可疑
medium confidence
该技能的用途与代码一致(查询 Surfline 并返回冲浪点摘要),但包元数据未说明 agent 必须执行内含的 Go 程序(需要 'go' 二进制文件及网络访问),这是一项重要失配与运行前的操作风险。
评估建议
此技能看似如其所述(获取 Surfline 数据并输出排名前 3),但请注意它包含 Go 源码,且 agent 被指示在本地执行。运行前:1)确认已安装 Go 工具链,并接受 `go run` 将在你的机器上编译并执行附带源码;2)自行(或请可信者)完整审查 Go 源码,确认无隐藏端点或意外行为;3)确保你的环境允许访问 services.surfline.com;4)若不想本地执行代码,请向技能作者索要远程签名二进制/发布版,或仅用 agent HTTP 调用(无需本地编译)的版本,并要求在 manifest 中声明所需二进制。manifest 未声明 `go` 依赖且缺少完整性元数据,是主要一致性隐患。...
详细分析 ▾
用途与能力
技能名称、描述、SKILL.md 和 Go 代码均一致地实现了一个基于 Surfline 的冲浪点评分工具。然而,注册元数据未列出任何必需的二进制文件,而 SKILL.md 却明确要求运行 `go run surfline_region_report.go`——因此清单遗漏了真正的运行时依赖(Go 工具链)。调用 Surfline 端点是实现该功能的必要步骤。
指令范围
SKILL.md 将 agent 限制为:运行 Go collector 脚本、解析其 JSON 输出、本地打分并返回前 3 名。它不要求 agent 读取任意本地文件或无关环境变量,也不向 Surfline 以外的端点发送数据。说明强调 Go 脚本仅用于数据收集,打分必须在 agent 内完成,从而限制了范围。
安装机制
无安装规范(仅指令),通常风险较低——但所含代码必须通过 `go run` 执行。清单未声明 'go' 二进制(或任何安装说明)属于运营缺口。执行附带源码意味着在主机运行任意代码;虽然可见代码仅调用 Surfline 端点,执行未经审核的代码仍有风险,且该包未提供完整性元数据(哈希/签名)。
凭证需求
该技能未声明任何必需的环境变量或凭据,代码仅使用公开的 Surfline 端点,未请求无关的机密或配置路径,与所述目的相称。
持久化与权限
该技能未设置 always:true,使用默认调用配置;在 SKILL.md 或可见代码中未尝试修改其他技能或系统级设置。
安全有层次,运行前请审查代码。

运行时依赖

无特殊依赖

安装命令

点击复制
官方npx clawhub@latest install surf-spot-finder
镜像加速npx clawhub@latest install surf-spot-finder --registry https://cn.longxiaskill.com

技能文档

冲浪区域排名技能 当用户根据浪高、风向、风速询问某区域最佳冲浪点时启用。

目标 对用户指定区域:

  • 运行 Go 采集脚本,收集各点冲浪、风、潮汐数据。
  • 在 agent 内部(非 Go)为区域内所有点评分。
  • 返回总分最高的 3 个点并附解释。

评分项 浪高 /10 风向 /10 风速 /10 总分 /30

架构铁律 Go 脚本仅采集数据,不得评分或排序。 脚本职责:获取并输出点位数据 Agent 职责:评分并选出前 3

脚本命令 预设区域: go run surfline_region_report.go -region -hours -output json 自定义 spot IDs: go run surfline_region_report.go -spots "" -hours -output json 默认 hours=24,用户另指定除外。

预设区域 north-orange-county south-orange-county san-diego santa-cruz 若区域不支持,请用户给出该区域的 Surfline spot IDs。

解析脚本 JSON 读取 spots[],每点含: spotId, avgSurfMinFt, avgSurfMaxFt, avgPrimarySwellFt, avgWindMph, avgWindDirectionDeg, avgTideFt, validHours 以 avgSurfMaxFt 作为主要浪高对比值。

评分规则(agent 端,0-10) 1) 浪高得分(区域内相对) waveMax = avgSurfMaxFt waveScore = 10 × (waveMax - minWaveMax) / (maxWaveMax - minWaveMax) 若全区域 waveMax 相同,则各点 waveScore = 5 钳位至 [0,10] 解释:同区域内可冲大浪得分更高。

2) 风速得分(越低越好) windSpeed = avgWindMph ≤4 mph: 10 >4 且 ≤8: 8 >8 且 ≤12: 6 >12 且 ≤16: 4 >16 且 ≤20: 2 >20: 0

3) 风向得分(默认,除非用户给出本地朝向) 315-360 或 0-45°:离岸/侧离岸 → 9 46-90 或 271-314°:侧岸 → 6 91-270°:向岸/侧向岸 → 2 若用户提供本地方向,以其为准。

总分 totalScore = waveScore + windSpeedScore + windDirectionScore 满分 30,各项与总分均保留 1 位小数。

返回格式 仅列出总分最高的 3 点,按 totalScore 降序:

  • Spot ID(或名称)
  • 浪高得分 /10 与 avgSurfMaxFt
  • 风向得分 /10 与 avgWindDirectionDeg 及标签
  • 风速得分 /10 与 avgWindMph
  • 总分 /30
  • 1-3 句解释其排名原因
末尾一句点名 #1 推荐。

行为规则

  • 必须先评完所有有效点再选前 3。
  • 有效点不足 3 个则全列并说明原因。
  • 若某点获取失败,排除并注明。
  • 不臆造缺失值,仅用脚本返回数据。
数据来源ClawHub ↗ · 中文优化:龙虾技能库