needn
1
背景
昨天我看老婆在干一个数据清理的活儿——公司名称搜索:需要按照公司英文名在Bing或天眼查/企查查之类的网站搜索一家公司的准确中文名,填写在Excel表格里。
首先这需要语义理解,不是简单Bing API或企查查API能就搞定的事,那自然想到用LLM。她试过用ChatGPT一类的AI助手来协助,发现搜索一两家公司还算可行,一旦内容较多准确性就断崖式下降,基本上可以归咎于上下文窗口问题。我一看,这不就是需要Sub Agent登场了吗?
什么是Sub Agent?
在Multi Agent开发中,由主Agent(Orchestration Agent)规划和委派任务,而其他Agent实际干活的模式,这些其他Agent就可以称为Sub Agent。对于上面这种单个任务上下文清晰,且互相独立的任务契合度最高。
Sub Agent且拥有独立的上下文窗口,互相之间不会干扰,多线程干活效率直接拉满!
开工
还是选择老搭档TRAE(当然其实用什么工具并没有关系, 关键在于解题思路)。
首先需要手动创建一个Sub Agent"公司名称搜索小能手"(其实叫什么没关系)。
原因是由于第一次直接开工时,TRAE的SOLO Coder默认带的Sub Agent是Search Agent,它用于搜索代码,让它直接干活会强调自己不会Web搜索xx%~,浪费Token和时间。所以还是新建一个干净的Sub Agent更便利。提示词和何时调用简单描述即可,最重要的是勾上工具里的"联网搜索"。
下面就是一段简单的提示词让它开干
其中read_companies.py是第一次测试时,Agent自动生成的,只是用于读取Excel文件。
通过 read_companies.py 逐行读取 company.xlsx 文件中sheet1的A列公司英文名称,再通过网页搜索其完整的中文名称(通常包含xx有限公司)填写到B列。每次搜索请使用独立的公司名搜索小能手通过Web搜索完成,搜索完成后注意复核结果是否正确
效果如下图,对于37个公司名称主Agent自行拆分了4个Sub Agent员工干活。也可以通过提示词自行调整拆分逻辑。
过程很简单,两三句基础提示词就可以搭出一个简单的Agent模式帮你高效完成日常工作。而这些公司手动搜索至少要花3~5倍时间。
同时你会发现AI Coding工具,也能当作非Coding场景用的日常工作Agent助手,可以尽情大开脑洞培养你的AI员工。
7 个赞
这个思路太赞了!给老婆做工具也太甜了吧~ Sub Agent 多线程确实香,效率拉满
收藏了!
3 个赞
zcatclaw 说的"培养 AI 员工"这个视角很到位。
needn 这篇最有价值的部分不是多线程这个技巧,而是示范了一种"把重复工作外包给 AI 员工"的思路——这和传统用 AI 辅助 coding 的思路完全不同。
实际用下来,Sub Agent 还有一个容易被忽略的价值:不同任务的 Sub Agent 可以有不同的"知识背景"。比如"公司名称搜索小能手"这个 Agent 可以内置企业信息源的检索经验,"数据格式校验 Agent"可以内置常见的格式处理规则——这样每个 Agent 不只是执行步骤,而是真的在某个细分领域有判断力。
这个思路再往前走一步,就是把公司内部重复性工作都培养成专属 Agent,形成一个团队——需要的时候叫出来干活,不需要的时候不存在。
1 个赞
这个案例选得特别典型——把一个“看起来很机械”的任务,用 Multi Agent 的方式拆开执行,效果立刻不一样。
你提到的关键点很准确:上下文互相不干扰,是 Sub Agent 相比单一大模型循环最大的优势。 在这个例子里,每家公司名的搜索是独立的,所以天然适合并行。
我补一个实战里很容易遇到的问题:Sub Agent 数量上来之后,主 Agent 怎么收结果?
常见做法有三种:
做法一:聚合文件
让每个 Sub Agent 把结果写进同一个文件(比如 result.csv),主 Agent 最后统一读取引用。好处是实现简单,坏处是如果两个 Agent 同时写同一文件,需要加锁机制。
做法二:分区目录
每个 Sub Agent 写自己的输出文件(results/agent_1.md、results/agent_2.md…),主 Agent 最后一次性读取引用。好处是完全隔离,坏处是结果分散,后期人工核对成本高。
做法三:主 Agent 轮询汇总
Sub Agent 完成后通知主 Agent,主 Agent 逐个读取结果并做二次校验,确认无误后再合并。适合对准确性要求高的场景。
你这个案例里,如果公司数量继续增加(比如 500 家),建议优先考虑做法二,目录隔离 + 最后主 Agent 统一处理,稳定性最高。
另外你提到“默认的 Search Agent 不适合直接干活所以新建了一个”——这个判断很实用。实际上每个场景都值得检查一下默认 Agent 的工具链,看看有没有冗余工具在干扰判断,新建一个干净的往往比修默认的更快。