Skills 与知识系统:让 AI 具备领域专业能力

Skills 与知识系统:让 AI 具备领域专业能力

AI 核心技能系列 · 第 10 篇


导语

通用大模型什么都会一点,但什么都不精。你让 GPT 写一份金融合规报告,它写得"像那么回事"但经不起专业审查;你让它做医疗辅助诊断,它能说出一堆教科书知识但不了解临床实践。

企业需要的不是"什么都会的通才",而是"懂我这个行业的专家"。怎么让 Agent 从通用走向专业?

答案是 Skills 系统 + 知识库。Skills 定义"怎么做",知识库提供"知道什么",再加上 MCP 连接"能做什么"——三者协同,让 Agent 具备真正的领域专业能力。


一、从通用到专业:Agent 能力进化路径

Level 0: 裸模型
  ↓  加 System Prompt
Level 1: Prompt 定制(角色设定、规则约束)
  ↓  加 RAG
Level 2: RAG 增强(接入领域知识库)
  ↓  加 Skills
Level 3: Skills 加载(领域工作流 + 最佳实践)
  ↓  加 MCP 工具
Level 4: 全能专家(知识 + 流程 + 工具三位一体)

每一层解决不同的问题

层级 解决什么 局限
Prompt "用什么角色、什么风格" 信息量有限,无法传递大量知识
RAG "需要知道什么" 只提供参考信息,不指导工作流程
Skills "按什么流程做" 封装领域最佳实践和操作规范
MCP "能执行什么操作" 连接真实世界的工具和数据

二、Skills 系统设计理念

2.1 什么是 Skill

Skill 是一个结构化的知识包,以 Anthropic 标准格式定义。一个 SKILL.md 文件包含:

  • YAML 前置元数据name(技能标识符,小写连字符)和 description(功能描述及使用时机)
  • Markdown 正文:具体的工作流程(Workflow)、指南(Guidelines)、示例(Examples)等指令内容
  • 可选依赖dependencies 字段声明运行所需的软件包

2.2 渐进式披露(Progressive Disclosure)

Skill 的信息架构采用三层结构,按需加载,避免一次性塞入过多信息:

┌─────────────────────────────────────┐
│  Layer 1: 元数据层(Frontmatter)     │
│  name + description                  │
│  → 用于 Skill 发现和选择              │
│  大小:name ≤64字符, desc ≤200字符    │
├─────────────────────────────────────┤
│  Layer 2: 指令层(Instructions)      │
│  工作流程、Guidelines、Examples       │
│  → 加载 Skill 时自动注入              │
│  大小:几百字到几千字                  │
├─────────────────────────────────────┤
│  Layer 3: 参考层(Reference)         │
│  完整的 API 文档、示例、边界情况        │
│  → 通过 REFERENCE.md 等文件按需查阅   │
│  大小:任意                            │
└─────────────────────────────────────┘

2.3 Skill 的生命周期

发现 → 加载 → 使用 → 卸载

1. 发现:Agent 根据用户需求,从 Skill 列表中找到匹配的 Skill
2. 加载:将 Skill 的指南层注入到 Agent 的上下文中
3. 使用:Agent 按 Skill 定义的流程完成任务
4. 卸载:任务完成后释放上下文空间

三、实战:创建你的第一个 Skill

3.1 Skill 文件结构

skills/
├── code-reviewer/
│   ├── SKILL.md           # Skill 定义文件
│   ├── templates/         # 模板文件
│   │   └── review-report.md
│   └── examples/          # 示例
│       └── sample-review.md
├── sql-optimizer/
│   ├── SKILL.md
│   └── ...
└── README.md              # Skill 目录索引

3.2 SKILL.md 编写示例

Anthropic 定义的 Skill 标准格式要求 SKILL.md 以 YAML 前置元数据(frontmatter)开头,包含 namedescription 两个必填字段,然后是 Markdown 正文指令:

---
name: code-reviewer
description: 专业的代码审查助手,对 Python/JavaScript/Go 代码进行安全性、性能、可维护性审查,输出结构化报告。当用户要求代码审查、Code Review 或安全审计时使用。
---

