Pi coding agent入门:第 8 课:提示词模板与技能
第 8 课:提示词模板与技能
pi 最实用的两个自定义功能:提示词模板(可复用的提示词)和技能(按需加载的能力包)。
提示词模板:你保存的提示词
提示词模板是一个 Markdown 文件,输入 /名称 时展开成完整提示词。放置位置:
- 全局:
~/.pi/agent/prompts/*.md - 项目:
.pi/prompts/*.md(信任后) - 或通过设置的
prompts数组 / 一个包
格式 — 文件名即命令名:
<!-- review.md -->
---
description: Review staged git changes
---
Review the staged changes (`git diff --cached`). Focus on:
- Bugs and logic errors
- Security issues
- Error handling gaps
用法:在编辑器输入 /review 就会展开成完整提示词。description 会显示在自动补全里(缺省时用第一行非空内容)。加 argument-hint 可以显示期望的参数。
参数让模板更强大:
---
description: Create a component
---
Create a React component named $1 with features: $@
$1、$2— 位置参数$@/$ARGUMENTS— 全部参数拼接${1:-default}— 带默认值的参数${@:2}— 从第 2 位开始的参数;${@:2:3}— 从第 2 位开始取 3 个
用法:/component Button "click handler"。一个不错的模式:${1:-7} 表示"除非我另说,否则用 7 个要点"。
技能:能力包
技能是自包含的目录——SKILL.md 加上可选的脚本、参考资料和资源——遵循 Agent Skills 标准。它们给 pi 提供程序性知识:设置步骤、工作流指令、任务领域的辅助脚本。
pdf-tools/
├── SKILL.md # frontmatter + 指令
├── scripts/extract.js
└── references/api.md
Frontmatter(name 和 description 必填):
---
name: pdf-tools
description: Extracts text and tables from PDF files, fills forms, and merges PDFs. Use when working with PDF documents.
---
# PDF Tools
## Setup
```bash
cd /path/to/skill && npm install
Usage
./scripts/extract.js input.pdf
```
description 就是一切——代理根据它决定何时加载技能,所以要具体说明何时使用("处理 PDF 文档时使用"),不要含糊("帮处理 PDF")。
加载机制(渐进式披露): 启动时 pi 扫描技能位置,只把名称和描述放进系统提示词。任务匹配时,代理读取完整的 SKILL.md 并遵循它。这就是为什么描述必须精确——它是触发器。
位置: ~/.pi/agent/skills/、.agents/skills/、.pi/skills/、.agents/skills/(从 cwd 向上查找),以及包和设置的 skills 数组。也可以显式加载:--skill <path>。
调用: 技能注册为 /skill:name 命令(通过设置的 enableSkillCommands 开关)。/skill:pdf-tools extract file.pdf 会加载技能并把参数追加为 User: <args>。否则模型会在相关时自动调用它们。
安全提示: 技能可以指示模型做任何事,并且可能包含可执行代码。使用前审查技能内容,就像审查你要运行的任何软件一样。
现在就来试试
- 创建
~/.pi/agent/prompts/review.md(上面的 git 审查模板)。 /reload,然后输入/review——观察它展开。- 安装一个技能仓库:
pi install git:github.com/badlogic/pi-skills(网页搜索、浏览器自动化、转录)或pi install git:github.com/anthropics/skills(docx/pdf/pptx/xlsx 处理)。
作业: 为你反复做的事情构建一个提示词模板(代码审查、提交信息、发布说明)。然后安装 Anthropic 技能,在真实文档上试试 /skill:docx。