AI Skill构建的十个层次——从零开始手把手教你搭建技能体系

很多同学问:AI Skill到底怎么构建?写个提示词就算Skill了吗?多个Agent怎么编排?安全怎么管控?今天这篇文章把Skill构建拆成10个层次,从最简单的Markdown文件到8+Skill协同的业务闭环系统,每层给出结构和代码示例,照着做就能上手。


步骤1:纯提示词Skill——零代码起步

做什么:用一个Markdown文件定义AI的行为规则,让它在特定场景下产出更规范的输出。

结构:单个 SKILL.md 文件

代码示例

# 会议纪要整理Skill

## 角色
你是一个专业的会议纪要整理助手。

## 提取规则
从会议内容中提取以下5类字段:
- 会议时间:格式YYYY-MM-DD HH:mm
- 会议地点:线上/线下+具体位置
- 参会人员:列出所有参会者姓名和职务
- 决议事项:逐条列出,每条包含决议内容、负责人、截止日期
- 待办任务:格式为"任务描述 | 负责人 | 截止日期 | 优先级(高/中/低)"

## 输出格式
使用Markdown表格呈现决议事项和待办任务,其他字段用列表呈现。

## 注意
- 如果原文缺少某类字段,标注"未提及",不要自行补充
- 决议事项必须是明确的行动约定,排除讨论性发言

关键技巧

  • 规则要具体,不要写"整理得好看一点"
  • 边界要清晰,明确告诉AI什么不该做
  • 示例要典型,覆盖常见和边界情况

注意:纯提示词Skill的效果常被低估。一个精心设计的提示词Skill,可能比一个写得差的代码Skill效果更好。


步骤2:组件Skill——给AI配装备

做什么:在SKILL.md基础上加入参考资料、执行脚本和模板资源,让AI有据可查、有工具可用。

结构

Info-Extractor/
├── SKILL.md              # 提取规则定义
├── references/
│   └── field_mapping.md  # 字段映射表
├── scripts/
│   └── format_output.py  # 格式化脚本
└── assets/
    └── template.xlsx     # 输出模板

代码示例——字段映射表 references/field_mapping.md

# 工单字段映射表

| 原始字段名 | 标准字段名 | 数据类型 | 是否必填 |
|------------|-----------|---------|---------|
| 投诉内容   | complaint_desc | text   | 是      |
| 客户手机   | customer_phone | string | 是      |
| 故障地址   | fault_address  | string | 否      |
| 处理时限   | sla_deadline   | datetime| 是     |

代码示例——格式化脚本 scripts/format_output.py

# 格式化提取结果为标准JSON
import json
from datetime import datetime

def format_extracted_data(raw_data: dict) -> dict:
    """将原始提取数据格式化为标准输出"""
    result = {
        "complaint_desc": raw_data.get("投诉内容", "").strip(),
        "customer_phone": _normalize_phone(raw_data.get("客户手机", "")),
        "fault_address": raw_data.get("故障地址", "未提供"),
        "sla_deadline": _parse_datetime(raw_data.get("处理时限")),
        "extract_time": datetime.now().isoformat()
    }
    return result

def _normalize_phone(phone: str) -> str:
    """手机号脱敏:13812345678 -> 138****5678"""
    if len(phone) == 11:
        return phone[:3] + "****" + phone[7:]
    return phone

def _parse_datetime(dt_str: str) -> str:
    """统一时间格式为ISO 8601"""
    # 支持多种输入格式的解析逻辑
    for fmt in ["%Y-%m-%d %H:%M", "%Y/%m/%d %H:%M", "%Y年%m月%d日"]:
        try:
            return datetime.strptime(dt_str, fmt).isoformat()
        except ValueError:
            continue
    return dt_str

判断方法:你的Skill有2个以上文件,AI执行时需要读取references或调用scripts。

重要:这一层的核心突破是"AI自己想"变成"AI有据可查"。参考资料给判断以依据,脚本给动作以保障。


步骤3:工作流Skill——多步骤决策树

