共计 1848 个字符,预计需要花费 5 分钟才能阅读完成。
基础概念扫盲
Claude Code Skill 是部署在 Claude 对话平台上的可复用对话能力单元,相当于给 AI 安装的 ” 技能插件 ”。比如让 AI 具备查询天气、订餐、翻译等专项能力。与 AWS Lex/Dialogflow 相比,Claude 的特色在于:

- 更轻量的开发流程(无需单独配置 NLU 引擎)
- 原生支持多轮对话状态管理
- 与 Claude 知识库无缝集成
新手避坑指南
通过分析上百个新手项目,我们发现这三个问题最高频:
- 意图匹配失效:用户说 ” 明天会下雨吗 ” 但技能未触发
- 根本原因:训练样本不足(至少需要 20 条同义句)
-
解决方案:使用 ” 天气 下雨 降水 暴雨 ” 等近义词扩展
-
对话状态丢失:用户问 ” 上海天气 ” 后又说 ” 那北京呢 ”,但系统要求重新确认城市
-
关键方法:用
sessionStorage保存上下文# 保存用户最后查询的城市 def handle_city(city): sessionStorage["last_city"] = city return get_weather(city) -
异常流程崩溃:用户输入 ” 查下火星天气 ” 导致 API 报错
- 防御式编程示例:
def validate_city(city): if city not in SUPPORTED_CITIES: return {"error": f"暂不支持 {city} 的查询"} return None
天气预报技能实战
1. 技能注册
在 Claude 开发者控制台完成:
- 技能 ID:weather_query
- 触发短语:” 查天气 ”、” 天气预报 ”、” 会下雨吗 ”
- 权限声明:需要位置权限(可选)
2. 意图定义
{
"intents": [
{
"name": "QueryWeather",
"samples": ["{city}天气怎么样",
"明天 {city} 会下雨吗",
"{city}最近三天天气预报"
],
"slots": {"city": {"type": "AMAZON.City"}
}
}
]
}
3. 核心逻辑实现
from claude_sdk import ClaudeClient
import requests
client = ClaudeClient(api_key="your_key")
# 天气 API 封装
def get_weather(city, date="today"):
params = {
"city": city,
"date": date,
"key": "WEATHER_API_KEY"
}
resp = requests.get("https://api.weather.com/v3", params=params)
return {"temp": resp.json()["temp"],
"condition": resp.json()["condition"]
}
# 对话处理器
@client.skill("weather_query")
def handler(event):
intent = event["currentIntent"]
if intent["name"] == "QueryWeather":
city = intent["slots"].get("city")
or event["session"].get("last_city")
if not city:
return {"prompt": "请问要查询哪个城市的天气?"}
weather = get_weather(city)
return {"speak": f"{city}今天天气 {weather['condition']},气温{weather['temp']} 度",
"session": {"last_city": city}
}
4. 测试技巧
- 使用
claude-cli test工具模拟对话 - 覆盖率检查清单:
- 未提供城市时的引导
- 无效城市名的处理
- 连续查询不同城市
- 带日期的查询(如 ” 明天天气 ”)
生产环境要点
- 性能优化
- 对天气 API 响应做缓存(Redis/Memcached)
-
设置 5 秒超时避免阻塞对话
-
错误处理
- 网络重试机制(3 次指数退避)
-
降级响应(” 暂时无法获取天气,请稍后再试 ”)
-
隐私保护
- 城市数据匿名化处理(如 ”A 市 ” 替代真实城市名)
- 遵循 GDPR 删除 30 天前的会话日志
进阶之路
扩展任务:改造现有代码支持以下场景:
1. 用户问 ” 北京和上海哪个更热 ”(多城市比较)
2. 根据用户位置自动查询(需申请位置权限)
3. 添加空气质量指数查询
学习资源:
– Claude 官方文档《Skills Best Practices》
– 开源项目:github.com/claude-ai/skill-samples
– 论坛:community.claude.ai/c/development
正文完
