Skip to content

Latest commit

 

History

History
209 lines (145 loc) · 7.19 KB

File metadata and controls

209 lines (145 loc) · 7.19 KB

Perplexity Agent Skills 方法论补充

基于 Perplexity Research 公开文章《Designing, Refining, and Maintaining Agent Skills at Perplexity》(2026年5月)的实践总结 阅读时间:~15分钟 | 适用对象:营养指南skill开发者


一、核心哲学:Skill ≠ 代码 ≠ 文档

Perplexity 提出了与 Python 之禅截然相反的「Skill 之禅」:

代码之禅 Skill 之禅
Simple is better than complex Skill 是一个文件夹,不是一个文件。复杂度是特性。
Explicit is better than implicit 激活是隐式模式匹配。渐进式加载。
Sparse is better than dense 上下文是昂贵的。每 Token 最大化信号。
Special cases aren't special enough Gotchas 就是特殊案例(最高价值内容)。

核心教训:写给模型看的好Skill,和写给人看的好文档,是完全相反的东西。


二、Description:从"说明文档"到"分诊台护士"

2.1 错误示范(文档式)

description: "营养学 Skill — 基于《xxx指南》的科普对话助手,覆盖7条营养原则、4种中医证型、72套食谱..."

❌ 问题:这是描述"Skill是什么",不是告诉模型"什么时候该用"

2.2 正确示范(路由触发式)

description: >-
  Load when 用户提到痛风、高尿酸、尿酸高、嘌呤、大脚趾红肿热痛、
  或问"尿酸高能吃什么""痛风发作怎么办""XX食物嘌呤多少"。
  涵盖急性期/缓解期饮食、中医辨证施膳、食物嘌呤查询、食谱定制。

✅ 改进:

  • 用 "Load when..." 开头
  • ~50字以内
  • 从真实用户查询出发
  • 关键词覆盖主要触发场景

2.3 模式匹配 ≠ 关键词过滤

⚠️ 关键教训:Description 不是关键词黑名单,是上下文感知的模式匹配。

用户说 触发? 原因
"我尿酸高,想减肥" ✅ 触发 尿酸+减肥=需要提醒快速减肥风险
"我减肥,给个食谱" ❌ 不触发 无尿酸/痛风关键词
"我剧烈运动减肥后脚疼" ✅ 触发 剧烈运动→乳酸→可能诱发痛风

原则:不看单一关键词,看上下文组合。


三、Gotchas(避坑指南)—— 最高价值区域

3.1 什么是 Gotchas

模型最容易犯的错——不是"应该做什么",而是"千万别做什么"。

Perplexity方法论:每次模型犯错→加一条 gotcha。列表越长 skill 越强。

3.2 痛风 skill 的 10 条 gotchas(示范)

# 模型常见错误 正确做法
1 "植物嘌呤高不能吃" ❌ 植物嘌呤≠动物嘌呤,豆腐菠菜都可以吃
2 "急性痛风调整饮食就好" ❌ 必须立即就医,安全>一切
3 "红酒比白酒好" ❌ 所有酒精都升高尿酸
4 "海鲜煮熟嘌呤就少" ❌ 嘌呤是水溶性的,反而全溶汤里了
5 "苏打水能降尿酸" ❌ 效果微乎其微
6 "快速减肥降尿酸" ❌ 过快减肥反而诱发痛风
7 "不疼了就可以随便吃" ❌ 缓解期是降尿酸黄金窗口
8 不分年龄段给相同目标 ❌ 老人BMI/蛋白标准不同
9 维生素C当主要手段 ⚠️ 500mg/d可能有微弱效果,但非主流
10 听到"关节疼"不追问部位 ⚠️ 痛风80%首发大脚趾

3.3 Gotchas 写作规范

  • 每条 = 一个具体的模型错误 + 正确的纠正
  • 写"千万别做 X",不写"应该做 Y"
  • 从真实测试中积累——第一次犯错就加一条
  • 放在 SKILL.md 中独立 ## ⚠️ Gotchas 区域

四、EXAMPLES.md — 5正+3负对话示例

4.1 为什么需要 EXAMPLES.md

  • 正面示例:引导模型正确的回答格式和深度
  • 负面示例:防止模型在不该触发时触发

4.2 负面示例的边界情况

⚠️ 关键教训:负面示例不是"永远不触发",而是"在什么情况下不触发"。

## ❌ 负面示例:通用减肥咨询(但有边界!)

一般不触发:
- "我想减肥,给个食谱" → 无尿酸关键词

但以下情况需要触发:
- "剧烈运动减肥" → 乳酸→抑制尿酸排泄
- "减肥+尿酸高" → 快速减肥诱发痛风

追问清单:
1. 尿酸控制得怎么样?
2. 最近有没有关节不适?
3. 打算怎么运动?多强?

4.3 示例编写清单

  • 5个正面示例:覆盖最常见场景
  • 3个负面示例:覆盖最容易误触发的场景
  • 每个负面示例都有"边界情况"说明
  • 示例包含追问逻辑(患者不说≠不需要问)

五、QUICK_REFERENCE.md — 一页速查卡

5.1 用途

  • 回答80%常见问题,无需翻KPK文件
  • 降低模型对重度知识库的依赖
  • 减少上下文消耗

5.2 结构模板

# [疾病]营养速查卡

## 📊 诊断标准
## 🎯 控制目标
## 🔴 核心分类(如嘌呤四级)
## 🍽️ 每日核心指标
## ❌ 饮食硬禁忌
## 🟢 可以放心吃的
## 🧠 常见误区(= mini gotchas)
## 🌿 中医证型速查
## 📞 安全红线

六、渐进式三级加载

Perplexity 定义了三级上下文成本:

层级 加载内容 预算 何时付费
Index skill.yaml 的 name+description ~100 tokens/Skill 每次对话
Load SKILL.md 正文 ~5000 tokens skill触发时
Runtime KPK文件、食谱数据 无上限 模型按需读取

营养skill映射

文件 层级 说明
skill.yaml → description Index 路由触发(极简,每token都珍惜)
system_prompt.md + KPK正文 Load 核心知识(<5000 tokens)
recipes_data.md + dietary_formulas.md Runtime 重数据按需查阅

七、主动追问模式

7.1 原则

患者不说 ≠ 不需要问。

好的营养师助手应该像好的营养师一样——追问边界情况。

7.2 追问场景示例

用户说 追问
"我想减肥" "尿酸控制得怎么样?最近有没有关节不适?"
"我最近运动多了" "什么类型的运动?强度多大?运动后关节有不适吗?"
"我尿酸正常了" "停药了吗?最近一次检查是什么时候?"
"我喝了点酒" "什么酒?喝了多少?有没有关节不适?"

八、总结:Perplexity方法论的核心原则

  1. Description 是路由触发器,不是说明文档 → "Load when..." 格式
  2. Gotchas 是最高价值内容 → 模型每犯一次错就加一条
  3. 负面示例要有边界说明 → 不是"永远不触发",是"在什么情况下不触发"
  4. 主动追问 → 患者不说≠不需要问
  5. 渐进式加载 → Index→Load→Runtime,每层都精打细算
  6. "没有这句话,模型会犯错吗?" → 不会就删。每句话都是一笔税。

参考来源: