微信扫码
添加专属顾问
我要投稿
Claude Skills的开源实现来了!Minion框架完美复刻动态加载能力,让AI Agent按需调用专业工具。 核心内容: 1. Skills系统如何解决AI Agent上下文窗口有限与能力需求无限的矛盾 2. Minion框架中Skill的简洁定义与智能发现机制 3. 开源实现细节与Claude Code的兼容性设计
Claude最近推出了一个令人兴奋的特性——Skills系统。它让AI Agent能够动态加载专业能力,按需”学习”处理PDF、Excel、PPT等专业文档的技能。
作为一个开源爱好者,我立刻意识到这个设计的价值,并在Minion框架中实现了完整的开源版本。本文将介绍Skills的设计理念,以及我的开源实现细节。
在开发AI Agent的过程中,有一个核心矛盾:
Context Window的有限性vs能力需求的无限性
传统做法是把所有工具、所有指令都塞进system prompt:
System Prompt = 基础指令 + 所有工具描述 + 所有专业知识 = 50K+ tokens = 高延迟 + 高成本 + 低效率
更糟的是,大多数时候用户只需要其中一小部分能力。当用户问”帮我处理这个PDF”时,系统却加载了处理Excel、数据库、代码等所有能力的上下文。
Claude Code的Skills设计灵感来自一个简单的类比:
人类专家不是把所有知识都装在脑子里,而是在需要时查阅手册、调用专业知识。
Skills系统让AI Agent也具备这种能力:
用户请求 → Agent识别需要PDF技能 → 动态加载PDF处理指令 → 执行专业任务 → 返回结果
看到Claude Code的Skills设计后,我决定在Minion框架中实现一个完全兼容的开源版本,让更多开发者能够使用这一特性。
每个Skill就是一个包含SKILL.md文件的目录:
.minion/skills/├── pdf/│ ├── SKILL.md # 技能定义和指令│ ├── references/ # 参考资料│ ├── scripts/ # 辅助脚本│ └── assets/ # 资源文件├── xlsx/│ └── SKILL.md└── docx/ └── SKILL.md
SKILL.md采用YAML frontmatter + Markdown body的格式:
---name: pdfdescription: PDF文档处理技能,支持文本提取、表格解析、表单填写等license: MIT---## 当使用此技能时你现在具备了专业的PDF处理能力...### 文本提取使用pypdf2库进行文本提取:...### 表格识别使用tabula-py进行表格提取:...
Skill Loader会在多个位置搜索可用技能:
class SkillLoader: SKILL_DIRS = [ ".claude/skills", # 兼容Claude Code ".minion/skills", # Minion原生 ] def get_search_paths(self): paths = [] # 项目级优先 for skill_dir in self.SKILL_DIRS: paths.append((self.project_root / skill_dir, "project")) # 用户级次之 for skill_dir in self.SKILL_DIRS: paths.append((self.home_dir / skill_dir, "user")) return paths
这种分层设计带来了灵活性:
项目级Skills:针对特定项目的专业能力
用户级Skills:跨项目的通用能力
优先级机制:项目级覆盖用户级,允许定制化
兼容性:同时支持.claude/skills和.minion/skills路径
class SkillRegistry: def register(self, skill: Skill) -> bool: """注册技能,高优先级覆盖低优先级""" existing = self._skills.get(skill.name) if existing: priority = {"project": 0, "user": 1, "managed": 2} if priority[skill.location] >= priority[existing.location]: return False # 已有更高优先级的同名技能 self._skills[skill.name] = skill return True def generate_skills_prompt(self, char_budget=10000): """生成可用技能列表,控制context消耗""" # 智能截断,确保不超预算 ...class SkillTool(BaseTool): name = "Skill" description = "动态加载并执行专业技能" def execute_skill(self, skill: str) -> Dict[str, Any]: skill_obj = self.registry.get(skill) if skill_obj is None: return { "success": False, "error": f"Unknown skill: {skill}", "available_skills": self.registry.list_all()[:10] } # 获取技能的完整指令 prompt = skill_obj.get_prompt() return { "success": True, "skill_name": skill_obj.name, "prompt": prompt, # 注入到对话上下文 }用户:帮我分析这份财务报告 report.pdf,提取所有表格数据Agent:1. 识别需要PDF处理能力2. 调用 Skill("pdf") 加载PDF技能3. 获得专业的PDF处理指令4. 使用pypdf2提取文本5. 使用tabula-py提取表格6. 返回结构化数据
用户:把这10个Excel文件合并,并生成汇总统计Agent:1. 调用 Skill("xlsx") 加载Excel技能2. 获得pandas、openpyxl等库的专业用法3. 批量读取文件4. 合并数据、计算统计5. 生成新的Excel报告
指标 | 传统方式 | Skills方式 |
基础Context | 50K tokens | 10K tokens |
PDF任务Context | 50K tokens | 10K + 3K tokens |
首次响应延迟 | ||
专业任务质量 |
设计亮点
技能通过Markdown定义,非技术人员也能创建和维护:
---name: data-analysisdescription: 数据分析技能---## 数据清洗步骤1. 检查缺失值2. 处理异常值...
技能可以带有参考资料、脚本等资源:
skill_obj.get_prompt()# 返回:# Loading: pdf# Base directory: /Users/xxx/.minion/skills/pdf## [技能内容,可以引用 references/api_doc.md 等]
@dataclassclass Skill: name: str description: str content: str path: Path location: str # project, user, managed license: Optional[str] metadata: Dict[str, Any]
Claude Code的Skills是一个出色的设计,但它是闭源的、与Claude生态绑定的。我实现开源版本的原因:
1. LLM无关性:Minion支持多种LLM后端(Claude、GPT-4、开源模型),Skills能力不应被锁定在单一供应商
2. 可定制性:开源实现允许深度定制,满足特殊需求
3. 社区贡献:开源让更多人能够贡献Skills,形成技能生态
4. 学习价值:通过实现,深入理解这一架构的设计精髓
想象一个Skills Marketplace,开发者可以发布、分享专业技能:
minion skill install data-science-toolkitminion skill install legal-document-analysis
根据用户历史和当前任务,自动推荐相关技能:
def recommend_skills(user_request, history): # 分析请求内容 # 匹配最相关的技能 # 预加载可能需要的技能 ...
多个技能协同工作:
# 分析PDF中的数据,生成Excel报告skills_used = ["pdf", "xlsx", "data-visualization"]
Agent在完成复杂任务后,自动生成新技能供未来使用:
async def learn_skill_from_session(session_log): # 分析成功的任务执行过程 # 提取可复用的模式和指令 # 生成新的SKILL.md ...
PDF摘要提取:https://youtu.be/r1nngYLI-pw
长PDF翻译(穷人版Paper PDF Reader):https://youtu.be/C7p8yffBZ-Q
DOCX文档处理:https://youtu.be/PByDtqY_17Y
PPTX演示文稿处理(穷人版pptx 生成):https://youtu.be/ek00e5m4yXI
Claude Code的Skills系统体现了一个核心设计哲学:
不要试图让AI什么都懂,而是让它知道在需要时去哪里找到答案。
这种”专家系统”思维,让AI Agent从”通才”进化为”能快速变身专家的通才”。
通过Minion的开源实现,这一能力现在可以被更广泛的开发者使用,不受限于特定的LLM供应商或闭源生态。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-12-27
MiniMax M2.1 正式开源并全面上线 AtomGit
2025-12-27
用完刚开源的MiniMax,我们决定给它发个工牌
2025-12-27
比MinIO快2.3倍!这个用Rust打造的对象存储,重新定义“高性能”
2025-12-27
硅基流动上线高速版 GLM-4.7
2025-12-26
NotebookLM 的最强开源替代品来了!不仅免费、能离线运行,还能接入 GPT-4 和 Claude!
2025-12-25
Claude技能天花板来了!Anthropic 官方开源 16 个生产级技能库
2025-12-24
被 Gemini 官方推荐为下一代Agent!Eigent 如何实现企业级浏览器自动化?
2025-12-24
教你从零“手搓”一个大模型,别再只会调用API了
2025-11-19
2025-10-20
2025-10-27
2025-10-27
2025-10-03
2025-09-29
2025-11-17
2025-10-29
2025-12-10
2025-11-07
2025-12-24
2025-12-22
2025-11-12
2025-11-10
2025-11-03
2025-10-29
2025-10-28
2025-10-13