做什么:把复杂任务拆成有序步骤,每步有输入、处理逻辑和输出,步骤之间有数据传递。

结构:SKILL.md中包含Workflow,Step 1 → Step 2 → Step 3,每步有前置条件和输出物。

代码示例——数据分析工作流:

## Workflow

### Step 1: 数据校验
- 输入:原始数据集
- 处理:检查字段完整性、数据类型一致性、空值比例
- 输出:校验报告(通过/警告/失败 + 问题列表)
- 前置条件:无

### Step 2: 统计计算
- 输入:Step 1校验通过的数据
- 处理:计算均值/中位数/标准差/同比环比
- 输出:统计摘要表
- 前置条件:Step 1状态为"通过"或"警告"

### Step 3: 异常检测
- 输入:Step 2的统计结果
- 处理:基于3σ原则和业务阈值检测异常值
- 输出:异常点列表(含异常类型、偏离程度、可能原因)
- 前置条件:Step 2完成

### Step 4: 洞察生成
- 输入:Step 2统计结果 + Step 3异常列表
- 处理:综合分析,生成业务洞察和建议
- 输出:结构化分析报告
- 前置条件:Step 3完成

条件分支示例

### Step 2的条件分支
- IF Step 1状态 = "失败":
  - 不执行统计计算
  - 直接输出"数据质量不达标,建议修复后重新提交"
- ELIF Step 1状态 = "警告":
  - 执行统计计算,但标注"数据存在轻微质量问题"
  - 在最终报告中增加数据质量说明章节
- ELSE:
  - 正常执行统计计算

判断方法:你的Skill有3个以上步骤,步骤间有数据传递,且有if-else条件分支。


步骤4:编排Skill——多Agent协同

做什么:让多个AI Agent各负责一个步骤,通过结构化JSON传递数据,用Phase-Orchestrator统一调度。

结构:每个Phase由独立sub-Agent执行,Phase间JSON传递数据。

代码示例——4-Phase编排协议(写在SKILL.md中):

## 编排协议

本Skill使用Phase-Orchestrator强制编排,4个Phase由独立sub-Agent执行:

### Phase 1: Info-Extractor(信息提取)
- 执行者:独立sub-Agent-A
- 输入:用户原始请求
- 输出JSON:
```json
{
  "phase": "info-extraction",
  "extracted_fields": {
    "customer_id": "C12345",
    "query_type": "complaint_analysis",
    "time_range": "2026-06-01~2026-06-28"
  },
  "confidence": 0.92
}

Phase 2: Knowledge-RAG(知识检索)

  • 执行者:独立sub-Agent-B
  • 输入:Phase 1的输出JSON
  • 输出JSON:
{
  "phase": "knowledge-retrieval",
  "matched_rules": ["规则A", "规则C"],
  "relevant_docs": ["处理规范v3.2"],
  "rule_confidence": 0.88
}

Phase 3: Data-Analyst(数据分析)

  • 执行者:独立sub-Agent-C
  • 输入:Phase 1 + Phase 2的输出JSON
  • 输出JSON:
{
  "phase": "data-analysis",
  "analysis_result": {
    "trend": "上升",
    "anomaly_count": 3,
    "root_cause_candidates": ["原因1", "原因2"]
  }
}

Phase 4: Report-Generator(报告生成)

  • 执行者:独立sub-Agent-D
  • 输入:Phase 1 + Phase 2 + Phase 3的输出JSON
  • 输出:最终结构化报告(DOCX/Markdown)

**判断方法**:你用了Phase-Orchestrator调度,每个Phase是独立sub-Agent,Phase间有JSON数据传递。

> **注意**:这是Skill构建的分水岭!前三层是"一个Agent干所有事",从第四层开始变成"多个Agent协作"。好处是每个Agent上下文更干净,坏处是编排复杂度显著上升。

---

## 步骤5:安全Skill——权限管控与防护

**做什么**:给Skill体系加上安全审查组件,遵循最小权限原则,默认不给权限,一切显式声明。

**结构**:Security-Guard组件,在Skill执行前进行安全审查。

**代码示例**——安全审查检查清单(写在Security-Guard的SKILL.md中):

```markdown
## 安全审查检查项

