
在SKILL架构出现之前,大模型智能体就像一体式定制手机:所有功能(打电话、拍照、导航、聊天)都写死在系统核心代码里。

这就是传统智能体的四大工程死穴:
SKILL 架构是面向大模型智能体的能力解耦与编排架构,核心是两大技术动作:原子化拆分 + 标准化封装。
原子化拆分:把智能体的所有能力,拆解成最小可用、功能闭环的独立单元(SKILL单元)。这种拆分遵循单一职责原则,确保每个单元只负责一个明确的功能领域。
标准化封装:给每个SKILL单元统一数据格式、触发规则、依赖管理,让所有能力像乐高积木一样自由拼接。标准化确保了不同技能间的互操作性和可复用性。
核心概念说明:
SKILL单元结构:一个标准SKILL单元 = 输入校验 + 核心逻辑 + 输出校验 + 触发规则 + 依赖声明。
单元模块详细介绍:
SKILL单元特征:它可以是最小功能,如手机号校验,也可以是复杂任务,如多步骤数据分析,但必须满足以下特性:
3.1 技术优势
3.2 业务优势

大模型本身是大脑,负责理解意图、生成逻辑,但不擅长执行具体功能、保证数据准确性。SKILL 架构给大模型装上了标准化手脚:
1.1 原子SKILL单元:最小执行载体
1.2 Schema校验模块:数据安全底座
1.3 触发调度引擎:大模型决策入口
1.4 依赖管理中心:能力组合核心
1.5:版本与迭代管理器:维护保障
2.1 解耦原理:能力与核心代码分离
传统架构:核心系统 → 功能A → 功能B → 功能C(强绑定) SKILL架构:调度引擎 ↔ SKILL1 ↔ SKILL2 ↔ SKILL3(松耦合)

2.2 标准化原理:统一通信协议
所有 SKILL 遵循三统一:
这就像所有电器都用统一插头,不管什么品牌,都能直接使用。

2.3 复用原理:无状态独立运行
SKILL单元不绑定任何智能体、不存储私有数据,只要符合标准,就能在任何项目中调用:

2.4 扩展原理:独立迭代升级
每个 SKILL 有独立版本号:
更新时,只替换单个SKILL文件,无需重启智能体,无风险、高效率。

示例主要展示了基于Pydantic的SKILL标准化封装,核心设计如下:
from pydantic import BaseModel, Field
from typing import Optional
# ----------------------
# 步骤1:定义SKILL输入标准(Schema校验)
# ----------------------
class DataQueryInput(BaseModel):
# 必传参数:用户ID,字符串类型,最小长度3
user_id: str = Field(min_length=3, description="用户唯一标识")
# 必传参数:查询日期,格式YYYY-MM-DD
query_date: str = Field(pattern=r"^\d{4}-\d{2}-\d{2}$", description="查询日期,格式:YYYY-MM-DD")
# 可选参数:查询类型
query_type: Optional[str] = Field(default="default", description="查询类型")
# ----------------------
# 步骤2:定义SKILL输出标准(Schema校验)
# ----------------------
class DataQueryOutput(BaseModel):
# 执行状态:成功/失败
status: str = Field(description="执行状态")
# 返回数据
data: dict = Field(description="查询结果数据")
# 错误信息(执行失败时返回)
error_msg: Optional[str] = Field(default=None, description="错误信息")
# ----------------------
# 步骤3:基础SKILL封装(原子化单元)
# ----------------------
class DataQuerySkill:
# 技能标识(标准化命名)
skill_name = "data_query_skill"
# 技能描述(给大模型理解用)
skill_description = "根据用户ID和日期,查询用户业务数据"
def execute(self, input_data: dict) -> dict:
"""
SKILL核心执行方法
:param input_data: 输入参数(字典)
:return: 输出结果(字典)
"""
try:
# 1. 输入参数校验(标准化强制校验)
validated_input = DataQueryInput(**input_data)
# 2. 核心业务逻辑(原子功能)
result = {
"user_id": validated_input.user_id,
"query_date": validated_input.query_date,
"content": "用户当日业务数据:订单数5,消费金额200元"
}
# 3. 输出结果校验
validated_output = DataQueryOutput(
status="success",
data=result
)
# 返回标准化数据
return validated_output.model_dump()
except Exception as e:
# 异常标准化返回
return DataQueryOutput(
status="failed",
data={},
error_msg=str(e)
).model_dump()
# ----------------------
# 测试:调用原子SKILL
# ----------------------
if __name__ == "__main__":
# 初始化技能
skill = DataQuerySkill()
# 标准输入
test_input = {
"user_id": "U12345",
"query_date": "2026-04-08"
}
# 执行并输出
output = skill.execute(test_input)
print("SKILL执行结果(正确):\n", output)
test_input = {
"user_id": "U12345",
"query_date": "2026年04月08日"
}
# 执行并输出
output = skill.execute(test_input)
print("SKILL执行结果(错误):\n", output)代码说明:
输出结果:
SKILL执行结果(正确): {'status': 'success', 'data': {'user_id': 'U12345', 'query_date': '2026-04-08', 'content': '用户当日业务数据:订单数5,消费金额200元'}, 'error_msg': None} SKILL执行结果(错误): {'status': 'failed', 'data': {}, 'error_msg': "1 validation error for DataQueryInput\nquery_date\n String should match pattern '^\\d{4}-\\d{2}-\\d{2}$' [type=string_pattern_mismatch, input_value='2026年04月08日', input_type=str]\n For further information visit pydantic.dev/2.12/v/string_pattern_mismatch"}
结合以上示例,我们扩展成多个SKILL集成的模式,了解完整的执行流程:

步骤 1:用户输入(原始请求) 用户:帮我查询 U12345 用户 2026-04-08 的业务数据,然后生成一份分析报告
步骤 2:大模型意图理解(大脑决策) 大模型解析出:
步骤 3:触发调度引擎匹配SKILL 调度引擎根据大模型的意图,匹配两个标准化SKILL:
步骤 4:SKILL依赖链执行
步骤 5:结果返回用户 返回最终的分析报告,全程无数据错误、无逻辑混乱。
通过以上Schema标准化封装的示例,我们根据流程进行扩展成多SKILL,展示链式编排能力以及依赖链执行;
相比旧示例有以下核心增强:
- 1. 多SKILL链式编排能力:
- 2. SKILL组合复用模式:
- 3. 更完整的工程化结构
from pydantic import BaseModel, Field
from typing import Optional
# ----------------------
# 步骤1:定义SKILL输入标准(Schema校验)
# ----------------------
class DataQueryInput(BaseModel):
# 必传参数:用户ID,字符串类型,最小长度3
user_id: str = Field(min_length=3, description="用户唯一标识")
# 必传参数:查询日期,格式YYYY-MM-DD
query_date: str = Field(pattern=r"^\d{4}-\d{2}-\d{2}$", description="查询日期,格式:YYYY-MM-DD")
# 可选参数:查询类型
query_type: Optional[str] = Field(default="default", description="查询类型")
# ----------------------
# 步骤2:定义SKILL输出标准(Schema校验)
# ----------------------
class DataQueryOutput(BaseModel):
# 执行状态:成功/失败
status: str = Field(description="执行状态")
# 返回数据
data: dict = Field(description="查询结果数据")
# 错误信息(执行失败时返回)
error_msg: Optional[str] = Field(default=None, description="错误信息")
# ----------------------
# 步骤3:基础SKILL封装(原子化单元)
# ----------------------
class DataQuerySkill:
# 技能标识(标准化命名)
skill_name = "data_query_skill"
# 技能描述(给大模型理解用)
skill_description = "根据用户ID和日期,查询用户业务数据"
def execute(self, input_data: dict) -> dict:
"""
SKILL核心执行方法
:param input_data: 输入参数(字典)
:return: 输出结果(字典)
"""
try:
# 1. 输入参数校验(标准化强制校验)
validated_input = DataQueryInput(**input_data)
# 2. 核心业务逻辑(原子功能)
result = {
"user_id": validated_input.user_id,
"query_date": validated_input.query_date,
"content": "用户当日业务数据:订单数5,消费金额200元"
}
# 3. 输出结果校验
validated_output = DataQueryOutput(
status="success",
data=result
)
# 返回标准化数据
return validated_output.model_dump()
except Exception as e:
# 异常标准化返回
return DataQueryOutput(
status="failed",
data={},
error_msg=str(e)
).model_dump()
# ----------------------
# 步骤4:报告生成SKILL(接收查询结果,生成报告)
# ----------------------
class ReportGenerateInput(BaseModel):
query_result: dict = Field(description="数据查询结果")
report_type: str = Field(default="summary", description="报告类型")
class ReportGenerateOutput(BaseModel):
status: str = Field(description="执行状态")
report: str = Field(description="生成的报告内容")
error_msg: Optional[str] = Field(default=None, description="错误信息")
class ReportGenerateSkill:
skill_name = "report_generate_skill"
skill_description = "根据查询数据生成业务报告"
def execute(self, input_data: dict) -> dict:
try:
validated_input = ReportGenerateInput(**input_data)
query_data = validated_input.query_result
# 生成报告
report_content = f"""
【业务数据报告】
用户ID: {query_data.get('user_id')}
查询日期: {query_data.get('query_date')}
数据摘要: {query_data.get('content')}
生成时间: 2026-04-08
报告类型: {validated_input.report_type}
""".strip()
return ReportGenerateOutput(
status="success",
report=report_content
).model_dump()
except Exception as e:
return ReportGenerateOutput(
status="failed",
report="",
error_msg=str(e)
).model_dump()
# ----------------------
# 步骤5:调度引擎(串联多个SKILL)
# ----------------------
class SkillScheduler:
"""SKILL调度引擎:负责SKILL链式调用"""
def run_pipeline(self, user_input: dict) -> dict:
"""
执行完整流程:数据查询 → 报告生成
"""
print("="*50)
print("调度引擎启动:数据查询 → 报告生成")
print("="*50)
# 步骤1:执行数据查询SKILL
print("\n步骤1:执行 data_query_skill")
query_skill = DataQuerySkill()
query_result = query_skill.execute(user_input)
if query_result["status"] != "success":
print(f"数据查询失败: {query_result['error_msg']}")
return {"status": "failed", "error": "数据查询失败"}
print("数据查询成功,返回标准化结果")
# 步骤2:调度引擎传递结果,执行报告生成SKILL
print("\n步骤2:调度引擎传递结果 → report_generate_skill")
report_input = {
"query_result": query_result["data"],
"report_type": "summary"
}
report_skill = ReportGenerateSkill()
report_result = report_skill.execute(report_input)
if report_result["status"] != "success":
print(f"报告生成失败: {report_result['error_msg']}")
return {"status": "failed", "error": "报告生成失败"}
print("报告生成成功")
print("="*50)
return {
"status": "success",
"query_data": query_result["data"],
"report": report_result["report"]
}
# ----------------------
# 测试:完整流程
# ----------------------
if __name__ == "__main__":
# 用户输入
user_input = {
"user_id": "U12345",
"query_date": "2026-04-08"
}
# 调度引擎执行完整流程
scheduler = SkillScheduler()
result = scheduler.run_pipeline(user_input)
print("\n最终输出:")
print(result)输出结果:
================================================== 调度引擎启动:数据查询 → 报告生成 ================================================== 步骤1:执行 data_query_skill 数据查询成功,返回标准化结果 步骤2:调度引擎传递结果 → report_generate_skill 报告生成成功 ================================================== 最终输出: {'status': 'success', 'query_data': {'user_id': 'U12345', 'query_date': '2026-04-08', 'content': '用户当日业务数据:订单数5,消费金额200元'}, 'report': '【业务数据报告】\n用户ID: U12345\n查询日期: 2026-04-08\n数据摘要: 用户当日业务数据:订单数5,消费金额200元\n生成时间: 2026-04-08\n报告类型: summary'}
传统智能体只支持关键词匹配,比如只有输入”查询数据“才调用对应功能。SKILL架构支持4维精准匹配:
class SkillTrigger:
"""SKILL触发规则引擎(多维度匹配)"""
def match_skill(self, user_intent: dict, context: dict) -> str:
"""
匹配最佳SKILL
:param user_intent: 大模型识别的用户意图
:param context: 对话上下文
:return: 匹配的SKILL名称
"""
# 1. 关键词匹配(基础)
keyword_match = "数据查询" in user_intent["text"]
# 2. 意图匹配(核心,大模型输出)
intent_match = user_intent["intent"] == "data_query"
# 3. 上下文匹配(历史对话)
context_match = context.get("last_skill") == "data_prepare"
# 4. 置信度匹配(大模型识别可信度≥0.8)
confidence_match = user_intent["confidence"] >= 0.8
# 多维度综合判断
if intent_match and confidence_match:
return "data_query_skill"
elif keyword_match and context_match:
return "data_query_skill"
else:
return "default_skill"应用价值:复杂场景下,如用户模糊提问、上下文关联任务场景可精准调用SKILL,不混淆、不错误。
class SkillDependencyScheduler:
"""SKILL依赖调度引擎"""
def __init__(self):
# 定义依赖链:报告生成 → 依赖 → 数据查询
self.dependency_chain = {
"report_generate_skill": ["data_query_skill"]
}
def run_chain(self, skill_name: str, input_data: dict) -> dict:
"""执行依赖链"""
# 1. 获取当前SKILL的依赖
dependencies = self.dependency_chain.get(skill_name, [])
# 2. 先执行所有依赖SKILL
dependency_result = {}
for dep_skill in dependencies:
dep_instance = DataQuerySkill()
dependency_result = dep_instance.execute(input_data)
# 依赖执行失败,直接返回
if dependency_result["status"] == "failed":
return dependency_result
# 3. 依赖执行成功,执行目标SKILL
target_skill = ReportGenerateSkill()
final_result = target_skill.execute(dependency_result["data"])
return final_result执行逻辑:自动按依赖顺序执行,前一个SKILL失败则终止,保证任务逻辑正确性。
SKILL架构本质上就是把传统耦合严重、改一点动全身的智能体,彻底改成了插件化、可拼装、易维护的工程化系统。它通过原子化拆分把每个功能拆成独立 SKILL模块,再用标准化封装统一输入输出、触发规则和依赖管理,直接解决了传统智能体扩展难、复用低、维护麻烦的痛点,真正做到了像搭乐高一样搭建智能体。
好的AI架构从来不是堆功能,而是解耦、规范、可扩展。大模型负责理解和决策,SKILL负责执行和落地,分工清晰才是落地的关键。初次接触建议大家先吃透基类和注册机制,再动手写简单插件,逐步尝试依赖链和热更新。不要一上来就追求复杂流程,先把单个SKILL做标准、做稳定,后续组合起来自然流畅。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。