# Code Reviewer - 代码审查专家

## 工作流程

### Step 1: 理解上下文
- 确认编程语言和框架
- 了解代码的业务场景
- 询问审查重点(安全/性能/规范/全面)

### Step 2: 逐层审查
按以下优先级逐层审查:

1. **安全性**(P0)
   - SQL 注入、XSS、CSRF
   - 敏感数据暴露
   - 认证/授权缺陷
   - 输入验证缺失

2. **正确性**(P1)
   - 逻辑错误
   - 边界条件处理
   - 错误处理缺失
   - 并发安全问题

3. **性能**(P2)
   - N+1 查询
   - 内存泄露风险
   - 不必要的计算
   - 缓存机会

4. **可维护性**(P3)
   - 代码重复
   - 命名规范
   - 注释和文档
   - 测试覆盖

### Step 3: 输出报告
使用以下格式输出审查报告:

| 优先级 | 文件:行号 | 类型 | 问题描述 | 修复建议 |
|--------|----------|------|----------|----------|
| P0 | app.py:42 | 安全 | SQL注入风险 | 使用参数化查询 |

### 审查统计
- P0 (阻塞): X 个
- P1 (重要): X 个
- P2 (建议): X 个
- P3 (可选): X 个

## Guidelines
- 对 P0 问题必须提供修复代码
- 每个问题都要说清楚"为什么这是问题"
- 好的代码也要给予肯定
- 审查意见要具体,不要笼统的"代码需要优化"

## Examples
- 用户说"帮我 review 这段代码"→ 激活本 Skill,按四层优先级审查
- 用户说"检查一下安全漏洞"→ 激活本 Skill,聚焦 P0 安全性审查

3.3 在 Agent 中使用 Skill

class SkillManager:
    """Skills 管理器"""
    
    def __init__(self, skills_dir: str):
        self.skills = {}
        self.load_skills(skills_dir)
    
    def load_skills(self, directory: str):
        """加载所有 Skill 的描述层"""
        for skill_dir in os.listdir(directory):
            skill_path = os.path.join(directory, skill_dir, "SKILL.md")
            if os.path.exists(skill_path):
                content = open(skill_path).read()
                # 提取描述(第一段)
                desc = self._extract_description(content)
                self.skills[skill_dir] = {
                    "description": desc,
                    "full_content": content,
                    "loaded": False
                }
    
    def find_skill(self, user_request: str) -> str:
        """根据用户需求匹配 Skill"""
        skill_list = "\n".join(
            f"- {name}: {info['description']}"
            for name, info in self.skills.items()
        )
        # 用 LLM 判断哪个 Skill 最匹配
        response = llm.chat(f"用户需求: {user_request}\n\n可用Skills:\n{skill_list}\n\n最匹配的Skill是:")
        return response  # 返回 skill 名称
    
    def activate_skill(self, skill_name: str) -> str:
        """激活 Skill,返回完整指南注入到 Agent 上下文"""
        skill = self.skills.get(skill_name)
        if skill:
            skill["loaded"] = True
            return skill["full_content"]
        return ""

四、知识库构建方法论

4.1 知识库的类型

类型 内容 用途 示例
文档库 产品文档、技术手册 RAG 检索 公司产品手册
FAQ 库 常见问题和标准答案 快速匹配 客服知识库
案例库 历史案例和解决方案 参考学习 运维故障案例
规则库 业务规则和约束条件 决策依据 合规审查规则

4.2 知识结构化流程

原始数据              结构化处理             知识库
┌──────────┐    ┌──────────────┐    ┌──────────────┐
│ PDF 文档  │    │ 提取+清洗     │    │ 向量化存储    │
│ Word 文档 │ →  │ 分类+标签     │ →  │ 元数据索引    │
│ 网页内容  │    │ 关联+去重     │    │ 版本管理      │
│ 数据库   │    │ 质量审核      │    │ 权限控制      │
└──────────┘    └──────────────┘    └──────────────┘

4.3 知识更新策略

