“东京现在天气怎么样?”完整参考实现:
weather-tool source
查看完整代码:lib.rs、Cargo.toml 与 capabilities.json。
前置准备
安装 Rust 并添加 WASM 目标:1. 创建项目
Cargo.toml 替换为:
Cargo.toml
cdylib 是构建 WASM 组件所需产物类型;[workspace] 可避免被父工作区自动并入。2. 接入 WIT 接口
IronClaw 工具是实现了 WIT 接口的 WASM 组件。宿主提供 HTTP、日志与工作区能力;你的工具需导出execute、schema、description。
src/lib.rs 骨架:
src/lib.rs
3. 解析参数并分发动作
src/lib.rs
Rust 侧参数结构必须与 JSON Schema 保持一致,否则模型会构造错误参数。
4. 实现业务动作
实现get_current、get_forecast、get_air_quality,并调用 Open-Meteo API。
建议拆分两个辅助函数:
geocode(city, country_code):城市名转经纬度api_get(url):统一 HTTP 请求与错误处理
5. 定义 JSON Schema
schema() 返回模型可读的参数模式,必须覆盖:
- action 枚举
- 每个 action 的参数字段与类型
- 必填字段
- 可选字段约束
6. 添加 capabilities.json
最小示例:credentials 中声明注入规则。
7. 构建为 WASM
target/wasm32-wasip2/release/weather_tool.wasm
8. 安装并测试
- “帮我查东京当前天气”
- “给我看上海未来 5 天预报”
- “查询北京空气质量”
9. 调试建议
- 先用固定参数本地验证 JSON 解析
- 记录关键日志(城市名、坐标、HTTP 状态)
- 对第三方 API 响应做健壮兜底(字段缺失、空数组、429)
- 输出错误信息时给出可操作建议
10. 进一步扩展
- 支持多语言输出与单位自动转换
- 增加重试与退避策略
- 引入缓存(按城市与时间窗口)
- 增加天气告警和极端天气提示
本页为中文精简版流程,覆盖从 0 到可运行工具的关键步骤。需要逐行完整实现可参考英文原始教程与仓库示例代码。