1. 从剥龙虾到开发AI技能:一次跨界实践的全记录
那天我正坐在餐桌前剥着龙虾,突然想到一个问题:为什么不能把开发AI技能这件事变得像剥龙虾一样有条理?于是就有了这个"套娃式"的项目实践——开发一个能自动生成AI技能的技能。这个被命名为skill-creator的项目,本质上是一个元技能(meta-skill),它不仅能帮助用户快速创建新技能,更能让我们深入理解技能设计的核心理念。
在AI应用开发领域,技能(Skill)是指那些模块化、自包含的功能包,它们通过提供专业知识、工作流程和工具集成来扩展AI助手的能力。就像剥龙虾需要特定的工具和步骤一样,每个技能都封装了完成特定任务所需的"程序性知识"。skill-creator的独特之处在于,它把这个创建过程本身也变成了一个可重复使用的技能。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技能设计的核心哲学
2.1 简洁至上的设计理念
在设计skill-creator时,我始终坚持一个原则:上下文窗口是宝贵资源。就像剥龙虾时我们不会同时使用所有工具一样,技能设计也应该只包含最必要的内容。每次添加信息前,我都会问自己两个问题:
- Claude真的需要这个说明吗?
- 这段内容的token成本值得吗?
这种"极简主义"体现在几个方面:
- 优先使用简洁的示例而非冗长的解释
- 避免重复信息(同样的内容不应同时出现在SKILL.md和参考文件中)
- 删除所有非核心的文档(如README、安装指南等)
2.2 自由度的精准把控
就像剥龙虾时不同步骤需要不同的操作精度一样,技能设计也需要根据任务特性匹配适当的自由度:
高自由度(文本指令):适用于存在多种有效方法的情况。例如,当技能需要处理开放式创意任务时,我会提供启发式指导而非具体步骤。
中等自由度(带参数的伪代码):当任务有推荐模式但仍需灵活调整时使用。比如数据处理技能中,我会给出典型处理流程但允许参数调整。
低自由度(特定脚本):对于容易出错的关键操作,我会提供精确的脚本。就像剥龙虾时处理虾线这个精细步骤,必须严格按照特定方法操作。
3. 技能的结构解剖
3.1 核心文件:SKILL.md
每个技能都像一个精心准备的龙虾套餐,SKILL.md就是它的主菜。这个必需文件包含两部分:
YAML前言元数据(相当于菜单上的菜品介绍):
yaml复制name: skill-creator
description: 生成有效技能的指南。当用户想要创建新技能(或更新现有技能)时应该使用此技能。
Markdown正文(相当于具体的烹饪步骤):
- 使用祈使句/不定式形式编写
- 只包含关键操作说明
- 详细示例和参考资料通过链接引入
3.2 可选资源包(配菜)
就像吃龙虾需要搭配适当的工具和蘸料一样,技能也可以包含三类资源:
scripts/(专用工具):
- 存放Python/Bash等可执行脚本
- 适用于需要可靠重复执行的任务
- 例如:
scripts/rotate_pdf.py
references/(参考手册):
- 存放需要时才加载的文档
- 包括API规范、数据库模式等
- 例如:
references/finance.md
assets/(原材料):
- 存放输出用的模板文件
- 包括PPT模板、图片素材等
- 例如:
assets/slides.pptx
4. 渐进式加载系统
4.1 三级加载机制
就像剥龙虾时分步使用不同工具一样,skill-creator采用三级加载系统来优化上下文使用:
- 元数据(100字左右):始终加载,用于技能匹配
- SKILL.md正文(<5000字):技能触发后加载
- 捆绑资源:按需加载,不占用初始上下文
4.2 内容拆分策略
当SKILL.md接近500行时,就应该像分解龙虾一样拆分内容:
- 保持SKILL.md只包含核心工作流
- 将变体、详细示例移到独立文件
- 在SKILL.md中明确说明何时查阅这些文件
5. 技能创建全流程
5.1 从具体示例开始理解
就像学习剥龙虾要先观察示范一样,创建技能也需要从具体案例入手。我会通过提问来明确技能的使用场景:
- "这个技能应该支持哪些功能?"
- "能举例说明如何使用吗?"
- "用户会用什么指令触发这个技能?"
例如,在开发"中医诊断"技能时,我会先收集典型查询:
- "根据这些症状判断可能是什么证型"
- "推荐适合阴虚体质的食疗方案"
5.2 规划可重用内容
分析每个用例,识别可复用的部分:
- 脚本:需要反复编写的代码(如中药配伍计算)
- 参考资料:需要查阅的知识(如经络穴位图)
- 资源文件:输出用的模板(如诊断报告格式)
以中医技能为例:
scripts/herb_compatibility.py(药材配伍计算)references/meridians.md(经络穴位详解)assets/diagnosis_template.docx(诊断报告模板)
5.3 初始化技能目录
使用init_skill.py脚本创建基础结构:
bash复制python scripts/init_skill.py tcm-skills --path ./skills
这会生成:
code复制tcm-skills/
├── SKILL.md
├── scripts/
├── references/
└── assets/
5.4 编写技能内容
YAML前言示例:
yaml复制name: tcm-diagnosis
description: 提供中医诊断支持和治疗方案建议。当用户描述症状寻求中医分析,或询问特定体质调理方法时使用。
正文编写技巧:
- 使用"先...然后..."的流程式描述
- 关键步骤用加粗强调
- 复杂概念附简单示例
例如:
code复制**辨证流程**:
1. 先收集四诊信息(望闻问切)
2. 然后分析八纲辨证(表里寒热虚实阴阳)
3. 最后确定脏腑经络定位
示例:
用户:最近头晕耳鸣,腰膝酸软,五心烦热
Claude:这些症状提示**肾阴虚证**,建议...
5.5 测试与迭代
就像调整龙虾烹饪配方一样,技能需要反复测试:
- 运行所有脚本验证功能
- 模拟典型用户查询测试响应
- 根据实际使用反馈优化描述
6. 中医技能开发实战
6.1 典型技能结构
一个完整的中医技能可能包含:
code复制tcm-skills/
├── SKILL.md
├── scripts/
│ ├── diagnose.py
│ └── prescription.py
├── references/
│ ├── herbs.md
│ ├── syndromes.md
│ └── acupuncture.md
└── assets/
├── diagnosis_template.docx
└── body_map.png
6.2 注意事项
- 术语一致性:确保所有文件使用统一的中医术语
- 文化适配:考虑不同地区对同一症状的不同表述
- 安全边界:明确说明技能不能替代专业医疗诊断
6.3 常见问题解决
问题1:用户症状描述不完整
解决方案:在SKILL.md中添加问诊引导模板
问题2:中药剂量安全问题
解决方案:在scripts/prescription.py中加入剂量校验逻辑
问题3:专业术语理解差异
解决方案:在references/terms.md中添加同义词对照表
7. 技能优化进阶技巧
7.1 上下文优化
像精心准备龙虾宴一样规划上下文使用:
- 将大型参考文件拆分为按症状/证型组织的多个小文件
- 为每个文件添加grep搜索关键词,方便精准加载
- 使用Markdown锚点实现文件内快速定位
7.2 多技能协作
当开发相关技能组时(如中医诊断+中药+针灸):
- 在描述中明确技能边界
- 建立交叉引用机制
- 共享基础参考资料
7.3 版本管理
虽然技能不应包含CHANGELOG,但建议:
- 使用git管理技能版本
- 在团队内部分享更新说明
- 重大变更时考虑创建新技能而非修改原有技能
8. 从理论到实践
完成skill-creator的开发后,我用它创建了三个实际技能:
- 中医诊断助手(如前所述)
- 龙虾烹饪指导(意外地回到了项目灵感来源)
- Markdown格式化工具
这个过程验证了skill-creator的实用性,也揭示了几个改进点:
- 需要增加更多模板示例
- 可以添加技能质量检查脚本
- 应该支持技能依赖关系声明
开发这类元技能最深的体会是:好的工具应该像龙虾钳一样——专为特定任务设计,让复杂操作变得简单顺手。skill-creator的价值不仅在于它能生成技能,更在于通过创建它,我们被迫深入思考什么才是真正有效的技能设计。