策略 频率 做法
自动同步 实时/每日 监控数据源变化,自动更新向量库
定期重建 每周/每月 全量重新处理,保证一致性
人工审核 按需 关键知识变更需要人工确认

五、Skills + MCP + RAG 协同

三者各有分工,组合起来才是完整的企业级 AI 能力:

┌─────────────────────────────────────────────┐
│                用户请求                       │
│  "帮我审查这份合同是否符合最新的合规要求"       │
└──────────────────┬──────────────────────────┘
                   │
                   ▼
┌─────────────────────────────────────────────┐
│  Skills: "合规审查" Skill 被激活               │
│  定义了审查流程:                              │
│  1. 提取合同关键条款                           │
│  2. 对照合规规则逐条检查                       │
│  3. 标记风险点并给出建议                       │
│  4. 生成审查报告                              │
└──────────────────┬──────────────────────────┘
                   │
          ┌────────┼────────┐
          │        │        │
          ▼        ▼        ▼
┌────────────┐ ┌────────┐ ┌──────────┐
│ RAG:       │ │ RAG:   │ │ MCP:     │
│ 检索最新的  │ │ 检索   │ │ 读取合同  │
│ 合规法规   │ │ 历史案例│ │ 文件内容  │
└────────────┘ └────────┘ └──────────┘
          │        │        │
          └────────┼────────┘
                   │
                   ▼
┌─────────────────────────────────────────────┐
│  Agent 按 Skill 流程整合所有信息               │
│  输出结构化的合规审查报告                      │
└─────────────────────────────────────────────┘

三者的关系总结

  • Skills 定义 "怎么做"(流程和规则)
  • RAG 提供 "知道什么"(领域知识)
  • MCP 连接 "能做什么"(工具和数据)

六、企业级案例

案例一:金融合规审查 Agent

Skills: 合规审查流程(反洗钱规则、KYC 流程、风险评级标准)
RAG:    最新法规库 + 历史违规案例库
MCP:    交易数据库连接 + 客户信息查询 + 报告生成工具
效果:   审查时间从 2 天缩短到 2 小时,漏检率降低 40%

案例二:技术客服 Agent

Skills: 故障排查流程(分层诊断、升级标准、话术规范)
RAG:    产品文档库 + FAQ 库 + 历史工单库
MCP:    工单系统 + 监控系统 + 知识库管理
效果:   一次解决率从 45% 提升到 78%

案例三:代码审查 Agent

Skills: 代码审查规范(安全→正确性→性能→可维护性四层审查)
RAG:    编码规范文档 + 安全漏洞库
MCP:    Git 仓库访问 + CI/CD 触发 + 代码分析工具
效果:   审查覆盖率 100%,P0 漏洞检出率提升 60%

七、职业视角

能设计 Skills 系统 = 能做 AI 产品化。这是从"能用 AI"到"能让 AI 产出业务价值"的关键跃升。

问题 核心答案要点
怎么让 Agent 具备领域能力? Skills(流程)+ RAG(知识)+ MCP(工具)三层协同
Skill 和 System Prompt 的区别? Skill 更结构化、可复用、按需加载;System Prompt 一次性全量注入
知识库怎么保持更新? 自动同步 + 定期重建 + 人工审核三策略结合

总结

  1. 能力进化路径:Prompt → RAG → Skills → MCP,四层递进
  2. Skills 三层架构:元数据层(发现)→ 指令层(使用)→ 参考层(深入)
  3. 知识库四种类型:文档库、FAQ 库、案例库、规则库
  4. 三者协同:Skills 定义流程,RAG 提供知识,MCP 连接工具
  5. 企业落地:金融、客服、代码审查等场景已有成熟实践

本文是 AI 核心技能系列 第 10 篇,共 12 篇。上一篇:MCP 深入理解 | 下一篇:多模态与模型评测

关注公众号「coft」,获取完整系列更新、配套代码和学习路线图。一起交流 AI 转行经验,助力职业跃升,迈向高薪岗位。

posted @ 2026-02-27 18:21  warm3snow  阅读(3)  评论(0)    收藏  举报