AI Agent 入门教程:08-Skill 的设计与加载

区分 Skill、Tool、RAG 与 Prompt 的职责,用 SKILL.md、引用资料和脚本封装“如何完成任务”的方法。文章实现 Skill Catalog、按需加载、版本记录和最小上下文注入。

本文目录6 个章节

Skill 解决“怎样做”,Tool 解决“执行什么”

技术简报 Agent 已经有搜索和读取工具,也有 RAG 资料。新需求出现时,系统还需要稳定方法:怎样核对版本、怎样筛选官方来源、怎样检查英文翻译是否漏段。

TEXT
Task ──▶ Skill:步骤、判断规则、所需资源
             │
             ├──▶ Tool:执行搜索、读取、写入
             ├──▶ RAG:取回任务相关证据
             └──▶ Script:运行确定性校验

Skill 是可复用的程序性知识包。它可以引用工具和资料,但不取代工具权限,也不自动变成长期记忆。

一个 Skill 目录包含什么

TEXT
skills/research-brief/
├── SKILL.md
├── references/
│   ├── source-policy.md
│   └── citation-rules.md
├── scripts/
│   └── validate_claims.py
└── assets/
    └── brief-template.md

SKILL.md 写明触发场景、工作步骤、输入输出、允许工具、必须读取的参考文件和验收方法。references 放较长规则,scripts 承担确定性动作,assets 保存可复用模板。

SKILL.md 使用渐进加载

启动时只加载名称、描述和位置。任务命中后读取完整 SKILL.md;只有文件被明确引用时,再加载对应 reference 或 script 说明。

MARKDOWN
---
name: research-brief
description: Create a cited technical brief from approved sources.
---

1. Validate the topic and audience.
2. Search approved sources before drafting.
3. Preserve source IDs for every claim.
4. Run `scripts/validate_claims.py` before requesting save approval.

这种方式避免把所有 Skill 全文塞进系统 Prompt。Agent 只得到当前任务需要的流程和资源。

建立 Skill Catalog

PYTHON
from dataclasses import dataclass
from pathlib import Path

@dataclass(frozen=True)
class SkillMeta:
    name: str
    description: str
    path: Path
    version: str

class SkillCatalog:
    def __init__(self, skills: list[SkillMeta]) -> None:
        self._skills = {skill.name: skill for skill in skills}

    def list_descriptions(self) -> list[dict]:
        return [
            {"name": skill.name, "description": skill.description}
            for skill in self._skills.values()
        ]

    def load(self, name: str) -> str:
        skill = self._skills.get(name)
        if skill is None:
            raise KeyError("skill_not_found")
        return (skill.path / "SKILL.md").read_text(encoding="utf-8")

Catalog 只读取允许根目录中的 Skill,路径由部署配置提供,模型不能指定任意文件夹。

Agent 如何选择和执行 Skill

简单实现先用代码路由:任务类型为 research_brief 就加载对应 Skill。Skill 数量增加后,可以让模型从描述列表中选择,但应用仍要检查允许集合。

TEXT
任务分类 ─▶ 选择 skill 名称 ─▶ 白名单校验 ─▶ 加载 SKILL.md
                                            │
                                            ▼
                                     执行步骤与工具
                                            │
                                            ▼
                                      运行验收脚本

Trace 记录 Skill 名称、版本、实际读取的 references 和执行脚本。这样一次结果可以追溯到当时使用的方法,而不只追溯模型版本。

Skill 的测试边界

  • 触发条件覆盖正例和反例,避免所有任务都加载同一 Skill。
  • SKILL.md 引用的文件全部存在,禁止越出 Skill 根目录。
  • 所需工具必须出现在当前任务白名单。
  • 脚本在无模型环境可独立运行。
  • Skill 升级后重跑原任务集,确认步骤变化没有降低结果质量。

第 9 篇把运行状态、审批与安全合成一条完整边界。Skill 可以告诉 Agent 何时请求保存,Runtime 与工具层负责强制暂停、授权和目录限制。

REFERENCES

参考链接

  1. 01A Practical Guide to Building Agents | OpenAI
  2. 02Function Calling | OpenAI API

所属系列

AI AGENT 入门教程

下一步

继续浏览相关主题

沿着同一主题继续阅读。

查看最新资讯