### 1. 权限配置检查
- [ ] 是否遵循最小权限原则?
- [ ] 是否存在不必要的全局权限(如 *.* 读取)?
- [ ] 文件操作权限是否限定在必要目录?

### 2. 数据范围检查
- [ ] 数据访问范围是否与业务需求匹配?
- [ ] 是否存在全表扫描操作?
- [ ] 查询是否包含合理的LIMIT限制?

### 3. 敏感字段检查
- [ ] 手机号、身份证等是否脱敏输出?
- [ ] 密码、密钥是否在日志中暴露?
- [ ] 敏感字段是否有访问控制?

### 4. 高危操作检查
- [ ] 是否包含DELETE操作?如果有,是否有二次确认?
- [ ] 是否包含批量写入操作?是否有数量限制?
- [ ] 是否有外发操作(HTTP请求/邮件发送)?目标白名单?

### 5. 审计日志
- [ ] 关键操作是否记录操作人和操作时间?
- [ ] 日志是否包含操作前后的数据快照?

风险分级输出示例

{
  "skill_name": "customer_query_skill",
  "risk_level": "F",
  "risk_label": "禁止上线",
  "issues": [
    {
      "category": "高危操作",
      "detail": "存在delete_file权限且无二次确认",
      "severity": "CRITICAL"
    },
    {
      "category": "数据范围",
      "detail": "export_all允许导出全部客户数据",
      "severity": "HIGH"
    },
    {
      "category": "防御规则",
      "detail": "缺少defense_rules,无法抵御Prompt注入",
      "severity": "HIGH"
    }
  ],
  "remediation": [
    "移除delete_file权限或增加二次确认机制",
    "将export_all收敛为export_filtered+数量限制",
    "添加defense_rules防护Prompt注入"
  ]
}

判断方法:你的Skill体系有专门的安全检查组件,涉及数据访问/外部通信/文件操作的Skill必须先过安全审查。

重要:没有安全管控的Skill就像没有刹车的汽车——速度越快,风险越大。到这一层才能说你的AI系统有了"安全底线"。


步骤6:评分Skill——规则引擎参数化

做什么:把业务评分规则从Skill中剥离出来放到YAML配置里,业务规则变了改配置不改Skill。

结构:Scoring-Engine,规则存YAML,Skill动态读取执行。

代码示例——评分规则配置 scoring_rules.yaml

# 政企客户商机评分规则
scoring_config:
  name: "政企客户商机评分"
  version: "2.1"
  total_weight: 100

dimensions:
  - name: "行业潜力"
    weight: 25
    rules:
      - condition: "行业类别 == '金融'"
        score: 25
      - condition: "行业类别 == '制造'"
        score: 18
      - condition: "行业类别 == '零售'"
        score: 12
      - condition: "default"
        score: 8

  - name: "信息化成熟度"
    weight: 30
    rules:
      - condition: "已有5G专网 == true"
        score: 30
      - condition: "上云比例 >= 0.6"
        score: 22
      - condition: "有数字化转型规划 == true"
        score: 15
      - condition: "default"
        score: 5

  - name: "关系紧密度"
    weight: 25
    rules:
      - condition: "合作年限 >= 3"
        score: 25
      - condition: "合作年限 >= 1"
        score: 15
      - condition: "default"
        score: 5

  - name: "决策人触达"
    weight: 20
    rules:
      - condition: "有CTO/CIO联系方式 == true"
        score: 20
      - condition: "有IT部门负责人联系方式 == true"
        score: 12
      - condition: "default"
        score: 3

# 评级阈值
rating_thresholds:
  high_opportunity: 80
  medium_opportunity: 55
  low_opportunity: 0

4-Phase编排

Phase 1: Info-Extractor → 提取客户信息字段
Phase 2: Knowledge-RAG → 加载scoring_rules.yaml匹配规则
Phase 3: Data-Analyst → 按维度计分+加权汇总
Phase 4: Report-Generator → 输出评分报告+建议

