从PAI项目学到的Agent Skill模板:5分钟搭建个人代理工作流

danielmiessler 的 Personal_AI_Infrastructure 项目两天涨了1.5万星,核心思路是把AI代理当作基础组件来组装。但大多数人克隆下来后不知道从哪开始——项目更多是目录结构和配置骨架,缺一个开箱即用的Agent Skill示例

我把它翻译成自己习惯的「Skill封装」方式:定义触发条件 → 写系统指令 → 挂载工具和记忆 → 设定输出格式。下面直接给模板,你改下角色和工具就能跑。

personal AI agent skill structure diagram

这个Skill解决什么问题

个人需要AI代理处理日常事务(信息聚合、文档总结、日程协调),但每次都要重新写Prompt,且无法复用之前的配置。这个Skill提供一个标准化的代理启动器,你只需修改两处变量(角色描述、工具列表)就能得到一个自主决策的Agent。

触发条件与适用场景

  • 触发方式:系统时间触发(每日特定时段)或事件触发(新文件/新消息)。
  • 适用场景:个人信息助理、研究简报生成、代码审查代理、写作辅助。
  • 不适用:需要高实时性或低延迟(100ms以下)的场景。

完整Skill结构(SKILL.md)

这是你项目里应该有的SKILL.md文件,包含了Agent的定义、触发规则和系统Prompt。

yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
name: personal_agent_starter
description: 可复用的个人AI代理技能,自行设定角色和工具
trigger:
  type: cron
  schedule: "0 9 * * *"          # 每天早上9点自动执行
  context: "用户日常任务代理"
models:
  main: "gpt-4o"                # 推理模型
  fast: "gpt-4o-mini"            # 轻量模型(用于工具调用过滤)
tools:
  - search_web
  - read_file
  - write_file
  - calendar_query               # 自行注册的函数
memory:
  type: vector_semantic
  path: ./personal_knowledge
steps:
  - step: gather_context
    prompt: "读取用户最近3条未读消息和日历事件"
  - step: decide_action
    prompt: "根据上下文决定下一步动作"
  - step: execute
    prompt: "调用工具完成行动并输出结果"
output_format: markdown_report
---
# 系统提示
你是一个个人AI代理,能力边界由以下工具和知识库定义。
每次交互请先思考:
1. 用户真正需要什么?
2. 手头有哪些工具可用?
3. 是否需要补充信息?

工具列表:
- search_web(query): 返回最新网络结果摘要
- read_file(path): 读取本地文件内容
- write_file(path, content): 写入文件
- calendar_query(date): 查询指定日期的日历事件

内存:记住用户偏好和历史操作。

输出格式:
```markdown
## 动作报告
- 目标:...
- 使用工具:...
- 结果:...
- 下一步建议:...

如果无法完成,明确告知用户缺少哪些权限或工具。

text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

## 实际案例演示

假设你是一名技术写作者,需要每天整理AI领域新闻并写入本地的“daily_brief.md”。
**Skill启动后**,Agent会自动执行:
1. 调用`calendar_query`查看今天是否有会议冲突
2. 调用`search_web("AI startups funding today")`抓取最新信息
3. 调用`read_file("./daily_brief.md")`获取已有内容,避免重复
4. 用`write_file`追加新内容

效果:每天早上打开文件就看到一份结构化简报。

## 差Prompt vs 好Prompt

### 差 Prompt

你是一个AI代理,帮我收集今天AI新闻并保存到文件。

text
1 2 3 4 5 6 7 8 9 10 11
- **问题**:没定义工具、没限制步骤、输出格式随意。模型可能自行捏造数据,也可能拒绝执行(没有文件写入权限)。

### 好 Prompt(来自上面SKILL.md)
```markdown
你是一个个人AI代理,能力边界由以下工具定义:
- search_web(query): 返回最新网络结果
- write_file(path, content): 写入文件

步骤:1. 搜索今天AI融资新闻;2. 按分类整理;3. 写入./daily_brief.md。
输出格式:Markdown,包含来源链接。
如果搜索失败或写入失败,请说明原因。
  • 效果:模型明确知道调用什么、如何输出、失败怎么处理。无需猜测。

为什么好Prompt有效?因为Agent的“智力”很大程度来自边界清晰。差Prompt给了无限自由,模型容易偏离轨道;好Prompt把决策空间缩小到工具和步骤内,反而更容易产生可靠结果。

复用与组合技巧

  1. 更换角色:将system prompt第一句改成“你是一个xxx”,比如“你是一个代码审查代理”。
  2. 增删工具:工具列表决定了能力。注意每个工具要写签名(参数+返回值)。
  3. 组合多个Skill:在SKILL.md的trigger中嵌套另一个Skill的调用,形成管道。比如“先执行信息收集Skill,再执行摘要Skill”。
  4. 多模型分配:复杂推理用gpt-4o,简单工具筛选用gpt-4o-mini节省成本。

变体1:研究写作Agent

修改角色为“研究助理”,工具添加“read_paper()”“generate_bib()”。

变体2:日程管家

角色为“日程管家”,工具添加“calendar_create_event()”“send_email()”,触发条件改为“当收到新邮件通知”。

变体3:代码审查Agent

角色为“高级开发者”,工具添加“git_diff()”“eslint()”。

最后说两句

Personal_AI_Infrastructure 的方向是对的——把AI代理当成模块化的基础设施,但它的价值不是仓库里的代码,而是你基于它提炼出来的工作流模板。上面这个Skill设计,我用了10分钟写完,你改两处就能跑。拿到自己的项目里,你才真正拥有了“个人AI基础设施”。

别只当读者,动手改一两行就变成你自己的了。