当前位置: 首页 > news >正文

AI Skills技能系统,让 Agent 自动变强

什么是 Skill
Skill(技能)是一种可复用的功能单元,用于扩展 Agent 的任务执行能力。每个 Skill 封装了特定领域的指令、脚本和参考资料,使 Agent 能够胜任各类专业任务。

这种设计的核心思想是模块化。就像给手机安装 App 一样,我们可以为 Agent 动态加载不同的技能,让它具备代码审查、文档生成、数据分析等能力。每个技能都是独立的,可以单独开发、测试和复用。

文件/目录说明

SKILL.md

必需。包含技能指令和元数据(name、description)

scripts/

可选。存放可执行脚本(Python、Shell 等)

references/

可选。存放参考文档、示例数据等辅助资料

SKILL.md 文件结构
每个 Skill 的核心是一个名为 SKILL.md 的文件。这个文件由两部分组成:Frontmatter 元数据和 Markdown 指令。

Frontmatter 元数据位于文件开头,采用 YAML 格式,定义了技能的名称、描述等关键信息。其中,description 字段尤为重要,它直接决定了 Agent 能否在正确的时机找到并使用该技能。一个好的描述应该简洁明确,并包含触发条件,让 Agent 一看就知道"什么场景下该用我"。

Markdown 指令部分则是技能的具体内容,告诉 Agent 拿到这个技能之后该怎么做、按什么步骤执行、有哪些注意事项。这部分内容会被注入到 Agent 的上下文中,指导它完成任务。

--- name: code-review description: 审查代码质量、检查常见问题。当用户要求代码审查时使用。 --- # 代码审查 审查代码文件,检查以下问题: - 语法错误和潜在 Bug - 代码风格和规范 - 性能问题 - 安全漏洞 ## 使用方法 当用户要求审查代码时,执行: ```bash python /skills/code-review/scripts/review.py <file_path> ``` ## 输出格式 按严重程度分类: - 🔴 严重问题(必须修复) - 🟡 警告(建议改进) - 🟢 提示(可选优化)

Skills 的执行流程
理解了文件结构,再来看 Skill 是如何运作的。整个执行流程可以分为三个阶段:扫描匹配、加载注入、执行反馈。

当用户输入一个请求时,Agent 首先扫描 skills 目录下所有 SKILL.md 的前置元数据,提取各技能的名称与描述,生成可用技能清单。然后,Agent 将用户请求与清单中的描述进行语义匹配。一旦找到合适的技能,就调用 load_skill 方法将该技能的完整提示指令加载到对话上下文中。最后,Agent 按照加载的指令执行任务,并将结果返回给用户。

这个过程对用户来说是透明的。用户只需要表达意图,Agent 会自动找到并使用合适的技能完成任务。

实践:集成代码审查 Skill

理论讲完了,接下来通过一个完整的示例来演示如何将 Skill 集成到 Agent 中。我们已经创建好了一个代码审查 Skill,现在要让它工作起来。

首先需要安装 deepagents 开发包。

pip install deepagents

需要注意的是,deepagents 目前不支持通过 init_chat_model 构造的模型 对象,因此需要调整模型的初始化方式。

最关键的是 create_deep_agent 的调用,其中 skills 参数指定了技能目录。

create_deep_agent 默认使用内存后端 StateBackend,无法读取本地文件系统。如果要加载磁盘上的 Skill 文件,必须显式传入 FilesystemBackend。这是一个容易忽略的配置点。

