现在位置: 首页 > Pi Agent > 正文

Pi Agent 提示词模板

提示词模板是预定义的 Markdown 片段,通过简短命令即可展开为完整提示词,提高重复性工作的效率。


模板概述

提示词模板的工作方式很简单:

  1. 创建一个 Markdown 文件,定义模板内容
  2. 在编辑器中输入 /模板名 来调用
  3. 模板会自动展开并填入编辑器

模板支持参数替换,让同一个模板可以用于不同的具体场景。


创建模板

模板是带有 YAML Frontmatter 的 Markdown 文件。

文件名(不含 .md)即为模板的命令名。

创建一个代码审查模板:

实例

---
description: 审查当前的 git 暂存变更
---
审查暂存区中的更改(git diff --cached),重点关注:
- 潜在的 bug 和逻辑错误
- 安全问题
- 错误处理和边界情况
- 性能问题

保存到 ~/.pi/agent/prompts/review.md 后,在编辑器中输入 /review 即可展开使用。


模板位置

位置作用范围
~/.pi/agent/prompts/*.md全局模板,所有项目可用
.pi/prompts/*.md项目模板,需项目信任后才加载
Pi Packages 的 prompts/ 目录包中的模板
--prompt-template 路径命令行临时加载

参数系统

模板支持丰富的参数系统,让同一个模板适应不同场景:

语法含义示例
$1, $2, $3...位置参数$1 代表第一个参数
$@ 或 $ARGUMENTS所有参数的合并将所有参数用空格连接
${1:-默认值}带默认值的参数参数存在时使用参数,否则用默认值
${@:N}从第 N 个参数开始${@:2} 取第 2 个起的所有参数
${@:N:L}从第 N 个起取 L 个${@:2:3} 取第 2-4 个参数

带参数模板示例

实例

---
description: 使用指定框架和技术栈创建组件
argument-hint: "<组件名> [功能描述]"
---
使用 $1 框架创建一个 $1 组件,功能包括:$@

使用方式:

/component Button "onClick 事件处理" "disabled 状态支持" "loading 加载状态"

展开后的效果:

使用 Button 框架创建一个 Button 组件,功能包括:onClick 事件处理 disabled 状态支持 loading 加载状态

默认值示例

实例

---
description: 总结当前项目状态
---
用 ${1:-5} 个要点总结当前项目的主要变更和状态。

使用 /summarize 时默认输出 5 个要点。

使用 /summarize 10 时输出 10 个要点。


argument-hint 参数提示

在 Frontmatter 中设置 argument-hint 可以帮助用户了解模板需要的参数:

实例

---
description: 从 URL 审查 PR,分析代码和问题
argument-hint: "<PR-URL>"
---
审查以下 PR 的代码变更,重点关注安全性和性能问题:$1

在自动补全下拉菜单中,这个模板会显示为:

→ pr   &lt;PR-URL&gt;  — 从 URL 审查 PR,分析代码和问题

使用 <尖括号> 表示必填参数,[方括号] 表示可选参数。


实用模板示例

Git 提交信息生成

实例

---
description: 根据 git diff 生成规范的提交信息
---
查看 git diff --cached 的内容,生成一条规范的 git commit 信息。
遵循 Conventional Commits 规范,格式:type(scope): description
类型包括:feat, fix, refactor, docs, test, chore

代码重构请求

实例

---
description: 重构指定的代码模块
argument-hint: "<文件路径或模块名>"
---
重构 $1 的代码,目标:
1. 提高代码可读性
2. 消除重复代码
3. 改善错误处理
4. 保持现有功能不变

修改前请先说明你的重构计划。

Bug 修复请求

实例

---
description: 系统性排查和修复指定的 Bug
argument-hint: "<Bug 描述>"
---
我需要你帮我排查和修复以下 Bug:$1

请按照以下步骤进行:
1. 先理解 Bug 的预期行为和实际行为
2. 找到相关的代码文件
3. 分析可能的原因
4. 提出修复方案
5. 实现修复
6. 验证修复是否正确

在每一步都要说明你的发现和推理。

模板加载规则

  • prompts/ 目录中的模板发现是非递归的,子目录中的模板不会被自动发现
  • 如果需要加载子目录中的模板,需要在 settings.json 的 prompts 数组中显式添加路径
  • 如果 description 为空,Pi Agent 会使用文件的第一行非空文本作为描述
  • 可以通过 --no-prompt-templates 禁用模板的自动发现,但显式用 --prompt-template 指定的模板仍会加载