Perplexity 案例
Perplexity Research 在 2026 年 5 月 1 日发布了 Designing, refining, and maintaining agent skills at Perplexity。这篇文章不是 Agent Skills 规范,而是 Perplexity 在 agent 产品 Computer 中维护 Skills 的生产经验。
放在本章里,它的价值不是提供另一套规范,而是展示:当一个团队真的维护一组生产 Skills 时,问题会从“怎么写一份 SKILL.md”变成“怎么管理路由、上下文成本、评估和长期维护”。
核心判断
Perplexity 的核心判断很直接:写 Skill 不是写传统软件,而是在给模型和执行环境构建上下文。
这会反转很多工程直觉:
- 对代码来说,显式通常更好;对 Skill 来说,触发依赖隐式匹配,所以
description比长说明更关键。 - 对文档来说,解释完整通常更好;对 Skill 来说,模型已经知道的内容应该删掉。
- 对普通系统来说,特殊情况是例外;对 Skill 来说,gotchas 往往是最高价值内容。
- 对上下文来说,每个 token 都有成本;短不是风格选择,而是运行时约束。
这条判断和本章 编写指南 的官方原则一致:Skill 应该补模型缺少的任务上下文,而不是重复模型已经会的通用知识。
三层成本模型
Perplexity Computer 把 Skill 成本分成三层。
| 层级 | 加载什么 | Perplexity 的经验值 | 设计含义 |
|---|---|---|---|
| Index | 每个非隐藏 Skill 的 name + description | 约 100 tokens / Skill | 每个 session 都付费,必须极短且高信号 |
| Load | 完整 SKILL.md body | 理想上不超过约 5,000 tokens | 一旦加载,会占用到下一次 compaction 边界 |
| Runtime | scripts/、references/、assets/、子 Skill、格式文件 | 无固定上限 | 真正按需读取,适合放重型材料 |
这些数字是 Perplexity Computer 的实现经验,不是规范限制。但它们说明了一个通用事实:description 的成本最贵,因为它常驻;SKILL.md 次之,因为加载后会持续占用上下文;只有 runtime 层最接近按需成本。
所以 Perplexity 对 Skill 的要求很苛刻:每句话都要回答一个问题,少了它 agent 会不会做错?如果不会,就删掉。
什么时候值得写 Skill
Perplexity 的判断标准可以压缩成三类。
适合写成 Skill:
- agent 在没有专门上下文时会失败,或跨运行表现不稳定。
- 需要的是稳定但训练数据里缺失的知识,例如企业内部流程、产品后训练截止后出现的信息、团队品味或判断标准。
- 任务行为无法用一句 prompt 稳定改变。
不适合写成 Skill:
- 模型本来就会,例如常见 git 命令序列。
- 属于多数请求都需要的全局规则,这类内容应该进 system prompt 或 harness policy。
- 内容变化快于维护节奏。过期 Skill 会让 agent 自信地走错路。
这也是为什么 Perplexity 强调“Every Skill is a tax”:Skill 不是越多越好。每新增一个 Skill,都会增加常驻 index 成本,也可能影响已有 Skill 的路由边界。
构建流程
Perplexity 给出的构建顺序是 eval-first。
-
先写 eval
用真实生产 query、已知失败案例、相邻但不该触发的负样本组成测试集。负样本尤其重要,因为 Skill 最大的失败模式之一是误触发。 -
先调 description
description是路由触发器,不是内部文档。Perplexity 建议用接近真实用户语言的Load when ...句式,而不是写“这个 Skill 做什么”。例如 PR monitoring 的触发语要覆盖用户真实说法,如“watch CI”“make sure this lands”。 -
再写 body
body 不应该列出模型已经会的命令序列。更好的写法是告诉模型目标、边界、失败处理和 gotchas。条件性或重型内容下沉到资源文件。 -
使用目录层次
scripts/放 deterministic 逻辑,references/放条件性重文档,assets/放模板和 schema,必要时用配置文件保存首次运行设置。 -
在 branch 上迭代并一起提交 eval
description 中一个小词变化都可能改变路由。Perplexity 建议把完整 eval set 和 Skill 改动作为同一个 changeset 评审。
税法 Skill 的教训
文章中最值得保留的案例是美国税法 Skill。
Perplexity 曾把 Internal Revenue Code 的 1,945 个 section 放进一个单层目录,结果表现比不加载 Skill 更差。原因不是模型没有知识,而是入口结构太差:让模型从上千条材料里直接定位,路由问题本身就变得不可控。
后来的改法是把内容整理成多层结构:先进入大类,再进入 topic cluster,最后进入具体条款,并补充快速参考和搜索工具。
这个案例说明:当参考资料很密集时,Skill 的核心工作不是“把资料都放进去”,而是设计模型能走得动的索引结构。
维护方式
Perplexity 维护 Skill 的核心机制是 gotchas 和 eval。
常见维护动作:
- agent 在生产中踩坑:追加 gotcha。
- 错误 Skill 被加载:收紧
description,补负样本。 - 应该加载但没加载:补触发词,补正样本。
- system prompt 改了:检查是否和已有 Skill 重复或争抢路由。
Perplexity 还强调 eval 不能只看单个 Skill。新增一个 Skill 可能让旧 Skill 误触发或不再触发,这种“远程副作用”只有 catalog-wide eval 才能发现。
他们提到的 eval 类型包括:
- Skill 加载的 precision / recall,以及 forbidden-load 负样本。
- progressive loading:body 要求读取附件时,agent 是否真的读取。
- 端到端任务完成:完整 agent loop 后用 rubric 评分。
- 多模型测试:不同模型家族对同一 Skill 的触发和遵循可能不同。
可以迁移的三条经验
-
Skill catalog 是路由系统,不只是知识库。
description 的边界会影响整个目录,不只是当前 Skill。 -
最有价值的内容通常是负向知识。
gotchas、反例、边界条件比通用教程更值得占用上下文。 -
eval 要先于 Skill,也要覆盖目录级回归。
只验证“这个 Skill 能不能工作”还不够,还要验证“它会不会破坏别的 Skill”。