98、【Agent】【OpenCode】task 工具提示词(子 Agent)
【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除
背景
上篇 blog
【Agent】【OpenCode】task 工具提示词(主/子 Agent)
分析了启动一个全新的子 Agent 有代价,有冷启动成本,如果只是为了该两行代码等简单任务,动用子 Agent 确实是既麻烦又浪费资源,但在复杂的工程场景下,如果不把任务外包出去,主 Agent 很快就会因为上下文膨胀而崩溃,然后从三个方面进行了分析:省下更昂贵的历史上下文(大模型是按 Token 收费的,而且每次对话都要把之前的上下文重新喂给模型一遍),防止主 Agent 失忆(主 Agent 作为总指挥,它需要时刻记住用户的期望是什么,项目的整体规范是什么,当前的最终目标是什么),子 Agent 和主 Agen 的背景共用(缓存复用,系统在派生子 Agent 时,往往不会再重新生成一遍提示词,而是会直接复用主 Agent 已经渲染好的底层 Prompt 字节),这就是用少量的启动成本,去规避天价的崩溃风险,下面继续分析
OpenCode
之前 blog 里有这么一张示意图
从这张图可以看出来,子 Agent (智能体)依然连接的是远端大模型,并不是在本地电脑上的一个新程序,而是远端 AI 系统在云端临时开辟的一个独立分身,或者说专属工作空间
其中,子 Agent 在执行任务时,也需要推理草稿和中间过程,和主 Agent 一样,一步步思考,试错,读取文件,才能得出一个靠谱的结论,但这里有一个比较巧妙的隔离设计,有两个特点
- 黑盒作业&独立的临时记忆:子 Agent 在执行任务时,系统会为其开辟一个完全独立,临时的上下文窗口(sub_messages),在黑盒内部(子 Agent 视角),它拥有完整的思考能力,会经历【读文件 -> 发现线索 -> 推理草稿 -> 调用工具 -> 修正思路】等全过程,这些海量的中间步骤,推理细节,全部会被记录到这个专属的上下文里,当然,没这些过程,子 Agent 也没发工作,而在黑盒外部(主 Agent 视角),主 Agent 根本看不见,也摸不着子 Agent 内部的这些细节,它只负责发出指令,然后等待结果
阅后即焚(一次性草稿):当子 Agent 完成了所有复杂的思考和操作,提炼出最终结论后,会发生两件事
- 只传回精华部分:子 Agent 会把那任务执行的过程,压缩成一句精简的总结,比如【已确认项目使用 pytest 框架】,然后把这句总结交给主 Agent
- 彻底销毁现场:这是最关键的,哪个装满了子 Agent 推理草稿,工具调用记录的临时上下文窗口,会被直接丢弃,
这就好比一个学生在草稿纸上做了一道极其复杂的数学题,需要草稿纸(临时上下文),没有草稿纸上的演算过程,根本算不出答案,但交卷时,只需要把最终答案写在试卷上,而草稿纸则会被揉成一团扔掉
在上面这个比喻中
- 学生 = 子 Agent
- 草稿纸 = 子 Agent 独立的上下文窗口,会消耗大量 Tokens,但用完就丢
- 试卷上的答案 = 返回给主 Agent 的总结
- 阅卷老师 = 主 Agent,它只看到了最终答案,但不知道学生刚才在草稿纸上涂改了多少次
如果不用子 Agent,主 Agent 就得在那张珍贵的正式答卷(主对话上下文)中打草稿,如果写到一半,发现错了,不能擦,只能划掉重写,最后整张卷子密密麻麻全是涂改痕迹(上下文污染),不仅用户看得头晕,而且下次再提问时,模型还得再被迫重新阅读那些毫无意义的涂改过程,浪费资源
所以,子 Agent 的核心价值在于,允许 AI 肆无忌惮地消耗廉价草稿纸 Token 去进行深度思考和试错,然后通过物理隔绝的方式,保证主对话永远感觉,清爽,高质量,用一点额外的启动成本,换取系统长期的稳定与省钱
OK,本篇先,到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