判断方法:你的Skill用外部YAML/JSON配置驱动业务规则,而不是硬编码在提示词里。

注意:Skill的"代码"就是提示词,改起来更容易出问题,所以更需要把易变的部分外置到配置文件。


步骤7:验证Skill——多源证据交叉验证

做什么:从多个独立数据源提取证据,互相验证,检测矛盾,给出带置信度的判断。

结构:Evidence-Chain组件,接收多源数据执行交叉验证。

代码示例——交叉验证逻辑:

# 多源证据交叉验证核心逻辑
from dataclasses import dataclass
from typing import List

@dataclass
class Evidence:
    source: str       # 数据来源
    claim: str        # 主张内容
    confidence: float # 单源置信度 0-1

@dataclass
class ConflictResult:
    claim: str
    sources_for: List[str]    # 支持该主张的数据源
    sources_against: List[str] # 反对该主张的数据源
    resolution: str            # 矛盾原因分析
    final_confidence: float    # 最终置信度

def cross_validate(evidences: List[Evidence]) -> ConflictResult:
    """对同一主张的多源证据进行交叉验证"""
    sources_for = [e.source for e in evidences if e.confidence >= 0.7]
    sources_against = [e.source for e in evidences if e.confidence < 0.3]

    if not sources_against:
        # 无矛盾:取加权平均置信度
        final_conf = sum(e.confidence for e in evidences) / len(evidences)
        return ConflictResult(
            claim=evidences[0].claim,
            sources_for=sources_for,
            sources_against=[],
            resolution="多源一致,无矛盾",
            final_confidence=round(final_conf, 2)
        )
    else:
        # 存在矛盾:分析原因
        resolution = analyze_conflict(sources_for, sources_against, evidences)
        # 矛盾情况下降低最终置信度
        conflict_ratio = len(sources_against) / len(evidences)
        final_conf = (1 - conflict_ratio) * 0.6
        return ConflictResult(
            claim=evidences[0].claim,
            sources_for=sources_for,
            sources_against=sources_against,
            resolution=resolution,
            final_confidence=round(final_conf, 2)
        )

def analyze_conflict(for_sources, against_sources, evidences):
    """分析矛盾原因"""
    reasons = []
    # 检查是否为数据延迟
    if "实时监控" in for_sources and "日报系统" in against_sources:
        reasons.append("可能为数据延迟:实时系统与日报系统存在时间差")
    # 检查是否为口径不一致
    if any(e.confidence > 0.5 and e.confidence < 0.7 for e in evidences):
        reasons.append("可能为统计口径不一致")
    # 检查是否确实异常
    if len(against_sources) >= 2:
        reasons.append("多个独立数据源报告异常,需重点关注")
    return ";".join(reasons) if reasons else "原因待查"

判断方法:你的Skill从至少2个数据源获取信息,有显式交叉验证逻辑,输出包含置信度。

重要:单一信息源导致的误判代价极高!多源交叉验证是企业级AI应用降低风险的关键。


步骤8:审批Skill——人在回路风险控制

做什么:高风险操作执行前自动评估风险等级,中高风险必须人工确认后才执行。

结构:Human-In-Loop组件,L1-L5风险分级 + 审批流。

代码示例——风险分级定义:

## 操作风险分级标准

| 等级 | 风险描述 | 操作示例 | 处理方式 |
|------|---------|---------|---------|
| L1 极低 | 无副作用,可逆 | 查询统计数据 | AI自动执行 |
| L2 低 | 轻微影响,可回滚 | 更新客户标签 | AI自动执行,记录日志 |
| L3 中 | 有一定影响 | 发送内部通知 | AI提示用户注意,用户可确认/取消 |
| L4 高 | 影响较大,难回滚 | 修改客户核心数据、导出客户列表 | 必须人工确认后执行 |
| L5 极高 | 不可逆或涉及外部 | 删除工单、发送外部邮件、执行系统命令 | 必须人工确认+二次确认 |

审批单JSON格式

