跳到主要内容

Agent Skills 渐进式披露

为什么需要从静态提示工程转向动态提示词?​

  • 膨胀: 业务场景变多后,客服退款规则、编程代码规范、文档格式要求全塞进一个系统提示词;
  • 问题一: 浪费 token——大部分内容与当前任务无关;
  • 问题二: 注意力被稀释——无关信息过多会削弱模型对关键内容的注意力,即 上下文腐化;
  • 演进: 不是把所有知识一次性塞给 Agent,而是让它按需加载;
  • 定义: Agent Skills 是把 Agent 能力模块化为独立、可按需加载的知识包的机制;
  • 本质: 每个 Skill 是一套包含专业领域指导的提示词集合,像某个专项任务的操作手册;
  • 比喻: 不把公司所有部门的操作手册都堆到新员工桌上,而是先给总目录,需要哪本再取;

Skills 的渐进式披露分哪三层?​

层内容时机
元数据SKILL.md 顶部的 YAML frontmatter(name、description)主体正文加载前对 Agent 可见
核心流程完整 SKILL.md 正文Agent 判断任务需要该 Skill 时加载
细则被引用的子文档,如 html2pptx.md、reference.md按具体需求选择性深入
  • 目录的作用: 提供可发现性,让 Agent 先判断是否需要某项能力,而不必为所有能力支付完整上下文成本;
  • 目录位置: 不同运行时可以把目录放在不同的上下文层,但都服务于可发现性而非承载完整流程;
  • 细则例子: PPTX Skill 中,html2pptx.md 给出通过 HTML 模板创建 PowerPoint 的工作流,reference.md 给出格式技术细节;
  • 核心流程例子: 如何用 markitdown(Microsoft 开源的文档转 Markdown 工具)提取文本、如何解压 PPTX 访问 XML 结构、关键文件路径约定;

description 字段应该怎么写?​

  • 定位: 是路由决策的关键,既要足够短(控制常驻 token 量),又要像路由条件而非功能介绍;
  • 写法: 明确“何时使用”和“何时不使用”的边界;
  • 反例库: 给出几条典型反例,减少宽泛匹配带来的误触发;
  • 反面示范: “help with backend”等于任何后端工作都能触发,路由必然失准;
  • 原则: “何时该用我”比“我能做什么”重要得多;
  • 定位澄清: 这是路由提示的写作建议,不是额外的格式字段;

Skill 有哪些触发方式?​

  • 触发方式一(斜杠命令): 用户显式输入 /pptx,由客户端在本地拦截并展开,模型不必先发起一次工具调用;
  • 触发方式二(模型自主): 模型读过元数据目录后判断需要某 Skill,调用专用 Skill 工具,比前者多一次 ReAct 往返;
  • 落点一致: 两条路径最终都把 Skill 正文在调用位置注入会话;
  • Claude Code 细节: 正文作为 user message 加入;模型自主触发时返回的 tool result 只是一句“正在启动 Skill”的占位符,不承载正文;
  • 无专用激活工具时: 用通用文件读取工具去读 SKILL.md,正文以 tool result 形式进入上下文;
  • 状态追踪: 模型自主触发时,轨迹里能看到完整的 Skill(skill: "pptx") tool_use → 占位符 tool_result → 正文作为独立 user 消息;

Skills 在上下文中具体处于什么位置?​

  • 标准层: 规范规定的是加载时序,而不是消息角色——目录必须先于正文可发现,正文在 Skill 被选中后按需加载;
  • 实现自由度: 具体消息角色、包装方式以及目录是否每轮重建,都由 Agent Harness 决定;
  • Claude Code: 采用渐进式目录与调用时追加正文——目录作为运行时上下文消息提供,完整指令在调用位置作为 user message 注入;
  • 术语澄清: “system prompt”可用于描述逻辑上的稳定指令层,但不应被理解为所有客户端都使用 API 的 role: "system";
  • OpenAI Codex: 在每轮上下文构造阶段重新渲染 Skills catalog 作为 developer 上下文片段;显式选中的 Skill 正文以带 <skill> 标记的 user 片段注入;其他来源的 Skill 可经专用工具按需读取;
  • 共同原则: 少量目录常驻、完整正文按需加载——这是 Skills 兼顾动态加载能力与上下文开销的关键;
  • 版本风险: Agent Harness 发展很快,读到文档时实现可能已经改变;
  • 缓存代价: “对 KV Cache 友好”并非“零成本”——目录首次进入请求需要处理,完整正文首次加载也会产生新增计算;
  • 缓存收益: 前缀保持稳定时后续请求可复用缓存,无需启动时加载所有 Skill 正文,也无需每次调用新 Skill 时回头改写已建立的上下文;

Skills 与工具(Tools)是什么关系?​

  • 对比: 把所有专用代码工具定义都放在系统提示词,数量膨胀会消耗大量 token 并干扰注意力;
  • 替代: Skill + 通用执行器模式下,工具数量始终很少(如第五章所示仅需七个核心工具);
  • 收益: Skill 内容通过渐进式披露按需加载,不影响已缓存的前缀;
  • 定位: 从上下文管理角度看,Skills 机制对 KV Cache 极为友好;
  • 展开: 两种形态的详细对比与选择框架见第四章;一项经验应写成知识、指令、程序还是模型参数见第九章;