在 Module 1 你学会了构建和部署第一个 Skill。现在要实现真正的转变:
从单次使用的 Skills → 可扩展的智能自动化系统
技能多了之后,新问题会出现:Skill 之间冲突、任务需要计算而非指令、大量引用难以管理。
指令 vs 脚本:各司其职
目前你构建的一切都依赖纯文本指令。这适用于写作、格式化、分类、决策——但有些任务超出了语言范畴,需要计算、文件操作、数据处理、外部集成。这就是脚本的用武之地。
把 Skill 看作两个组件:
- 指令(Instructions) → 处理推理和决策
- 脚本(Scripts) → 处理执行和计算
用指令的场景: 任务涉及判断、输出依赖解释、语言质量重要(如"用专业语气重写"、"总结会议记录"、"分类反馈")。
用脚本的场景: 需要精度、必须计算、需处理文件(如解析 CSV/XML、执行计算、调整图片大小、提取结构化数据)。
两者结合: 工作流同时需要逻辑和执行时——如"处理数据集(脚本)→ 生成人类可读摘要(指令)"。
Skill 结构演进
your-skill/
├── SKILL.md
├── scripts/
│ └── ...
└── references/
关键原则:
- 一个脚本 = 一个职责:避免把多个任务合并到一个脚本
- 用参数而非硬编码:脚本应动态接受输入(输入文件路径、输出文件路径),保持 Skill 灵活性
- 加错误处理:脚本应清晰传达失败情况(文件缺失、格式错误、数据无效),Claude 能读取并智能响应
- 文档化脚本:每个脚本顶部注明功能、输入要求、预期输出、可能错误
多 Skill 冲突:当两个 Skill 同时响应
创建多个 Skills 后,新问题浮现:
哪个 Skill 应该运行?
例:你说"起草邮件",但"内容再利用"Skill 激活了。
机制:Claude 读取所有 Skill 描述 → 与请求对比 → 打相关性分数 → 最高分的 Skill 激活。没有达到阈值的 → 不运行。
冲突根源:
- 触发短语重叠
- 描述模糊
- 边界缺失
解法:每个 Skill 有特定领域,无重叠;明确定义排除项(如"Do NOT use for email drafting");每个 Skill 有唯一激活短语。
如果错误 Skill 激活:检查 YAML 描述 → 识别重叠短语 → 收紧范围和排除项。大多数情况下问题不在逻辑,而在描述。
引用管理:选择性加载
Module 1 讲的是基本引用处理,但现实更复杂。
如果 Skill 需要:50 页品牌指南、30 页风格手册、多个模板,一次性加载所有内容会浪费上下文、降低性能。
正确做法:
- 结构化引用逻辑
- 只访问所需内容
- 保持文件简洁专注
引用越有选择性,Skill 表现越好。
Skills 系统的本质是分工——指令做判断,脚本做执行。多 Skill 协作的核心不是逻辑,是描述的精确性。描述写不清楚,Claude 永远会选错。架构清晰比功能堆砌重要得多。