AgentScope 元规划器智能体:把三天的大活儿拆成四步,让 AI 自己盯进度
【免费下载链接】agentscopeBuild and run agents you can see, understand and trust.项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope
接到一个大需求——比如三天内交出一份股票分析报告——多数人的第一反应是"这得拆成好几个任务分别做"。AgentScope 元规划器智能体(Meta Planner Agent)干的就是这件事:自动把大任务拆成可执行的小步骤,派给不同的工作智能体分工执行,跑挂了还能从断点续跑。这篇文章按一个任务从提交到完成的走向,讲讲它每一步实际在干什么。
没有它之前,一个任务是怎么"跑丢"的
先交代个背景:ReAct 是一种"思考→行动→观察"的循环,智能体每轮想一步、调一次工具、看一眼结果,再决定下一步。单看很好用,但把"调研股价、拉财报、对比同行、写报告"这种多阶段活儿整包丢给它,翻车姿势通常有三种:
- 想一口气十几轮全干完,上下文越挤越窄,后几步开始忘前面的事;
- 中途某个工具吐了超长输出,把关键信息冲没了;
- 跑到一半进程挂了,只能从头再来。
元规划器的思路,是把"项目经理"这个角色单独抽出来:它不亲自搬砖,负责拆活、排期、盯进度;真正动手的,是它按需雇出来的工作智能体。
任务提交后,它先做什么
三种规划模式,按活儿大小选
初始化时有一个planner_mode参数,决定任务走哪条路:
dynamic:默认值。智能体自己判断复杂度,简单任务直接走 ReAct,复杂任务才启动规划流程;enforced:无论多简单都强制走规划,适合希望全程有路线图兜底的场景;disable:关掉规划能力,退化成普通 ReAct 智能体。
我的经验:小活儿用disable更省事,能省下一轮规划开销;enforced留给那些"必须留下路线图记录"的任务,别默认开着——规划本身也花 token。
拆活:先画路线图,再动手
进入规划模式后,核心动作是把用户输入拆成一组带依赖关系的子任务,落成一张可追踪进度的路线图(RoadmapManager 负责这件事),而不是一句口头清单。执行中如果某个子任务的结果和预期不符,路线图会被修订——相当于项目经理中途改排期,而不是硬着头皮按原计划走。
旁边还有一个会话笔记本(PlannerNoteBook),持续记录用户的原始输入和会话状态,保证拆出来的子任务不跑偏。
分活与工具:工作智能体和 MCP 怎么接
干活的是工作智能体池,由 WorkerManager 管,动作就两个:create_worker按需创建、execute_worker派发子任务。关键点在"按需"——不是提前雇一堆智能体待命,而是路线图推进到哪一步,才创建对应角色的 worker,干完即收。
每个工作智能体拿到的是完整工具集(worker_full_toolkit),除了 shell 执行、文件读写这类基础工具,还可以挂 MCP 客户端。MCP(Model Context Protocol)是给智能体接外部工具的一种标准协议,接一个搜索服务、一个文件系统服务器,写几行配置就能用,不用为每种工具单独写胶水代码。框架里的 MCP 客户端在 src/agentscope/mcp/,基础工具在 src/agentscope/tool/。
初始化参数不多,长这样:
agent = MetaPlanner( name="Task-Meta-Planner", model=claude_model, worker_full_toolkit=worker_toolkit, # 工作智能体的完整工具集 toolkit=planner_toolkit, # 元规划器自己的规划工具 agent_working_dir=working_dir, planner_mode="dynamic", )注意两个 toolkit 是分开传的:元规划器自己只拿规划相关的工具,真正干活的工具全给 worker。这是它"不亲自搬砖"在代码上的体现。
任务中断后如何续跑
长任务最怕跑一半断掉。元规划器在每轮推理之后、每次行动之后,都会把当前状态落成 JSON 文件,写到state_saving_dir指定的目录里。中断之后,拿最近的有效状态文件就能接着跑:
python main.py --load_state ./agent-states/run-20250101120000/state-post_reasoning-20250101120001.json状态模型和加载逻辑在 src/agentscope/state/ 里,想自定义保存策略可以从这里入手。
两个容易踩的坑 ⚠️
- 工具输出太长,把上下文冲掉。搜索、读文件这类工具动辄返回几万字符。官方示例的做法是给工具响应加截断:单条响应超过约 40KB 就裁掉尾部。你如果接了会吐大数据的工具,记得加同样的保护。
- 会话历史越积越大。规划模式本身就会多出不少轮次,长任务的内存占用很可观。除了用
max_iters控制最大迭代次数防死循环,也建议定期清掉过期状态文件,别让它们无限堆。
更多模块细节可以看 docs/,完整可运行的示例集中在 examples/ 目录。
下一步建议:先跑通dynamic模式,拿一个三到四步的小任务验证拆活质量;确认路线图靠谱之后,再按需给 worker 工具集接 MCP 客户端,把搜索、文件这类能力补进来。
【免费下载链接】agentscopeBuild and run agents you can see, understand and trust.项目地址: https://gitcode.com/GitHub_Trending/ag/agentscope
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考