实战
把高频流程打包成可复用 Skill:Microsoft Agent Skills for Python 实战
你的团队是不是这样:十个 Agent,每个都在重复读同一套业务规则、同一份 SOP、同一段校验脚本?上下文越塞越长,错误率还降不下来。2026 年 7 月,Microsoft Agent Framework 的 Python skills API 稳定发布——一个 skill 可以把「指令 + 参考资料 + 脚本」打包在一起,只在需要时才被加载,还原生支持人在回路审批、脚本执行控制、过滤与缓存。本教程手把手教你把团队里每天重复的流程(比如工单分类、供应商资料整理、发布前检查)封成一个可被多个 Agent 复用的技能包。
📦 本教程适合:已经跑着多个 Python Agent、且每个都在重复同样业务逻辑的团队;想从「长 prompt 硬塞」升级到「按需加载技能」的工程负责人。和「装别人的技能包」不同,这篇教你自己写一个 skill。
先搞懂:Skill 和普通 prompt 有什么区别?
Skill 不是又一段长提示词,而是一份「会被按需加载的封装」:
| 维度 | 长 prompt | Agent 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 |