教程中心实战
实战

把高频流程打包成可复用 Skill:Microsoft Agent Skills for Python 实战

2026.07.24· 6 个步骤 · 18 分钟阅读· 📦 Agent Skills

你的团队是不是这样:十个 Agent,每个都在重复读同一套业务规则、同一份 SOP、同一段校验脚本?上下文越塞越长,错误率还降不下来。2026 年 7 月,Microsoft Agent Framework 的 Python skills API 稳定发布——一个 skill 可以把「指令 + 参考资料 + 脚本」打包在一起,只在需要时才被加载,还原生支持人在回路审批、脚本执行控制、过滤与缓存。本教程手把手教你把团队里每天重复的流程(比如工单分类、供应商资料整理、发布前检查)封成一个可被多个 Agent 复用的技能包。

📦 本教程适合:已经跑着多个 Python Agent、且每个都在重复同样业务逻辑的团队;想从「长 prompt 硬塞」升级到「按需加载技能」的工程负责人。和「装别人的技能包」不同,这篇教你自己写一个 skill

先搞懂:Skill 和普通 prompt 有什么区别?

Skill 不是又一段长提示词,而是一份「会被按需加载的封装」:

维度长 promptAgent Skill
加载时机每次都塞进上下文任务需要时才加载
内容只有文字指令指令 + 参考资料 + 脚本
执行靠模型自觉可控脚本 + 人工审批
复用复制粘贴一处定义,多处引用

核心收益:上下文长度下降、人工审批次数可控、返工率降低。官方建议先拿一个「每天重复、规则稳定」的流程试水,对比三项指标就够。

Step 1:装好 Microsoft Agent Framework

1 用 Python 装框架

Skills API 已稳定,先装包(建议 Python 3.10+):

# 创建虚拟环境(推荐)
python -m venv .venv && source .venv/bin/activate

# 安装带 skills 支持的 Agent Framework
pip install "azure-ai-agents"   # 或对应 MS Agent Framework 的 PyPI 包
pip install "semantic-kernel"   # skills 常配合 SK 使用

# 验证
python -c "import semantic_kernel; print('ok')"
💡 模型调用、运行环境、托管成本另行计算,skill 本身免费。先在本机跑通,再考虑云端托管。

Step 2:搭一个 Skill 的目录骨架

2 一个 skill = 一个目录

每个 skill 是一个独立目录,里面放指令、资料和脚本:

skills/
└── ticket-triage/            # 工单分类技能
    ├── skill.yaml            # 元信息:名称、描述、触发条件
    ├── instructions.md       # 给 Agent 看的「怎么干」
    ├── references/           # 参考资料(SOP、字段表)
    │   └── category-table.md
    └── scripts/              # 可执行的校验/处理逻辑
        └── validate.py

description 写清楚「什么时候该用它」,框架靠这段描述决定要不要加载这个 skill。写得越准,按需加载越聪明。

Step 3:写指令与参考资料

3 把业务规则从 prompt 搬进 skill

把原来散落在各 Agent 提示词里的规则,集中写进 skill:

# skill.yaml(示意)
name: ticket-triage
description: 当用户提交/处理客服工单时,按公司 SOP 做分类与优先级判定
triggers: [工单, 客服, 分类, 优先级]

# instructions.md(节选)
你是工单分诊助手。收到工单后:
1. 读取 references/category-table.md 判定所属类别
2. 按「影响人数 × 严重度」给出 P0-P3 优先级
3. 调用 scripts/validate.py 校验必填字段
4. 不确定时输出 NEEDS_REVIEW,不要瞎猜
🔑 经验:参考资料(SOP、字段表)放 references/,指令放 instructions.md。这样多个 Agent 引用同一个 skill,规则改一处即可全员生效。

Step 4:加一个可执行脚本 + 人工审批

4 让 skill 不只是「建议」,还能「执行」

Skill 里可以带脚本,并配置人在回路审批——高风险动作先等人点确认:

# scripts/validate.py
def validate(ticket: dict) -> dict:
    required = ["title", "reporter", "module"]
    missing = [k for k in required if not ticket.get(k)]
    return {"ok": not missing, "missing": missing}

# 在 skill 配置里声明需要审批
# execution:
#   scripts: [validate.py]
#   require_approval: true   # 执行前弹确认

脚本执行控制 + 审批是生产级 skill 的标配。涉及写库、发消息、调外部系统的脚本,一律开 require_approval,别让 Agent 自动放行。

Step 5:给 Agent 注册并测试按需加载

5 让 Agent 在合适的时候「想起」这个 skill

把 skill 挂到 Agent 上,框架会在任务匹配时自动加载:

from semantic_kernel import Kernel
from skill_loader import load_skill

kernel = Kernel()
load_skill(kernel, "skills/ticket-triage")

# 模拟:提交一条工单
result = await kernel.invoke(
    function_name="ticket-triage",
    input="用户反馈登录页 500,影响全部付费用户"
)
print(result)  # 应判定 P0 + 触发审批
🚀 测三项就够了:① 上下文是否变短(原来塞的 SOP 没了);② 审批是否按预期弹出;③ 同样工单的返工率是否下降。

Step 6:用过滤 + 缓存打磨复用体验

6 让它更稳、更快、更省

稳定版还提供过滤(拦截不合适的调用)与缓存(相同输入不重复算):

# 过滤:挡掉明显不匹配的请求,避免误加载
filters:
  - if: input.length < 5
    action: skip

# 缓存:同类工单分类结果复用,省 token
cache:
  ttl: 3600
  key: hash(input.module + input.title)

# 多 Agent 共享同一份 skill 定义,
# 一处更新,所有引用者同步生效。
🎉 恭喜!你把一个高频流程封装成了可复用、可审批、可缓存的 skill。下一步把其它重复逻辑(供应商整理、发布前检查)也 skill 化,团队的 Agent 就从「各自硬塞 prompt」进化成「共享技能库」。

常见问题速查

你遇到的现象大概率原因 & 解决
skill 没被加载description/triggers 太模糊,补充触发关键词
该审批的没弹确认没设 require_approval,或执行配置未生效
多个 Agent 规则不一致没走 skill 共享,仍在各自 prompt 里抄
缓存命中却结果错key 没覆盖变化维度,调整 cache.key