{
  "approval_id": "APR-20260628-001",
  "risk_level": "L4",
  "operation": "export_customer_list",
  "operation_desc": "导出江西分公司的全部政企客户信息",
  "risk_alert": "将导出327条客户记录,包含联系方式和合同金额",
  "data_preview": {
    "record_count": 327,
    "fields_included": ["客户名称", "联系方式", "合同金额", "到期日期"],
    "sensitive_fields": ["联系方式", "合同金额"]
  },
  "options": ["确认执行", "取消", "修改范围后重新提交"],
  "require_double_confirm": false,
  "created_at": "2026-06-28T14:30:00Z"
}

执行闭环

AI判断操作风险等级 → 生成审批单(含风险提示+内容预览)
    ↓
L1-L2:自动执行,记录审计日志
L3:提示用户,用户选择确认或取消
L4-L5:必须人工确认,可选二次确认
    ↓
执行结果归档(含操作人、时间、操作内容、审批记录)

判断方法:你的Skill体系有风险分级和人工审批机制,存在"AI请求→人工确认→执行"三步闭环。

注意:人在回路不是对AI的不信任,而是对业务安全的必要保护。AI再强也有不该独自做决定的场景。


步骤9:组合Skill——5+Skill编排成完整链路

做什么:将5个以上基础Skill编排为端到端业务流水线,用户一句话触发整条链路。

结构:以"智能数据查询面板"为例,5个Skill + 1个Gateway编排器。

代码示例——Gateway编排协议:

## 智能数据查询面板 - Gateway编排协议

用户输入自然语言 → 5个Skill依次执行 → 输出结构化结果或可视化图表

### 调用链路

```mermaid
graph LR
    A[用户输入] --> B[NL2Query 意图识别]
    B --> C[Security-Guard 权限校验]
    C --> D[Data-Executor 安全查询]
    D --> E[Data-Aggregator 聚合计算]
    E --> F[Visualization-Renderer 图表渲染]
    F --> G[输出结果]

技能职责

Skill 职责 输入 输出
NL2Query 自然语言转SQL 用户输入文本 结构化查询对象
Security-Guard 权限校验 查询对象 校验通过的查询
Data-Executor 执行SQL 校验后的查询 原始查询结果
Data-Aggregator 统计聚合 原始结果 聚合后数据
Visualization-Renderer 图表渲染 聚合数据 HTML/图片图表

数据传递协议

  • Skill间通过JSON传递
  • 每个Skill必须声明 input_schema 和 output_schema
  • 上游失败时整个链路终止并返回错误信息

**判断方法**:5个以上Skill通过统一编排链接,用户一个自然语言输入即可完成端到端流程。

> **重要**:组合的难度远高于单个!接口协议、数据格式、错误传播、性能瓶颈,每一个都是工程挑战。

---

## 步骤10:闭环Skill——8+Skill端到端业务操作系统

**做什么**:构建8个以上Skill协同的完整业务闭环,覆盖"理解→分析→决策→执行→归档",支持自进化。

**结构**:以"政企客户智能运营助手"为例,8步闭环 + 11个Skill协同。

**代码示例**——8步闭环定义:

```markdown
## 政企客户智能运营助手 - 8步闭环协议

Step 1: 理解意图
  - Skill: Info-Extractor
  - 输入:用户原始需求
  - 输出:结构化客户信息 + 查询意图

Step 2: 多源查询
  - Skill: Knowledge-RAG + Data-Executor
  - 输入:Step 1输出
  - 输出:客户全景数据(业务数据+知识库+外部信息)

Step 3: 规则评分
  - Skill: Scoring-Engine
  - 输入:Step 2输出 + scoring_rules.yaml
  - 输出:多维度评分结果(商机评分/流失风险/信用评级)

Step 4: 证据验证
  - Skill: Evidence-Chain
  - 输入:Step 2 + Step 3输出
  - 输出:交叉验证结果 + 置信度

Step 5: 根因定位
  - Skill: Root-Cause-Mapper
  - 输入:Step 4输出
  - 输出:根因推断 + Mermaid拓扑图