import os from dotenv import load_dotenv from deepagents import create_deep_agent from langchain.chat_models import init_chat_model from langchain_core.tools import BaseTool from langchain_community.tools import WriteFileTool, ReadFileTool, ListDirectoryTool from deepagents.backends import FilesystemBackend load_dotenv() # 使用 configurable_fields 创建可配置模型 # model = init_chat_model( # model_provider="openai", # configurable_fields=["model", "api_key", "base_url"], # config_prefix="QWEN" # ).with_config({ # "configurable": { # "QWEN_model": os.getenv("QWEN_MODEL"), # "QWEN_api_key": os.getenv("QWEN_API_KEY"), # "QWEN_base_url": os.getenv("QWEN_BASE_URL") # } # }) os.environ["OPENAI_API_KEY"] = os.getenv("QWEN_API_KEY") os.environ["OPENAI_BASE_URL"] = os.getenv("QWEN_BASE_URL") model = f"openai:{os.getenv('QWEN_MODEL')}" class CalculateTool(BaseTool): name: str = "calculate" description: str = "计算数学表达式的值" def _run(self, expression: str) -> str: try: return f"计算结果: {eval(expression)}" except Exception as e: return f"计算错误: {str(e)}" async def _arun(self, expression: str) -> str: return self._run(expression) # ========== 初始化工具 ========== calculate = CalculateTool() write_file = WriteFileTool() read_file = ReadFileTool() list_dir = ListDirectoryTool() # ========== 创建 Deep Agent ========== agent = create_deep_agent( model=model, tools=[calculate, write_file, read_file, list_dir], system_prompt="你是一个助手,会用工具计算、读写文件、列出目录。", skills=["skills"], backend=FilesystemBackend(root_dir=os.getcwd()), debug=True ) queries = [ "审查 mcp_weather.py 代码", "计算 2024*12+500,然后把结果保存到 result.txt", "读取 result.txt 的内容", "列出当前目录文件" ] for q in queries: print(f"\n问:{q}") result = agent.invoke({"messages": [{"role": "user", "content": q}]}) print(f"答:{result['messages'][-1].content}")

Skill 系统让 Agent 的能力扩展变得模块化和可插拔。通过编写清晰的 SKILL.md 文件,定义准确的描述和完整的执行指令,Agent 就能在合适的时机自动找到并使用相应的技能。

http://www.cnnetsun.cn/news/3057291.html

相关文章:

  • 如何选择一家值得信赖的流水线贴标机供应商?
  • Android 模拟器开启关闭网络
  • SpaceX造富神话点燃资本热情,卫星通信产业在MWC26上海展现新图景
  • Wand-Enhancer:免费解锁游戏修改器完整功能的终极指南
  • 计算机毕业设计之基于深度学习的复杂场景下船舶目标检测
  • AutoCAD2027免费版下载安装教程(附安装包)AutoCAD 2027 保姆级安装教程
  • 豆包专业版实测:从对话AI到桌面Agent的能力升级
  • 【新版本首发】Claude Code v2.1.195 发布:无空格语言(中/日/泰)语音免敲击直出、一键锁定鼠标流、大修权限逃逸漏洞!
  • SERL:让真机强化学习从“难用”走向“可复现”的强化学习框架 ----(3)算法篇(RLPD)
  • 电容降额实战指南:从规范到选型
  • py每日spdier案例之某website文字转音频接口加密参数解密(难度一般)
  • 大模型招聘疯了吧?128万年薪背后,到底谁在抢人
  • 认知循环架构与六种算法的关系
  • 计算机Java毕设实战-基于 SpringBoot 的教职工上下班考勤统计系统设计 校园教职工考勤信息化管理平台设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Java毕设选题推荐:基于 SpringBoot 的教职工请假考勤一体化管理系统 智能化校园教师考勤登记管理系统设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Java毕设项目:基于 SpringBoot 的教师月度考勤汇总管理系统设计 (源码+文档,讲解、调试运行,定制等)
  • STM32 FIR滤波器实战避坑指南:从MATLAB到CMSIS-DSP的高效实现
  • 主流MES系统哪个好:「可自主生长」的MES生产管理系统是趋势
  • Linux 彻底且安全地删除文件
  • Edera革新Xen虚拟化:揭秘NUMA原理与解决方案,提升性能稳定性
  • 用Node.js的child_process模块执行系统命令
  • DLSS Swapper终极指南:免费游戏性能优化工具完整解决方案
  • 世界人工智能大会推出首份刊物《WAIC UP!》,邀全球先锋探究AI时代无限可能
  • 评估板安全使用与工程实践指南:从硬件验证到产品设计
  • SubtitleEdit语音转文字实战指南:3步解决字幕制作效率瓶颈
  • 短剧AI配音实战指南:从选音色到批量出片
  • 多智能体系统实战:从AI Agent原理到投资分析自动化
  • 前端SM2国密算法实战:从sm-crypto封装到前后端联调指南
  • PS-b-PDMS聚苯乙烯-嵌段-聚二甲基硅氧烷二嵌段共聚物
  • MSC许可管理系统的选择与使用:优化软件资源管理新途径