meng shao(@shao__meng)

Perplexity 团队内部 Agent Skills 设计、迭代与维护之道 Perplexity Agents 团队的内部规范公开版,核心论点很反直觉:写 Skill 不是写代码,而是为模型构建...

8.5内容质量
Perplexity 团队内部 Agent Skills 设计、迭代与维护之道

Perplexity Agents 团队的内部规范公开版,核心论点很反直觉:写 Skill 不是写代码,而是为模型构建...

TL;DR · AI 摘要

Perplexity 团队提出构建 Agent Skills 的新方法,强调 Skill 不是代码,而是为模型构建上下文。

核心要点

  • Skill 是目录,标准结构包括 SKILL.md 和其他文件夹。
  • 构建 Skill 的顺序不可调,先写 Evals,再写 Description。
  • Gotchas 是最高价值内容,从薄起步、随失败生长。

结构提纲

按章节快速跳转。

  1. Perplexity 团队公开内部规范,提出构建 Agent Skills 的新方法。

  2. Skill 是为模型构建上下文,而非传统意义上的代码。

  3. Skill 是目录、格式、可调用的和渐进式的。

  4. 构建 Skill 的步骤包括写 Evals、Description、Body、层次结构和迭代。

  5. 维护 Skill 依靠 Gotchas 列表,逐步改进。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Perplexity 团队 Agent Skills 构建

金句 / Highlights

值得收藏与分享的关键句。

#Perplexity#Agent Skills#模型构建
打开原文

Perplexity Agents 团队的内部规范公开版,核心论点很反直觉:写 Skill 不是写代码,而是为模型构建上下文。把工程师写代码的本能直接套到 Skill 上,几乎一定会失败。 https://t.co/3MCyFkV3gZ

Skill ≠ 代码,以 Python 信条和 Skill https://t.co/HwNUgtclNu" / X

Perplexity 团队内部 Agent Skills 设计、迭代与维护之道 Perplexity Agents 团队的内部规范公开版,核心论点很反直觉:写 Skill 不是写代码,而是为模型构建上下文。把工程师写代码的本能直接套到 Skill 上,几乎一定会失败。 research.perplexity.ai/articles/desig# Skill ≠ 代码,以 Python 信条和 Skill 反信条为例 · Python:Simple is better than complex,Skill:Skill 是文件夹,复杂性是特性 · Python:Explicit is better than implicit,Skill:激活靠隐式模式匹配 + 渐进披露 · Python:Sparse is better than dense,Skill:每 token 都要榨出最大信号 · Python:特例不应破坏规则,Skill:Gotchas 才是最高价值内容 · Python:容易解释的实现是好实现,Skill:容易解释的,模型已经会了 → 删掉 # Skill 的四重定义 1. Skill 是目录(不是单文件) · 标准结构:SKILL.md + scripts/ + references/ + assets/ + config.json · 复杂领域用多级层次。例:美国税法有 1945 个 IRC 条款,扁平加载比不加载效果更差;分三级嵌套后才可用。但层次本身有代价,需要导航工具(quick reference、自定义检索)来对冲间接性。 2. Skill 是格式 · frontmatter 必须有 name(小写、连字符、与目录同名)和 description。 · description 是路由触发器,不是文档。常见错误:写「This Skill does X」;正确写法是「Load when …」。 · depends: 用于级联依赖;运行时元数据可用辅助 JSON/YAML 隔离,避免污染上下文。 3. Skill 是可调用的 · 加载流程:load_skill() → 拷贝目录入沙箱 → 递归装依赖 → 剥离 frontmatter,仅暴露 body 与附属文件。 4. Skill 是渐进式的(这是最重要的成本模型) · Index:所有 Skill 的 name+description;~100 tokens/Skill;每次会话、每个用户、永远 · Load:SKILL.md body;~5,000 tokens;一次加载,会话内持续占用 · Runtime:scripts / references / 子 Skill;无上界;仅模型实际读取时 → 越靠上的层,每个字越贵。Index 是「奢侈品柜台」,Runtime 是「无限仓库」。 # 什么时候不需要 Skill 反复强调「Every Skill is a tax」。三类典型滥用: · 模型已会的:写一串 git 命令 → 是好文档,是坏 Skill。 · 重复 system prompt 的:通用知识应进全局上下文,不该走条件加载。 · 变化太快的:远端 MCP 工具版本频繁变 → Skill 会漂移导致幻觉。 · 判断单句是否该留的尺子:「没有这句话,Agent 会做错吗?」 答否即删。 引用 Pascal:「这封信写得长,是因为我没时间写短。」 —— 写短 Skill 很难;写得快的 Skill 大概率有问题。还引了一篇研究:LLM 自生成的 Skill 平均无收益,因为模型无法可靠地把"自己消费有用的程序性知识"写出来。 # 构建五步法(顺序不可调) Step 0 — 先写 Evals:源自真实查询、已知失败、邻域混淆。负例往往比正例更重要。 Step 1 — 写 Description(最难的一行): · 以 "Load when…" 开头,≤ 50 词 · 描述用户意图(用真实抱怨语:「babysit」「watch CI」「make sure this lands」) · 不要总结工作流 · 唯一目标:路由准确,最小化对其他 Skill 的回归影响 Step 2 — 写 Body:跳过显然的;不要罗列命令序列;用意图陈述代替过程脚本。 Image 1: ❌ git log; git checkout main; git checkout -b; git cherry-pick Image 2: ✅ "Cherry-pick 到干净分支,保留意图解决冲突,落不下时说明原因。" 重点放 gotchas / 负例。 Step 3 — 用层次结构:条件性、重型、模板类内容拆到 scripts/、references/、assets/、config.json。 Step 4 — 迭代:用一个评测集做小词级调优(描述里一字之差就能引发路由级联)。 Step 5 — Ship。 # 维护:Gotchas 飞轮 Skill 是「仅追加为主」的: · Agent 错了 → 加 gotcha · 误加载 → 收紧描述 + 加负例 · 该加载没加载 → 加关键词 + 加正例 · system prompt 变了 → 检查冲突与重复 从 80/20 走向 99.9% 的过程,几乎全靠 gotcha 列表生长,而不是改描述或加更长的指令。一旦 PR 改描述却没附 evals,"已经走偏了"。 评测套件分四类 1. 加载评测:精度、召回、禁止加载(避免污染邻域) 2. 渐进加载评测:Skill 加载后是否正确读取附属文件(如 FORMATTING.md) 3. 端到端任务评测:跑完整 agent loop,用 LLM judge 按 rubric 打分 4. 跨模型评测:在 GPT / Opus / Sonnet 上同时跑(行为差异显著) # 关键 takeaway 1. 先 evals,后 Skill;负例与「禁止误载」与正例同等重要。 2. Description 是最难的一行,以 "Load when…" 起手。 3. Gotchas 是最高价值内容,从薄起步、随失败生长。 4. Action at a distance:新增 Skill 会悄无声息地降级现有 Skill —— 这是默认风险,不是边角情况。 5. 写 Skill 的能力本身在复利增长;任何按日/周/季重复的工作流,都是潜在 Skill。

Image 3: Image
Image 3: Image

Quote

Image 4: Square profile picture
Image 4: Square profile picture

Perplexity

@perplexity_ai

May 8

We've published our internal manual for building agent skills. Skills require a new way of thinking for developers. research.perplexity.ai/articles/desig