ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Picoclaw Weather 技能实战:零 API Key 的天气查询与多引擎地理位置匹配方案

Picoclaw Weather 技能实战:零 API Key 的天气查询与多引擎地理位置匹配方案 人工智能AI 应用AI Agent交互助手工具调用MCP ClientsAgent 记忆【免费下载链接】picoclawTiny, Fast, and Deployable anywhere — automate the mundane, unleash your creativity项目地址https://gitcode.com/gh_mirrors/pi/picoclaw点击查看免费下载导读本文基于 Picoclaw 仓库内置的 weather 技能定义系统讲解如何让 Agent 在不申请任何气象 API Key 的前提下通过curl调用 wttr.in 与 Open-Meteo 两个公开数据源完成实时天气查询与结构化预报获取。你将掌握中文城市名如成都、上海的正确查询姿势、wttr.in 与 Open-Meteo 各自的适用场景、地理位置校验规则以及该技能在 Picoclaw 的 Skills 加载机制中如何被安装、注入与调用。技能文件的结构一份给 Agent 的作业指导书在 Picoclaw 中一个技能就是一个目录目录内以SKILL.md为入口文件。weather 技能 的头部 frontmatter 定义了三个关键元数据--- name: weather description: Get current weather and forecasts with verified location matching (no API key required). homepage: https://wttr.in/:help metadata: {nanobot:{emoji:️,requires:{bins:[curl]}}} ---name技能标识用于被skills list/skills show等命令索引description技能用途摘要会被 Picoclaw 注入系统提示帮助 Agent 在合适的时机自动想起调用它metadata.requires.bins声明运行时依赖为curl提示运行环境需要具备该命令。从 pkg/skills/loader.go 的源码可以看到Picoclaw 的SkillsLoader会解析 frontmatter先尝试 JSON再回退到 YAML 解析并提取正文第一个 H1 标题与首段作为name与description。技能名必须通过 validation.go 中的ValidateSkillName校验仅允许字母数字与连字符组合^[a-zA-Z0-9](-[a-zA-Z0-9])*$长度不超过 64且不能是绝对路径——这既保证技能名可作为安全的目录名也防止路径穿越类注入。技能加载遵循workspace global builtin的优先级见 loader.go项目级技能优先于用户全局技能~/.picoclaw/skills再优先于内置技能。也就是说如果你在自己的工作区里放了一份修改后的weather它会覆盖内置版本。准确性规则天气查询的第一原则是定位正确SKILL.md的开篇规则是整个技能的指导思想原文强调先选择最可靠的位置匹配对中文城市名或其他非拉丁字母输入优先用wttr.in传入原始查询因为它能直接解析本地语言名称只有在确认了精确城市之后才用 Open-Meteo 获取结构化实况与预报。最终回答必须复述匹配到的位置无论走哪条路径答案中都要明确给出匹配到的城市、区域/国家以及观测时间让用户能核对 Agent 是否找对了地方。不要盲信地理编码的首个结果必须检查country、admin1一级行政区、admin2二级行政区与population人口字段。例如 Open-Meteo geocoding 可能把Chengdu匹配到同名的乡镇或地区仅凭看起来像就返回会酿成事实错误。中文输入特殊处理不要把汉字直接丢给 Open-Meteo 地理编码除非首个结果明显正确更稳妥的做法是直接查wttr.in的原始中文名或先对英文/拼音城市名做地理编码。多个疑似匹配时主动澄清如果存在多个候选应追加追问或明确声明假设而不是擅自替用户选一个。始终带timezoneauto调用 Open-Meteo 时让返回时间与目标位置时区对齐避免查询成都却显示 UTC 时间的错位。这套规则解决的是天气类 Agent 最常见的失败模式城市重名、中文转码错误、时区错位。它同时是后续两条技术路线的仲裁者——当两条数据源结果冲突时以位置校验结论为准。路线一wttr.in —— 直查城市名的首选wttr.in 的优势在于不需要 API Key、对城市名包括中文原名的解析能力强、一条curl即可返回人类可读结果是快速天气询问的最佳入口。快速实况查询技能定义的核心命令curl -s https://wttr.in/London?format%l:%c%t%h%w其中format参数控制单行输出模板%l为位置名、%c为天气状况含图标、%t为温度、%h为湿度、%w为风速。表示空格分隔:冒号加空格则是自定义分隔符。输出类似London, United Kingdom: ☀️ 16°C 62% 11 km/h中文城市名直查SKILL.md给出的成都与上海示例本质是把汉字的 UTF-8 百分号编码直接放进 URLcurl -s https://wttr.in/%E6%88%90%E9%83%BD?format%l:%c%t%h%w curl -s https://wttr.in/%E4%B8%8A%E6%B5%B7?format%l:%c%t%h%w其中%E6%88%90%E9%83%BD是成都的 UTF-8 编码、%E4%B8%8A%E6%B5%B7是上海的编码。wttr.in 对这类原生名称有直接解析能力这是它相对 Open-Meteo geocoding 的中文优势所在。JSON 结构化输出需要更完整数据逐小时预报、日出日落、气象站信息等时用formatj1取 JSONcurl -s https://wttr.in/Chengdu?formatj1j1返回完整的 JSON 报文适合 Agent 做结构化解析后写入最终答案。URL 编码要点易错点技能文档特别提醒三个细节空格编码New York必须写成NewYork或%20否则 wttr.in 会把空格当成分隔符导致解析错位非 ASCII 文本先编码任何非拉丁字符中文、日文、西里尔字母等都要先做 URL 编码再发送单位切换?m走公制单位摄氏度、km/h?u走美制单位华氏度、mph。注意这两个参数与format是并列的查询参数例如https://wttr.in/Chengdu?mformat...。路线二Open-Meteo —— 结构化预报的数据源当 Agent 需要当前温度湿度风今日最高最低温这种结构化字段而非单行文本时Open-Meteo 是更合适的数据源。它同样免费、无需 Key但要求先做地理编码并校验坐标。第一步地理编码并核验位置元数据curl -s https://geocoding-api.open-meteo.com/v1/search?nameChengducount3languageenformatjson关键参数name待匹配城市名建议用英文/拼音count返回候选数量技能固定取 3便于人工/Agent 比对language返回字段语言formatjson结构化输出。返回结果中每个候选都带country、admin1、admin2、population等字段。校验规则是确认country为 Sichuan, China四川中国、admin1为四川省再比对人口量级是否符合省会城市预期只有全部吻合才能采用其latitude/longitude。第二步以核验过的坐标查询实况与预报curl -s https://api.open-meteo.com/v1/forecast?latitude30.66667longitude104.06667currenttemperature_2m,relative_humidity_2m,weather_code,wind_speed_10mdailyweather_code,temperature_2m_max,temperature_2m_minforecast_days1timezoneauto参数语义latitude/longitude上一步核验通过后的坐标current...请求当前实况字段逗号分隔。temperature_2m为 2 米气温、relative_humidity_2m为相对湿度、weather_code为 WMO 天气代码、wind_speed_10m为 10 米风速daily...请求逐日聚合字段weather_code为当日天气代码、temperature_2m_max/temperature_2m_min为最高/最低温forecast_days1只取今天配合今日预报场景避免多余请求timezoneauto按目标位置自动对齐时区——这是准确性规则中明确要求的参数。weather_code遵循 WMO 标准数字编码0晴朗、1–3依次为少云/多云/阴、45/48雾、51–67毛毛雨到冻雨、71–77降雪、80–82阵雨、95–99雷暴。Agent 在回答时应把数字翻译成人类语言。中文输入的坑同名小城陷阱SKILL.md特别警告对成都这类中文输入直接用name%E6%88%90%E9%83%BD请求 geocoding可能先返回一堆同名小地方如某县的成都镇。正确姿势是用英文/拼音Chengdu查询并在确认它属于四川Sichuan, China后再使用。若地理编码结果可疑果断回退到 wttr.in 用原始城市名查询而不是把大概率错误的结果呈现给用户。双引擎决策何时走哪条路综合技能全文两条路线的分工可以归纳为一张决策表场景推荐路线理由中文城市名直接询问wttr.in 原始名直查原生解析中文无需地理编码环节快速单行天气温/湿/风wttr.informat模板一条 curl、输出即答案结构化预报最高/最低温、逐日Open-Meteodaily字段天然结构化需要核对多候选城市Open-Meteo geocoding 字段校验count3提供对比geocoding 结果可疑回退 wttr.in宁可换数据源不给错误答案在 Picoclaw 中安装与使用该技能内置技能安装Picoclaw 的skills命令族由 cmd/picoclaw/internal/skills/command.go 注册包含list、install、install-builtin、list-builtin、remove、search、show子命令。从 helpers.go 可见weather与news、stock、calculator一同被列为内置技能可用一条命令复制到工作区picoclaw skills install-builtin该命令会把内置技能目录拷贝到工作区的skills/目录之后即可正常加载。若只想从注册表安装# 从 GitHub 注册表安装仓库 install 命令示例 picoclaw skills install sipeed/picoclaw-skills/weather # 从 ClawHub 注册表安装 picoclaw skills install --registry clawhub weather具体参数约束见 cmd/picoclaw/internal/skills/install.go默认注册表为github使用--registry时恰好需要一个slug参数。安装过程会经过恶意代码扫描、有效性校验并在技能目录写入.skill-origin.json记录来源见 pkg/tools/integration/skills_install.go。查看与管理picoclaw skills list # 列出已安装技能含来源 workspace/global/builtin picoclaw skills show weather # 查看 weather 技能全文 picoclaw skills remove weather # 移除该技能skills show weather打印的就是本文分析的那份 SKILL.md 正文Agent 在对话中遇到天气诉求时会按需加载其中的命令模板执行。技能如何进入 Agent 上下文从源码看当某次请求命中了技能名如weatherpkg/agent/context.go 的buildActiveSkillsContext会调用LoadSkillsForContext把技能正文以### Skill: weather的 Markdown 段落注入系统提示并附上指令The following skills are active for this request. Follow them when relevant.因此这份SKILL.md中的所有规则与 curl 命令会原样成为该轮对话中 Agent 的作业指导书。附录技能注册表配置参考如需通过注册表发现/安装更多技能可在 config.example.json 的tools.skills段配置 ClawHub 与 GitHub 注册表base_url、auth_token、proxy、超时与大小上限等完整参数表见 docs/reference/tools_configuration.zh.md。本仓库的 weather 技能不依赖任何注册表即可使用注册表仅用于技能的发现与安装环节。小结weather 技能的价值在于把无 Key 天气查询沉淀为一套可复用的 Agent 行为规范wttr.in 负责快速、原生语言友好的直查Open-Meteo 负责结构化、可校验的精确预报而准确性规则负责在两者之间建立位置校验优先、可疑即回退的兜底逻辑。配合 Picoclaw 的 Skills 加载机制这份 SKILL.md 即装即用是理解 Picoclaw技能即提示词工程理念的最小而完整的范例。赞分享人工智能AI 应用AI Agent交互助手工具调用MCP ClientsAgent 记忆【免费下载链接】picoclawTiny, Fast, and Deployable anywhere — automate the mundane, unleash your creativity项目地址https://gitcode.com/gh_mirrors/pi/picoclaw点击查看免费下载相关推荐OpenViking 天气技能weather Skill实战指南基于 wttr.in 与 Open-Meteo 的无 Key 天气查询方案OpenViking 天气技能weather Skill实战指南基于 wttr.in 与 Open Meteo 的无 Key 天气查询方案 本篇技术指南围人工智能AI AgentAgent 记忆RAG后端数据库nanobot Weather 技能指南基于 wttr.in 与 Open-Meteo 的无 API Key 天气查询方案nanobot Weather 技能指南基于 wttr.in 与 Open Meteo 的无 API Key 天气查询方案 本文围绕 nanobot 内置的人工智能AI AgentAgent 框架多智能体工具调用MCP Clients交互助手后端任务调度OpenWeatherMap API 检索实战database-lookup 技能中的天气、预报、地理编码与空气污染查询指南OpenWeatherMap API 检索实战database lookup 技能中的天气、预报、地理编码与空气污染查询指南 导读 本文基于 scientifAI 技能科研生物信息学数据科学上一篇Nexe构建日志自定义输出格式与级别下一篇AtlasOS深度评估Windows系统优化与隐私保护全面分析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表