📖 本文是「解剖 AI Agent」系列的第 4 篇(完结)。← 上一篇:AI Agent 的安全风险
前几篇谈了 AI Agent 的基本原理和记忆系统。但光是能对话和记东西,还不足以让 Agent 成为真正的自动化助理。
要让 AI 能够独立处理复杂任务、24 小时不间断运作,还需要三个关键机制:Skill(技能)、Sub-agent(分身) 和 Cron(调度)。
Skill:AI 的工作手册
请 AI 做一件复杂的事(比如制作一支视频),中间可能牵涉十几个步骤:写脚本、做幻灯片、截图、配音、语音验证、视频合成……每次都靠模型自己想该怎么做,很容易漏掉步骤。
Skill 就是写好的 SOP。
它的本体是一份纯文字文件(通常是 .md 格式),不是代码,里面记载:
- 完成任务的步骤顺序
- 每个步骤需要用到的工具在哪里
- 遇到例外状况该怎么处理
Skill 的巧妙之处:按需加载
Agent 不会把所有 Skill 都塞进 System Prompt,那样会让上下文爆掉。它的做法是:
- 在 System Prompt 里只放一份清单,列出有哪些 Skill 可用,以及简短说明
- 语言模型判断当前任务需要哪个 Skill
- 用读取工具把那个 Skill 的内容加载
- 按照 Skill 的步骤开始执行
这是一种 Context Engineering 的技巧,只在需要的时候才加载信息,避免占用宝贵的上下文窗口。
Skill 可以交换
因为 Skill 就是文本文件,所以可以直接把自己的 Skill 分享给别人的 AI Agent,或者从社区平台下载别人的 Skill。就像在《黑客任务》里把武功直接灌入大脑一样,AI 只要把 Skill 放进指定文件夹,就立刻学会了一套新的工作流程。
下载来路不明的 Skill 要注意安全风险,这部分前面在 AI Agent 的安全风险 跟 Skill Shielder 那两篇有详细讨论。
AI 也会自己创造工具
除了使用现有的工具和 Skill,语言模型也能自己写程序来解决问题。
举个例子:告诉 AI「每次做语音合成后要用语音识别验证,不对就重做,最多五次」。模型想了想,觉得每次都要来回沟通太麻烦,于是自己写了一个小脚本,把合成、验证、重试的逻辑全部包进去,一次执行搞定。
这些「免洗小工具」通常用完就被 AI 遗忘,下次又会重新写一个,但它们展现了 Agent 解决问题的灵活性。
Sub-agent:分身术
当任务可以拆成平行的子任务时,Agent 能派出分身去处理。
假设要 AI 比较两篇论文的方法。语言模型会要求 Agent 繁殖出两个 Sub-agent(子代理),一个去读论文 A 并摘要,另一个去读论文 B 并摘要。两个分身各自跟语言模型沟通、搜索网页、下载论文、逐段阅读,最后把摘要返回给主 Agent。
为什么不直接用主 Agent 做?
关键在于节省上下文空间。
读一篇论文可能需要跟语言模型来回几十次:搜索、下载、分段阅读、整理。如果这些过程都发生在主 Agent 的上下文里,窗口很快就会被塞满。
用 Sub-agent 的话,所有繁琐的过程都在分身的独立上下文中进行。对主 Agent 来说,它只看到最终的摘要结果,就像主管只看报告,不需要知道下属加了几天班。
这也是 Context Engineering 的核心思维:让每一层只看到它需要的信息。
无限外包的陷阱
分身也能召唤分身吗?理论上可以,但不加限制就会变成无限外包。每个人都把工作丢给下一层,最后没人真的在做事。
解决方法很粗暴但有效:让分身失去繁殖能力。 Agent 在程序层面直接禁止 Sub-agent 使用「召唤分身」这个工具,靠代码锁死,不靠语言模型的命令来约束。
Cron:让 AI 学会「等」和「守时」
AI Agent 的一个根本问题是:模型不会主动做任何事。
语言模型只会在收到输入时才产生输出。没有人问它问题,它就静静待着。Agent 跟模型对话结束后,如果没有新的触发,整个系统就停住了。
心跳机制:定时叫醒
Heartbeat(心跳) 是最基本的解决方案。每隔一段固定时间(比如 15 分钟),Agent 就会自动送一个默认的命令给语言模型,让它「醒来」看看有什么事要做。
心跳的命令通常是「去读一下 heartbeat.md 这个文件,看有没有待办任务」。模型读完之后,如果有任务就开始执行,没有就回复「没事」然后继续等下次心跳。
心跳命令不一定要很具体。心跳设成「往你的目标前进」,如果 AI 的设置里写着它的目标是「成为一流的学者」,那每 15 分钟它就会起来做点跟学术研究有关的事:读论文、写笔记、整理数据。
Cron Job:定点触发
心跳是固定间隔的敲钟,Cron 则是在特定时间触发特定任务。
「每天中午做一支视频」这条命令,语言模型会使用调度工具设置一个 Cron Job:中午 12 点触发,触发时的命令是「制作一支视频」。到了中午,Cron 系统就会像一次额外的心跳一样戳一下 Agent,但带着特定的任务命令。
学会等待
Cron 带来一个意想不到的能力:让 AI 学会等待。
假设 AI 要使用一个线上工具,上传数据后那个工具需要 5 分钟才能处理完成。一般情况下,AI 看到「处理中」就只能回报「处理中」然后结束,因为它不会主动等待。
有了 Cron 之后,聪明的模型可以在看到「处理中」时,设置一个 3 分钟后的 Cron Job:「3 分钟后回来检查这个页面」。3 分钟到了,Cron 触发,AI 回来检查,发现处理完了,就继续下一步。
这让 AI 能够操控需要等待的非同步流程,甚至能用一个 AI 去操控另一个 AI 的服务。
三者合体:真正的自动化
当 Skill、Sub-agent 和 Cron 三个机制同时运作,AI Agent 就不再只是一个问答工具,而是一个真正的自动化系统:
- Skill 确保复杂任务不会遗漏步骤
- Sub-agent 让多个任务可以同时进行
- Cron 让 AI 能定时工作、学会等待
这三个机制没有一个是革命性的新技术,本质上都是「写死的程序规则」加上「语言模型的判断力」。组合在一起,就让 AI 从「被动回答问题」进化到「主动完成工作」。
延伸阅读
📖 系列回顾:① AI Agent 不是 AI → ② 记忆机制 → ③ 安全风险 → ④ 自动化机制(本篇)
小企鹅的经验
OpenClaw 上跑了一整套 cron job 系统,每天固定时间做不同的事:早上整理新闻、晚上总结今天的进展、半夜跑备份。这算是一种自动化没错,重点是「非工程师能不能做到」这件事,答案是可以,但前提是用成熟的优化架构和 self-healing 工具,不要从零造轮子。把 Skill / Sub-agent / Cron 三层分工搞清楚,再选一套适合新手的框架,比硬写 Python 调度脚本省力很多。
常见问题
Q: 什么是 AI Agent 的 Skill?
Skill 就是 AI 的工作 SOP,是一份文本文件,记载完成某个复杂任务的步骤流程。AI 在需要时读取 Skill,按照里面的步骤执行,就像员工翻阅操作手册一样。
Q: Sub-agent 和主 Agent 有什么不同?
Sub-agent 是主 Agent 召唤出来的分身,负责处理子任务。它跟主 Agent 使用同一个语言模型,但有独立的上下文窗口,做完后只回报结果,不占用主 Agent 的记忆空间。
Q: AI Agent 怎么做到定时执行任务?
通过心跳机制(Heartbeat)和调度系统(Cron)。心跳是固定间隔戳一下 AI 让它醒来;Cron 则是在指定时间触发特定任务。两者搭配就能实现 24 小时自动运作。
本文观念参考台大李宏毅教授公开课程内容,整理:小企鹅 Penchan