跳转到内容

技能

pi 可以创建技能。告诉它你的使用场景,让它为你构建一个。

技能(skill)是自包含的能力包,由智能体按需加载。技能为特定任务提供专门的工作流程、安装说明、辅助脚本和参考文档。

Pi 实现了 Agent Skills 标准,对大多数违规行为发出警告但保持宽容。Pi 允许技能名称与其父目录不同,尽管标准禁止这样做;该规则对于在多个智能体执行框架(harness)间共享的技能目录并不理想。

安全: 技能可以指示模型执行任何操作,并可能包含模型调用的可执行代码。使用前请审查技能内容。

Pi 从以下位置加载技能:

  • 全局:
    • ~/.pi/agent/skills/
    • ~/.agents/skills/
  • 项目(仅当项目受信任后):
    • .pi/skills/
    • cwd 及祖先目录中的 .agents/skills/(向上到 git 仓库根目录,不在仓库中时为文件系统根目录)
  • 包:skills/ 目录或 package.json 中的 pi.skills 条目
  • 设置:包含文件或目录的 skills 数组
  • CLI:--skill <path>(可重复,即使使用 --no-skills 也会叠加生效)

发现规则:

  • ~/.pi/agent/skills/.pi/skills/ 中,根目录下的 .md 文件会被识别为单个技能
  • 在所有技能位置中,包含 SKILL.md 的目录会被递归发现
  • ~/.agents/skills/ 和项目 .agents/skills/ 中,根目录下的 .md 文件会被忽略

使用 --no-skills 禁用发现(显式指定的 --skill 路径仍然会加载)。

要使用 Claude Code 或 OpenAI Codex 的技能,将它们的目录添加到设置中:

{
"skills": [
"~/.claude/skills",
"~/.codex/skills"
]
}

对于项目级的 Claude Code 技能,添加到 .pi/settings.json

{
"skills": ["../.claude/skills"]
}
  1. 启动时,pi 扫描技能位置并提取名称和描述
  2. 系统提示词按规范以 XML 格式包含可用技能
  3. 当任务匹配时,智能体使用 read 加载完整的 SKILL.md(模型并不总是这样做;使用提示词或 /skill:name 强制加载)
  4. 智能体遵循指令,使用相对路径引用脚本和资源

这是渐进式披露:只有描述始终在上下文中,完整指令按需加载。

技能注册为 /skill:name 命令:

Terminal window
/skill:brave-search # 加载并执行技能
/skill:pdf-tools extract # 带参数加载技能

命令后的参数会作为 User: <args> 附加到技能内容。

在交互模式中通过 /settings 或在 settings.json 中切换技能命令:

{
"enableSkillCommands": true
}

技能是一个包含 SKILL.md 文件的目录。其他一切都可自由组织。

my-skill/
├── SKILL.md # 必需:frontmatter + 指令
├── scripts/ # 辅助脚本
│ └── process.sh
├── references/ # 按需加载的详细文档
│ └── api-reference.md
└── assets/
└── template.json
---
name: my-skill
description: What this skill does and when to use it. Be specific.
---
# My Skill
## Setup
Run once before first use:
```bash
cd /path/to/skill && npm install
```
## Usage
```bash
./scripts/process.sh <input>
```

从技能目录使用相对路径:

See [the reference guide](references/REFERENCE.md) for details.

根据 Agent Skills 规范

字段 必需 描述
name 最长 64 字符。仅限小写 a-z、0-9 和连字符。与标准不同,Pi 不要求名称与父目录一致,因为该标准要求对共享的技能目录并不理想。
description 最长 1024 字符。描述技能的功能及使用时机。
license 许可证名称或对捆绑文件的引用。
compatibility 最长 500 字符。环境要求。
metadata 任意键值映射。
allowed-tools 预先批准的工具列表,以空格分隔(实验性)。
disable-model-invocation true 时,技能从系统提示词中隐藏。用户必须使用 /skill:name
  • 1-64 个字符
  • 仅限小写字母、数字、连字符
  • 不以连字符开头或结尾
  • 无连续连字符 Pi 不要求名称与父目录一致。Agent Skills 标准要求如此,但该要求对由多个工具共享的技能目录并不理想。

有效:pdf-processingdata-analysiscode-review 无效:PDF-Processing-pdfpdf--processing

描述决定智能体何时加载技能。请写得具体。

好的描述:

description: Extracts text and tables from PDF files, fills PDF forms, and merges multiple PDFs. Use when working with PDF documents.

糟糕的描述:

description: Helps with PDFs.

Pi 依据 Agent Skills 标准验证技能。大多数问题只会产生警告,技能仍会加载:

  • 名称超过 64 个字符或包含无效字符
  • 名称以连字符开头/结尾或含有连续连字符
  • 描述超过 1024 个字符

未知的 frontmatter 字段会被忽略。

例外: 缺少 description 的技能不会被加载。

名称冲突(不同位置出现同名技能)会产生警告,并保留最先找到的技能。

brave-search/
├── SKILL.md
├── search.js
└── content.js

SKILL.md:

---
name: brave-search
description: Web search and content extraction via Brave Search API. Use for searching documentation, facts, or any web content.
---
# Brave Search
## Setup
```bash
cd /path/to/brave-search && npm install
```
## Search
```bash
./search.js "query" # Basic search
./search.js "query" --content # Include page content
```
## Extract Page Content
```bash
./content.js https://example.com
```
  • Anthropic Skills - 文档处理(docx、pdf、pptx、xlsx)、Web 开发
  • Pi Skills - Web 搜索、浏览器自动化、Google API、转录