Step 6: 人工确认
  - Skill: Human-In-Loop
  - 输入:Step 5输出(高风险时触发)
  - 输出:人工审批结果

Step 7: 执行归档
  - Skill: Archive-Manager
  - 输入:Step 6输出
  - 输出:归档记录 + 标签 + 脱敏数据

Step 8: 可视化输出
  - Skill: Report-Generator + Visualization-Renderer
  - 输入:Step 6 + Step 7输出
  - 输出:DOCX报告 + HTML运营看板

自进化机制

# 每次闭环执行后自动沉淀经验
experience_log = {
    "execution_id": "EXEC-20260628-001",
    "customer": "江铃集团",
    "scoring_result": {"business_opportunity": 84, "churn_risk": 55},
    "key_insights": [
        "制造业客户对5G专网需求最强",
        "合作3年以上客户流失风险低但增值空间有限"
    ],
    "corrections": [],  # 人工纠正的判断
    "timestamp": "2026-06-28T14:30:00Z"
}
# 写入self-evolving-agent的记忆,后续执行自动参考

判断方法:8个以上Skill协同,覆盖完整业务闭环,具备自进化和可观测能力。


总结:十层速查表

层级 核心特征 一句话判断标准 所需新能力
1 纯提示词 写过可复用的SKILL.md 提示词工程
2 带资源 Skill有references或scripts 文件组织
3 工作流 有多步骤决策树+条件分支 流程设计
4 多Agent编排 用Phase-Orchestrator调度sub-Agent 编排调度
5 安全管控 有安全审查机制和风险分级 安全工程
6 规则引擎 用YAML配置驱动评分规则 配置化设计
7 交叉验证 从多源数据交叉验证+置信度 证据推理
8 人在回路 高风险操作需人工审批 审批流设计
9 组合编排 5+Skill端到端完整链路 系统集成
10 业务闭环 8+Skill闭环+自进化+可观测 架构设计

务实的升级路径:先到第3层(工作流) → 再到第5层(安全) → 然后到第8层(审批) → 最后冲击第10层(闭环)。

核心原则:先让Skill跑起来,再让Skill跑得安全,最后让Skill跑成系统。


常见问题FAQ

Q1:我只会写提示词,连代码都不会,能做Skill吗?

能。第1-3层完全不需要写代码,纯Markdown就能搞定。从第4层开始才涉及JSON和脚本,但也只是配置而非编程。

Q2:每个Skill都必须走满10层吗?

不用。大部分业务场景3-5层就够了。第8层(审批)只在高风险场景才需要,第10层是终极目标,不是每个项目都要到。

Q3:Phase-Orchestrator和普通工作流有什么区别?

关键区别:普通工作流是一个Agent串行执行所有步骤;Phase-Orchestrator是每个步骤启用独立Agent,Agent间通过JSON传递数据。独立Agent的上下文更干净,不会"前面步骤的信息干扰后面步骤的判断"。

Q4:安全审查会不会拖慢开发速度?

短期会,长期不会。在Skill数量少的时候安全审查看起来"多此一举",但当Skill超过10个、多个Agent协作时,没有安全审查就像盲开——你不知道哪个Skill在越权操作。建议从第5层开始就内置Security-Guard。

Q5:YAML配置和硬编码提示词,到底差在哪?

改YAML改一次配置文件30秒搞定,改提示词可能改出连锁问题。更重要的是:YAML可以由业务人员维护,提示词只能由技术人员维护。配置与代码分离,是这层最大的工程价值。

Q6:组合Skill和闭环Skill的区别是什么?

组合Skill(第9层)是一条业务链路,有明确的起点和终点;闭环Skill(第10层)是一个持续运转的系统,能自进化、可追溯、有降级策略。类比:组合Skill是流水线,闭环Skill是整个工厂。

Q7:人在回路会不会让AI变得不好用?

恰恰相反。人在回路只在高风险操作时介入,L1-L2级操作AI自动执行,用户根本感觉不到。它让用户更放心地把任务交给AI——因为有明确的"刹车"机制。

AI生成

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