Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

自动化与工作流

你可能遇到过这种情况

每周五下午,你都要做同样的事:

  1. 检查本周所有会话,看看改了哪些文件
  2. 跑一遍测试,确保没有回归
  3. 检查是否有未提交的代码
  4. 写周报——总结本周进展

每次都要手动提醒 AI 做这些事。有时候忘了,周一回来发现上周五的改动没提交。

💡 AI 能做事,但它不会“主动“做事。它需要你告诉它“现在该做什么“。

两件工具:Scheduler 和 Workflow

pi-scheduler — 定时任务

Scheduler(调度器)让 AI 在指定的时间做指定的事:

定时触发
     │
     ▼
┌──────────────────┐
│  注入预设消息      │
│  "现在是周五下午,  │
│   请执行周度检查"  │
└──────────────────┘
     │
     ▼
  AI 自动执行

支持的定时类型:

类型说明示例
一次性指定时间后触发一次“30 分钟后提醒我开会”
重复按固定间隔重复触发“每 2 小时检查一次测试”

pi-workflow — 子代理编排

Workflow(工作流)让 AI 把复杂任务拆成多个子代理并行执行:

主代理:"研究一下 XXX 的最佳实践"
     │
     ├──→ 子代理 1:搜索网页资料
     ├──→ 子代理 2:搜索 GitHub 源码
     └──→ 子代理 3:搜索历史会话
          │
          ▼
     主代理:综合三个子代理的结果,给出建议

子代理是独立的执行环境:

  • 有自己的上下文窗口(不会污染主会话)
  • 有自己的工具集(可以限制权限)
  • 执行完返回结果给主代理

实际案例:自动周报

配置每周五的自动检查

{
  "action": "create",
  "interval_ms": 604800000,
  "recurring": true,
  "prompt": "现在是周五下午。请执行以下检查:\n1. 用 session_search 查看本周所有会话\n2. 用 session_analyze summary 总结每个会话\n3. 检查 git status 是否有未提交的改动\n4. 汇总生成周报并写入 .pi/journal/weekly-summary.md\n5. 提醒用户提交未提交的代码"
}

每周五,AI 会自动:

  1. 搜索本周所有会话
  2. 逐个生成摘要
  3. 检查 git 状态
  4. 生成周报
  5. 提醒你提交

定时提醒的日常使用

用户:"30 分钟后提醒我看看 CI 的结果"
AI:✅ 已创建定时任务,30 分钟后提醒

... 30 分钟后 ...

AI:⏰ 提醒:该检查 CI 结果了。当前时间 15:30。

实际案例:子代理研究

场景:调研一个新技术的最佳实践

你说:“调研一下 Bun 和 Node.js 的性能差异,给我一个选型建议。”

AI 启动研究工作流:

🔬 研究工作流启动

子代理 1(搜索专家):
  → 搜索 "Bun vs Node.js performance benchmark 2026"
  → 找到 5 篇技术文章
  → 提取关键数据点

子代理 2(源码专家):
  → 搜索 Bun 的 GitHub 仓库
  → 查看 benchmark 目录
  → 查看 issue 中的性能讨论

子代理 3(历史专家):
  → 搜索本项目历史会话
  → 看看之前有没有讨论过类似选型

─────────────────────────

主代理综合报告:

📊 Bun vs Node.js 选型建议

1. 性能对比:
   - HTTP 吞吐:Bun 快 3-4x
   - 启动时间:Bun 快 5x
   - npm 兼容性:Node.js 更好(Bun 95% 兼容)

2. 本项目建议:继续用 Node.js
   - 理由:项目依赖了多个 Node.js 原生模块
   - Bun 的兼容性问题可能导致额外维护成本
   - 性能差异对本项目影响不大(IO 密集型)

子代理的优势

特性单代理(普通对话)多代理(Workflow)
上下文隔离所有信息混在一起每个子代理独立
并行执行串行,一个一个来可并行搜索
错误隔离一个环节出错影响全局子代理出错不影响其他
Token 效率所有信息都在主上下文只有最终结果回到主上下文

Scheduler 的配置

通过 settings.json 安装:

{
  "packages": ["pi-scheduler"]
}

工具提供三个操作:

操作说明参数
create创建定时任务interval_ms, prompt, recurring
list查看所有任务
cancel取消任务id

常用的时间间隔

间隔interval_ms用途
30 分钟1,800,000短期提醒
2 小时7,200,000定期检查
每天86,400,000日报/日检查
每周604,800,000周报/周检查

Workflow 的配置

通过 settings.json 安装:

{
  "packages": ["pi-workflow"]
}

Workflow 提供两个核心概念:

  1. 因子研究(Factor Research):多轮搜索 + 评估 + 综合
  2. 因子优化(Factor Optimization):初筛 + 解剖 + 组合 + 迭代 + 验证

通常你不需要直接操作 Workflow——AI 会根据任务复杂度自动选择是否启用子代理。

最佳实践

✅ 好的定时任务设计

  • 明确的指令:告诉 AI 具体要做什么,不要模糊的“检查一下“
  • 合理的间隔:不要每 5 分钟检查一次(浪费资源)
  • 有意义的触发:提醒应该是“该做 X 了“,而不是“你在吗“

✅ 好的子代理设计

  • 单一职责:每个子代理只做一件事
  • 明确的输出:子代理应该返回结构化的结果,不是自由文本
  • 适度的并行:3-5 个子代理是甜蜜点,太多会增加综合难度

❌ 常见误区

  • “定时任务可以替代所有手动操作” → 不行,复杂决策还是需要人参与
  • “子代理越多越好” → 太多子代理的综合成本可能超过收益
  • “Workflow 可以做任何事” → 它擅长研究和分析,不适合需要人工判断的决策

下一步

到目前为止,我们介绍了 pi-atelier 提供的所有核心工具。但如果这些工具还不够——你想做一个当前没有的功能呢?

下一章,我们来看如何自己动手开发扩展

English