第 6 章 进阶功能
学完本章,你将掌握 GA 的五种进阶能力——自主行动、定时任务、反射模式、子代理和 Plan 模式。
🎯 学习目标
- 学会让 GA 在你离开时自主执行任务,回来看报告
- 掌握定时任务的创建与管理
- 理解反射模式的三要素,能让 GA 创建自定义反射脚本
- 学会用子代理并行处理独立任务
- 知道 Plan 模式何时触发,能审查和跟踪执行计划
6.1 自主行动模式(Autonomous)
睡前给 GA 留一张任务清单,醒来报告就写好了——这就是自主行动模式。
三步上手
第一步:写任务清单
直接用自然语言告诉 GA:
你:帮我在自主行动的 TODO 里添加一条:整理桌面上所有的 PDF 文件,按年份分到不同文件夹。GA 会把任务写入 temp/TODO.txt。你可以一次添加多条,但 GA 每次只做一条,按顺序从上往下取第一条未完成的。
任务描述写得越具体越好。"整理文件"太模糊,"把桌面 PDF 按年份分到 ~/Documents/PDF/2024、2025 子文件夹"才够清晰。
💡 TODO.md 长什么样
- [ ] 整理桌面上所有的 PDF 文件,按年份分到不同文件夹
- [ ] 把 Downloads 里超过 30 天的文件归档到 Archive
- [x] 清理 temp 目录下的过期缓存文件第二步:离开电脑
不需要额外操作。GA 检测到超过 30 分钟没收到你的消息,就会自动从 TODO 取任务开始执行。
第三步:回来看报告
回来后直接问 GA "你刚才做了什么",或者去 temp/autonomous_reports/ 看报告文件。报告自动编号,比如 R3_整理PDF文件.md,包含执行摘要、操作详情和遇到的问题。
权限边界
| 可以自主做 | 写在报告里等你确认 | 绝对不会做 |
|---|---|---|
| 读取分析文件 | 修改 GA 的记忆和 SOP | 读取密钥文件 |
| 在临时目录写文件、跑脚本 | 安装新软件 | 修改 GA 核心代码 |
| 调用已有的 Skill | 调用外部 API | 不可逆的危险操作 |
| 写执行报告 | 删除非临时文件 |
遇到拿不准的事,GA 会记在报告里等你回来决定,不会擅自做主。
6.2 定时任务(Scheduled Task)
每天早上 8 点自动抓新闻、每周五整理文件——设好时间,GA 准时开干。
创建一个定时任务
直接用自然语言告诉 GA:
帮我创建一个定时任务,每天早上 9 点整理 Downloads 文件夹里的新文件,按类型分类。GA 会在 sche_tasks/ 目录下生成一个 JSON 配置文件。
💡 配置文件长什么样
{
"schedule": "09:00",
"repeat": "daily",
"enabled": true,
"prompt": "整理 Downloads 文件夹里的新文件,按文件类型分到对应子文件夹里",
"max_delay_hours": 3
}每个字段的含义:
| 字段 | 说明 | 示例 |
|---|---|---|
schedule | 每天几点触发 | "09:00" |
repeat | 重复方式 | 见下方表格 |
enabled | 是否启用 | true / false |
prompt | GA 要执行的指令 | 你想让它做什么,写清楚 |
max_delay_hours | 最大延迟窗口 | 默认 6,超过这个时间没开机就跳过 |
repeat 支持以下几种写法:
| 值 | 含义 |
|---|---|
"daily" | 每天 |
"weekday" | 仅工作日(周一到周五) |
"weekly" | 每周 |
"monthly" | 每月 |
"once" | 只执行一次 |
"every_3h" | 每 3 小时 |
"every_30m" | 每 30 分钟 |
"every_2d" | 每 2 天 |
max_delay_hours:任务定在 8 点但你 12 点才开机,设了 3 就会跳过,避免执行过时任务。
管理定时任务
问 GA "我的定时任务都什么情况?" 可以查看所有任务状态。
告诉 GA "暂停整理文件那个定时任务" 即可暂停,GA 会把 JSON 里的 enabled 改为 false。恢复、删除同理,直接说就行。
查看执行报告
每次定时任务执行完,报告会自动保存在 sche_tasks/done/ 目录下,文件名格式:
sche_tasks/done/2026-04-17_0900_整理文件.md报告里包含本次执行了什么、结果如何。你可以直接去这个目录翻看,也可以问 GA "上次定时任务的报告呢?"。
注意事项
- GA 必须在运行:关了 GA 或电脑关机,定时任务不会执行
- 多窗口不冲突:开了多个 GA 窗口也只有一个调度器在工作
- 任务 JSON 在
sche_tasks/,报告在sche_tasks/done/,不要和temp/autonomous_reports/搞混
6.3 反射模式(Reflect)
条件满足时自动触发任务,不用你盯着——这就是反射模式。
反射脚本的三个要素
所有反射脚本放在 reflect/ 文件夹下,每个都是一个 Python 文件。打开最简单的 reflect/autonomous.py:
# reflect/autonomous.py
INTERVAL = 1800 # 每 1800 秒(30 分钟)检查一次
ONCE = False # 持续检查,不是只查一次
def check():
return "[AUTO]🤖 用户已经离开超过30分钟,作为自主智能体,请阅读自动化sop,执行自动任务。"| 要素 | 作用 | 示例值 |
|---|---|---|
INTERVAL | 多久检查一次(秒) | 1800 = 30 分钟,600 = 10 分钟 |
ONCE | True = 触发一次就停,False = 持续监测 | False |
check() | 返回字符串 → 触发任务;返回 None → 本轮跳过 | 见上方代码 |
💡 前面学的自主行动(6.1)和定时任务(6.2)本质上都是反射脚本——
autonomous.py和scheduler.py就在reflect/目录里。你可以用ls reflect/查看所有现有脚本。
创建自定义反射脚本
直接告诉 GA 你想监测什么:
你:帮我写一个反射脚本,每 10 分钟检查桌面有没有新的 .csv 文件,有的话自动做数据分析,然后启动它。GA 会自动完成创建和启动,你不需要自己写代码或敲命令。脚本支持热更新:修改后不用重启,下次检查时自动加载新版本。
6.4 子代理模式(Subagent)
把任务分给独立的"分身"去做,主 GA 只管分配和收结果。
启动一个子代理
最简单的方式——直接告诉 GA:
你:帮我用子代理分析 ~/Documents/report.pdf,提取关键结论写成摘要。GA 会自动创建工作目录、写入任务描述、启动子代理。你不需要手动操作。
💡 GA 底层实际执行了什么
python3 agentmain.py --task analyze_report --input "分析 report.pdf,提取关键结论" --bg| 参数 | 作用 |
|---|---|
--task 名称 | 指定任务名,同时决定工作目录 temp/analyze_report/ |
--input "描述" | 任务描述(短文本直接传,长文本先写 input.txt) |
--bg | 后台运行,主 GA 不用等它做完 |
--llm_no N | 指定用第几个模型配置(可选) |
查看进度和干预
直接问 GA 就能查看子代理的进度,比如 "分析报告那个子代理做完了吗?"。
如果需要干预,也可以告诉 GA,比如 "让分析报告的子代理停下来" 或 "告诉那个子代理重点关注第三章"。
💡 子代理的工作目录结构
子代理的所有文件都在 temp/{任务名}/ 目录下:
temp/analyze_report/
├── input.txt # 任务描述(GA 自动生成)
├── output.txt # 执行日志和结果(看到 [ROUND END] 表示完成)
├── context.json # 文件路径清单(可选,用于复杂任务)
└── reply.txt # 你可以写追加指令,子代理会继续执行GA 通过在工作目录下创建特殊文件来干预子代理:
| 文件 | 效果 |
|---|---|
_stop | 当前轮结束后停止 |
_keyinfo | 写入重要信息,子代理下轮会读到 |
_intervene | 写入新指令,子代理会调整方向 |
并行限制
多个子代理可以同时运行,但有一条硬约束:
- ✅ 纯文件处理(分析、生成、转换)→ 放心并行
- ❌ 需要浏览器或键鼠→ 必须排队,一个做完再做下一个
💡 写好子代理输入的技巧
好的输入只需要四样东西:
- 做什么:任务目标和产出物
- 约束:格式要求、工具限制等
- 输入文件:用绝对路径
- 输出位置:结果写到哪
不要写执行步骤——子代理和主 GA 一样聪明,会自己规划怎么做。
6.5 Plan 模式(复杂任务规划)
步骤多、有依赖、要并行——GA 会先写计划给你确认,再按步骤逐个执行。
什么时候会触发
你不需要手动开启 Plan 模式。当任务足够复杂时,GA 会自动进入。比如:
你:帮我把项目里所有 JavaScript 文件迁移到 TypeScript,保持功能不变,更新所有 import 路径。这种任务涉及多文件、有依赖关系,GA 会自动走 Plan 模式。一般来说,满足以下任一条件就会触发:
- 步骤超过 3 个,且步骤之间有先后依赖
- 需要同时读取或修改多个文件
- 包含条件分支("如果 X 就做 Y,否则做 Z")
简单的 1-2 步任务,GA 会直接做,不走 Plan 模式。
Plan 模式的五个阶段
探索 → 规划 → 你确认 → 执行 → 验证① 探索:GA 派一个子代理去摸底——有什么文件、缺什么条件、有什么风险。子代理只看不改,把结论写成一份探索报告。
② 规划:基于探索报告,GA 写出 plan.md,列出每一步做什么、用什么 SOP、依赖哪一步。
③ 你确认:GA 把计划展示给你,等你说"可以"才开始执行。你可以要求修改步骤、调整顺序、补充遗漏。
④ 执行:逐步执行,每完成一步打 [✓] 标记。搬砖量大的步骤会自动委托给子代理。
⑤ 验证:全部执行完后,GA 启动一个独立的验证子代理来"挑毛病"。验证通过才算完成;失败则自动修复后重新验证。
审查计划时看什么
GA 给你展示 plan.md 后,重点关注三件事:
- 有没有遗漏? 你想做的事是否都覆盖了
- 顺序对不对? 有依赖关系的步骤是否排在前面
- 风险步骤有没有标出? 不可逆操作是否有保护措施
觉得哪里不对,直接告诉 GA 你的想法:
你:第 3 步应该在第 2 步之前,而且缺少备份这一步。GA 会修改计划后再次让你确认。
跟踪执行进度
执行过程中 GA 不会主动停下来汇报。想知道做到哪了,随时问:
你:现在执行到哪一步了?GA 会读取 plan.md,告诉你哪些步骤已经打了 [✓]、当前在做哪一步。
📖 plan.md 里的步骤标记含义
| 标记 | 含义 |
|---|---|
[ ] | 待执行 |
[D] | 委托给子代理执行(搬砖量大的步骤) |
[P] | 并行执行(同时启动多个子代理) |
[?] | 条件分支(根据结果选路径) |
[✓] | 已完成 |
[✗] | 已失败并跳过 |
[SKIP] | 因依赖步骤失败而跳过 |
[FIX] | 验证失败后追加的修复步骤 |
[VERIFY] | 强制验证步骤,不可跳过 |
📖 验证失败后会怎样
验证子代理会给出三种判定之一:
- PASS:结果可用,任务完成
- FAIL:有问题。GA 会把修复步骤追加到 plan.md(标记
[FIX]),只修复失败项,修完后重新验证。最多重复 2 轮,仍然失败则请你介入 - PARTIAL:部分通过。GA 会告诉你哪些没过,由你决定是否可接受
📂 相关文件速查
| 内容 | 路径 |
|---|---|
| 自主行动 | |
| 任务清单 | temp/TODO.txt |
| 执行报告 | temp/autonomous_reports/R1_xxx.md |
| 行动 SOP | memory/autonomous_operation_sop.md |
| 定时任务 | |
| 任务配置 | sche_tasks/任务名.json |
| 执行报告 | sche_tasks/done/2026-04-17_0900_任务名.md |
| 调度日志 | sche_tasks/scheduler.log |
| 任务 SOP | memory/scheduled_task_sop.md |
| 反射模式 | |
| 反射脚本目录 | reflect/ |
| 执行日志 | temp/reflect_logs/ |
| 子代理 | |
| 任务描述 | temp/{任务名}/input.txt |
| 执行日志和结果 | temp/{任务名}/output.txt |
| 干预文件 | temp/{任务名}/ 下的 _stop / _keyinfo / _intervene |
| 子代理 SOP | memory/subagent.md |
| Plan 模式 | |
| 执行计划 | plan_XXX/plan.md(XXX 为任务英文短名) |
| 探索报告 | plan_XXX/exploration_findings.md |
| 验证上下文 | plan_XXX/verify_context.json |
| Plan 模式 SOP | memory/plan_sop.md |
📝 小结
- 自主行动:写 TODO → 离开 30 分钟 → GA 自动干活 → 回来看报告
- 定时任务:一句话创建,JSON 配置,
sche_tasks/done/看报告 - 反射模式:三要素(
INTERVAL+ONCE+check()),自主行动和定时任务的底层机制 - 子代理:独立"分身"并行处理,纯文件任务可同时跑,浏览器任务要排队
- Plan 模式:复杂任务自动触发,探索 → 规划 → 确认 → 执行 → 验证
