deepagent学习笔记-SKILL
为什么要有SKILL主要是需要区分skill和tool这两个在初学者看来比较容易混淆。tool 一般执行原子任务比如对文件的增删改查网页搜索计算器等单一的功能skill 更像一套方法论它指导agent如何完成某项复杂的任务通常在skill中可能会出现调用tool的情况但很少在tool中看见调用skill的情况形象地说tool像是兵器而skill更像是武功秘籍。SKILL基本概念skill的构成根据行内规定一个完整skill通常是一个文件夹文件夹名是skill的名字比如“葵花宝典”而这个文件夹下可以由以下几部分构成SKILL.md // 其中包含frontmatter 和 指令正文必须有script // 文件夹不是必须有存放可执行脚本的目录references // 文件夹不是必须有存放参考文件的目录assets // 文件夹不是必须有存放模板或数据文件等静态资源非必须的三个目录中的文件都需要在SKILL.md中引用说明功能和何时调用其中SKILL.md中的frontmatter的name和description是必填字段它们在 skill 渐进式加载时作为简略说明被加载进上下文。name 代表技能的名称必须和存放技能的文件夹同名description 描述技能的作用agent通过这个字段识别并选择需要的技能包。skill 的渐进式加载skill 有个核心要点就是它的渐进式加载在如今非常讲究上下文治理的环境下技能包通篇加载是非常耗费上下文窗口的而且也不是所有的技能包在处理当前任务时都会被用到。于是最好的办法就是按需加载技能包。与 tool 类似最初的上下文中只包含每个skill 的 frontmatter 而不是全文当任务执行过程中命中某个技能包后再将其SKILL.md加载到上下文即可然后再根据任务进度加载技能包中其他资源。这样大大节省了执行过程中的上下文消耗被称作渐进式加载。SKILL的三种存储后端skill有三种后端存储形式FilesystemBackend直接存储在本地磁盘如果不设定目录权限任意用户或agent都可以读取使用StateBackend无本地磁盘环境或需要加载远程skill时可以使用这个形式需要用create_file_data将技能文档加载成state中兼容的格式。skill的注入在invoke()中通过files字段指定。fromurllib.requestimporturlopenfromdeepagentsimportcreate_deep_agentfromdeepagents.backendsimportStateBackendfromdeepagents.backends.utilsimportcreate_file_datafromlanggraph.checkpoint.memoryimportMemorySaver checkpointerMemorySaver()backendStateBackend()# 从远程加载 Skill也可以本地读取skill_urlhttps://raw.githubusercontent.com/langchain-ai/deepagents/refs/heads/main/libs/code/examples/skills/langgraph-docs/SKILL.mdwithurlopen(skill_url)asresponse:skill_contentresponse.read().decode(utf-8)skills_files{/skills/langgraph-docs/SKILL.md:create_file_data(skill_content),}agentcreate_deep_agent(modelanthropic:claude-sonnet-4-6,backendbackend,skills[/skills/],checkpointercheckpointer,)resultagent.invoke({messages:[{role:user,content:What is langgraph?}],files:skills_files,# 通过 files 参数注入},config{configurable:{thread_id:12345}},)StoreBackend StoreBackend 使用 LangGraph Store 进行持久化存储。而且也必须用create_file_data()格式化。适合生产环境中多用户、多线程共享 Skills 的场景所以在指定SKILL时需要同样指定命名空间namespace。在创建agent时传入多个技能包的存放目录其调用效果时后者覆盖前者的顺序。agentcreate_deep_agent(modelanthropic:claude-sonnet-4-6,skills[/skills/shared/,# 团队共享 Skills/skills/project/,# 项目专属 Skills优先级更高],)参考资料deepagent实战笔记