本文目录6 个章节
Skill 解决“怎样做”,Tool 解决“执行什么”
技术简报 Agent 已经有搜索和读取工具,也有 RAG 资料。新需求出现时,系统还需要稳定方法:怎样核对版本、怎样筛选官方来源、怎样检查英文翻译是否漏段。
Task ──▶ Skill:步骤、判断规则、所需资源
│
├──▶ Tool:执行搜索、读取、写入
├──▶ RAG:取回任务相关证据
└──▶ Script:运行确定性校验Skill 是可复用的程序性知识包。它可以引用工具和资料,但不取代工具权限,也不自动变成长期记忆。
一个 Skill 目录包含什么
skills/research-brief/
├── SKILL.md
├── references/
│ ├── source-policy.md
│ └── citation-rules.md
├── scripts/
│ └── validate_claims.py
└── assets/
└── brief-template.mdSKILL.md 写明触发场景、工作步骤、输入输出、允许工具、必须读取的参考文件和验收方法。references 放较长规则,scripts 承担确定性动作,assets 保存可复用模板。
SKILL.md 使用渐进加载
启动时只加载名称、描述和位置。任务命中后读取完整 SKILL.md;只有文件被明确引用时,再加载对应 reference 或 script 说明。
---
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
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 数量增加后,可以让模型从描述列表中选择,但应用仍要检查允许集合。
任务分类 ─▶ 选择 skill 名称 ─▶ 白名单校验 ─▶ 加载 SKILL.md
│
▼
执行步骤与工具
│
▼
运行验收脚本Trace 记录 Skill 名称、版本、实际读取的 references 和执行脚本。这样一次结果可以追溯到当时使用的方法,而不只追溯模型版本。
Skill 的测试边界
- 触发条件覆盖正例和反例,避免所有任务都加载同一 Skill。
- SKILL.md 引用的文件全部存在,禁止越出 Skill 根目录。
- 所需工具必须出现在当前任务白名单。
- 脚本在无模型环境可独立运行。
- Skill 升级后重跑原任务集,确认步骤变化没有降低结果质量。
第 9 篇把运行状态、审批与安全合成一条完整边界。Skill 可以告诉 Agent 何时请求保存,Runtime 与工具层负责强制暂停、授权和目录限制。
REFERENCES
参考链接
所属系列
AI AGENT 入门教程