简介:Manus多智能体报告,聚焦2025年智能体(Agent)技术趋势,面向AI从业者、产品经理及关注前沿技术的研究人员。报告以22页篇幅梳理Manus的三大技术支柱——规划代理、执行代理、验证代理的分工机制,详解云端异步处理、断点续传及大模型融合原理,并展示金融投研、简历筛选、教育辅助、旅游规划等落地场景,帮助企业评估是否引入智能体方案、评估自主任务执行质量与可信度,适合作为产品选型和竞品分析的参考素材。压缩包为1个PDF文件,约1.29MB,便于随时离线阅读分享,无额外依赖。该资源发布于2025年3月,目前已有110人学习,适合希望快速建立对Manus认知框架,或研究AI Agent产品形态、商业化路径与未来机遇挑战的读者。
1. 2025年Manus智能体为何被看作AI新范式
2025年3月,Manus智能体上线后,社交圈很快被一种叫“Manus Case”的结果页刷屏:一份市场报告、一张财务拆解图、一段可运行的Python代码,全部是智能体自己整理出来的。和普通AI对话框不同,Manus的任务是异步完成的——你提交一句“把这份调研整理成22页PDF”,关掉电脑去开会,回来时文件已经写好。标题里那份22页的《2025年Manus智能体开启AI新范式的先锋探索》,记录的就是这个转折:它要回答的不是“AI还能做什么”,而是“AI的工作方式是不是该换了”。下面把这个范式切换讲透,再落到如何自己搭一个能跑通任务的智能体。
2. 从“回答问题”到“完成任务”:Manus智能体背后的范式切换与架构拆解
先给结论:Manus不是又一个ChatGPT套壳。过去两年主流AI产品解决的是“人问机器答”,Manus把交互模型改成了“人给目标、机器交付结果”。这个差异听起来很小,落到架构上却是两套完全不同的系统。对话式AI的响应是一段文字,Manus的响应是一个过程:拆解任务、调用工具、验证产物、最后交付一堆文件。理解这个区别,才能理解为什么Manus被当作AI新范式的先锋,也才能看懂那份22页探索报告在争论什么。
2.1 对话式AI与智能体AI的边界:Manus在改什么
对话式AI的核心路径是“prompt → 模型 → 文本输出”,模型的一次前向传播就结束了。智能体的路径是“指令 → 规划 → 多次工具调用 → 中间产物沉淀 → 最终交付”,模型只是这条链路上负责决策的组件。下表把两边的主要差异列出来,这也是评价一个产品到底是不是AI智能体时的判断框架。
| 维度 | 对话式AI | Manus式智能体 |
|---|---|---|
| 交互方式 | 一问一答,同步返回 | 一次委托,异步执行 |
| 运行时长 | 秒级 | 分钟到小时级 |
| 输出物 | 文本/代码片段 | 文件、报告、可运行程序 |
| 中间状态 | 无 | 有计划、有执行日志、有产物 |
| 失败处理 | 重新生成 | 局部重试或调整计划 |
| 责任边界 | 对答错的单句负责 | 对交付物整体负责 |
“异步执行”是Manus与ChatGPT最直观的分水岭。对话模型要求人在场,智能体允许人离场。这个看似体验层面的设计,实际改变了整个技术栈的取舍:上下文管理必须支持长会话;任务必须被显式拆成子步骤;每步的结果必须能被后续步骤引用。Manus能被反复讨论,正是因为它在产品层把“异步+执行+交付”这三个词落成了真实可用的界面,而不是只停留在论文里。
2.2 Manus多智能体规划链路:计划、执行、验证三步走的落地方式
Manus对外展示的架构并非单一模型在工作,而是多个角色分工:规划部分负责把大任务拆成可执行步骤,执行部分负责调用工具完成单个步骤,验证部分负责检查执行结果是否满足要求。这种多智能体架构在智能体开发里已经不算新鲜,LangGraph、Dify这类智能体框架里都有对应抽象,但Manus把这条链路做成了默认行为。
规划器的输出通常是结构化的任务清单。下面这个JSON,就是搭建Manus式智能体时让规划模型产出的计划格式:
{ "task": "生成一份22页的AI智能体行业探索报告PDF", "plan": [ {"step": 1, "action": "web_search", "params": {"query": "Manus智能体 GAIA 评测", "save_to": "notes/01_gaia.md"}}, {"step": 2, "action": "web_search", "params": {"query": "智能体框架 LangGraph vs Dify", "save_to": "notes/02_frameworks.md"}}, {"step": 3, "action": "run_python", "params": {"code": "整理notes目录下的markdown文件,生成22页报告大纲"}}, {"step": 4, "action": "run_python", "params": {"code": "调用report_builder.py输出PDF"}} ] }这个JSON就是范式切换的物理载体:模型不再直接输出最终答案,而是输出一份可执行的计划,由执行环境逐步消费。action字段对应一个注册好的工具名,params是工具入参,save_to把中间结果落盘,避免后续步骤重复检索。步骤之间默认顺序执行,但也可以加depends_on字段表达依赖关系。规划器的价值在于把“生成22页报告”这种模糊指令变成子任务之间边界清晰、可单独验证的执行序列。
多智能体架构还有一个容易被忽略的作用:每一层只承担一种职责,提示词和模型就可以分别优化。规划层适合用逻辑能力强的模型,执行层可以用响应速度快、工具调用稳定的模型,验证层用判据严格的模型。Manus能在一次任务里连续做几十次工具调用而很少偏离目标,靠的正是这种分工,而不是某个单一模型的超常发挥。
2.3 AI新范式的三根支柱:异步执行、自主调用与产物可验证
把Manus开启的AI新范式压缩成一句话,就是三个变化:异步、自主、可验证。异步让用户与任务解耦,用户不在场时任务照常推进;自主让智能体具备工具调用循环,模型可以反复观察环境反馈再决定下一步;可验证让每个环节的中间产物都能被检查,而不是黑盒输出一段文字。
这里要提到GAIA基准。Manus发布时在GAIA上的表现被认为超过OpenAI同类工具产品,GAIA的题目设计恰恰考核的就是这三件事:能否理解真实世界的模糊任务、能否调用外部工具、能否产出可验证的答案。它和传统问答榜单的差别在于,很多题目答案本身不存在于训练数据里,模型必须实时检索、计算、校验才能答对。Manus在GAIA上的成绩被那份22页探索报告反复引用,也是因为GAIA的考核维度与Manus的架构取向高度重合。
不过要冷静一点:GAIA只能说明工具调用链路的能力,不能说明智能体的商业价值。一个能跑通GAIA的智能体,未必能稳定处理你公司的私有数据报告。把范式讲清楚之后,更重要的问题是:抛开邀请码,这套东西自己能不能搭?接下来用最小代码把它跑起来。
3. 没有邀请码也先跑起来:搭建Manus式智能体的最小执行流程
Manus官网采取邀请码制,排队时间长,但范式本身是开放的。如果你想先体验“任务式AI”,常见做法是走智能体框架路线:偏重可视化编排用Dify或Coze,偏重代码控制用LangGraph,偏重极简验证就自己写一个工具调用循环。我一般建议先选最薄的方案,理由是智能体项目的复杂度主要来自任务本身,而不是框架。框架只是把你手动维护的对话历史、工具注册和重试逻辑封装起来,提前引入框架反而会掩盖对核心机制的理解。
3.1 先圈定边界:Manus式智能体适合处理什么任务
不是所有任务都适合扔给智能体。适合的任务通常有三个特征:步骤可拆解、结果可验证、允许分钟级延迟。比如“抓取五个网站的数据并汇总成表格”“读一份PDF并生成结构化摘要”“写一段代码并运行验证”,这些任务天然需要多步工具调用。不适合的任务包括:需要毫秒级响应的实时交互、涉及高度敏感数据不便外传的处理、以及评价标准高度主观的创作任务。
| 任务特征 | 适合交给智能体 | 不适合交给智能体 |
|---|---|---|
| 步骤结构 | 可拆成3步以上 | 单步即可完成 |
| 实时性要求 | 分钟到小时级 | 秒级响应 |
| 结果验证 | 可用数字或文件验证 | 主观判断为主 |
| 数据敏感度 | 可用外部工具处理 | 严禁离开本地环境 |
一个比较实用的判断方法是看任务的“验收成本”。如果验收一份结果需要专家花半天,任务的性价比就不成立;如果验收只需要看几个关键数字或者打开文件检查排版,智能体就值得接入。做智能体开发时我习惯先画一张极简任务卡片:输入是什么、输出是什么、中间需要哪几类工具、验收标准是什么。写不清楚这四行,就不要急着上代码。
3.2 最小可运行代码:LLM加工具循环的核心实现
下面这套Python代码,是Manus式智能体的最小骨架:一个大模型负责决策,一组工具负责执行,一个while循环负责把两者接起来。代码可以直接运行,前提是你有一个兼容OpenAI接口的大模型服务。环境变量LLM_BASE_URL、LLM_API_KEY、LLM_MODEL分别指定接口地址、密钥和模型名。
import json import os import subprocess from openai import OpenAI client = OpenAI( base_url=os.getenv("LLM_BASE_URL"), api_key=os.getenv("LLM_API_KEY"), ) def run_python(code: str) -> dict: """执行一段Python代码,用于文件读写、数据分析和绘图""" try: result = subprocess.run( ["python3", "-c", code], capture_output=True, text=True, timeout=30, ) return {"stdout": result.stdout[-2000:], "stderr": result.stderr[-2000:]} except subprocess.TimeoutExpired: return {"stdout": "", "stderr": "timeout after 30s"} TOOLS = [ { "type": "function", "function": { "name": "run_python", "description": "执行一段Python代码,用于读写文件、分析数据和输出中间产物", "parameters": { "type": "object", "properties": { "code": {"type": "string", "description": "要执行的完整Python 3代码"} }, "required": ["code"], }, }, } ] TOOL_REGISTRY = {"run_python": run_python} def run_agent(task: str, max_steps: int = 10) -> str: messages = [{"role": "user", "content": task}] for step in range(max_steps): resp = client.chat.completions.create( model=os.getenv("LLM_MODEL", "gpt-4o"), messages=messages, tools=TOOLS, tool_choice="auto", ) msg = resp.choices[0].message messages.append(msg) if not msg.tool_calls: return f"[完成于第{step + 1}步]\n{msg.content}" for call in msg.tool_calls: fn = TOOL_REGISTRY.get(call.function.name) args = json.loads(call.function.arguments) result = fn(**args) messages.append({ "role": "tool", "tool_call_id": call.id, "content": json.dumps(result, ensure_ascii=False), }) return "达到最大步数,任务未完成" if __name__ == "__main__": task = input("给智能体一个任务:") print(run_agent(task))运行逻辑分四步。第一步,把用户任务放进messages,这是智能体的短期记忆。第二步,调用带tools参数的大模型接口,模型会在两种输出中选择:直接给最终回答,或返回一个tool_calls列表。第三步,若是工具调用,程序根据函数名去TOOL_REGISTRY取真实函数并执行,把结果以role: tool的消息回填到对话里。第四步,继续循环,直到模型不再请求工具。这个模式就是大模型function calling的标准流程,也是Manus式异步任务在单机上的最小投影。
几个参数值得说明。max_steps限制推理步数,防止智能体陷入无限工具调用,Manus在正式产品里同样有类似上限,只是对外不暴露;这里默认10步,长任务建议放宽到30,但要配合预算控制。timeout=30是单次代码执行的超时,防止一段死循环卡住整个任务。stdout[-2000:]取输出尾部,避免工具返回内容过长把上下文撑爆,这是智能体开发中非常容易被忽略的一点:工具返回的体量,直接决定对话能容纳多少轮迭代。
提示:
TOOL_REGISTRY只注册了run_python,后续每加一个工具,都要在TOOLS里补JSON Schema,并在TOOL_REGISTRY里注册对应函数。两处漏一处,模型就会调用失败。
3.3 补齐Manus式三件套:检索、执行与产物落盘
只有run_python一个工具还不够。Manus案例里最常出现的能力有三类:网络检索、代码执行、文件落盘。网络检索用于补充模型不知道的实时信息;代码执行用于分析和生成文件;文件落盘把中间产物交给后续步骤。对照上面代码,扩展方式就是再注册两个工具函数,并在TOOLS列表里补上对应的JSON Schema。
网络检索工具不依赖具体服务商。常见做法是把搜索结果做成统一的{"title", "url", "snippet"}结构返回,模型只看摘要,需要全文时再调用抓取函数。文件落盘工具更简单,核心是路径安全:执行环境与模型不在同一台机器上,必须让save_to参数只能落在预设目录内,否则任意路径写入很快会变成安全事故。这三个工具组合起来,一个最简Manus式智能体就能完成“检索资料→编写分析代码→输出报告文件”的完整闭环,也就是那份22页探索报告所描述的范式的最小实例。
4. 用Manus思路复现22页PDF报告:任务编排、参数设置与高频踩坑
标题里的22页PDF,最值得复现的不是PDF本身,而是生成PDF的过程。如果直接把“写一份22页的AI新范式探索报告PDF”丢给单轮大模型,模型会在上下文窗口内硬生生生成几万字,结果要么结构塌陷,要么中段内容与开头重复。Manus式智能体的做法刚好相反:把一个大任务切成阶段,每个阶段单独交付、单独验证,最后统一组装。这一章用这个具体任务把第3章的骨架升级成可用的工作流。
4.1 任务拆解:把“22页PDF探索报告”拆成可执行子任务
生成一份22页PDF,本质上包含四项子任务:确定提纲、收集素材、分章写作、排版生成。前两项由检索和文件工具完成,后两项由代码工具完成。拆解后的任务清单如下,每个子任务都有明确的输入输出和验证方式,而不是一句笼统的“写报告”。
| 阶段 | 子任务 | 输入 | 输出 | 验证标准 |
|---|---|---|---|---|
| 1 | 生成报告大纲 | 用户主题描述 | 22页大纲JSON | 每章有标题和字数目标 |
| 2 | 分章收集素材 | 大纲JSON | 按章保存的markdown笔记 | 每章至少3条有效来源 |
| 3 | 分章写作 | 笔记+大纲 | 每章一个md文件 | 总字数接近22页容量 |
| 4 | 统一排版 | 各章md | 最终PDF | 页数18-26页,图表可读 |
执行引擎按阶段顺序运行,阶段之间不共享对话历史,只共享文件系统。这个设计是刻意的:长任务共享同一份对话历史,token消耗会随步骤数线性膨胀,模型反而会忘记早先的大纲。把中间产物落盘成文件,每个阶段都用独立会话读取文件继续工作,上下文长度基本恒定,成本也可控。这也是Manus类智能体与ChatGPT长对话在工程实现上的关键差异。
4.2 智能体编排参数:温度、步数、上下文长度与工具超时的配平
同样的骨架代码,参数配平不同,跑出来的任务质量完全不同。以下是我做智能体开发时常用的初始参数,适用对象是“生成20页以上长报告”这类中长任务。
| 参数 | 建议值 | 设置理由 |
|---|---|---|
| temperature | 规划0.2 写作0.7 | 规划要稳定,写作要多样性 |
| max_steps | 20-30 | 覆盖一次完整任务链,防止死循环 |
| 单工具超时 | 60s | 网络检索和代码执行都需要余量 |
| 上下文保留 | 最近6轮+大纲摘要 | 保证模型始终记得主线 |
| 重试次数 | 2次 | 工具调用失败时避免整体失败 |
temperature分开设置,是因为规划阶段需要确定性——同一个任务重复拆解,结果波动会让后续阶段无所适从;写作阶段需要多样性——每章如果都由最高概率的词组成,报告读起来会极其枯燥。工具超时设60秒,是给网络检索留出余量,但也要配套重试:工具第一次失败可能是网络抖动,立即重试一次往往能成功;同一工具连续失败三次,就让它回到规划阶段重新制定策略,而不是继续重试。
上下文保留策略最容易踩坑。长任务只要保留全部消息,到第20步时输入的token数可能已经超出模型上下文窗口。Manus式智能体的常见解法是“滚动摘要”:每过几轮把旧消息压缩成结构化摘要,只保留最近几轮完整消息和全局大纲。我在复现22页报告时会把大纲JSON持续挂在system prompt里,这样无论执行到哪一步,模型都清楚自己在整份报告中的位置。步骤里增加摘要压缩逻辑的伪代码如下:
def compress_if_needed(messages, max_messages=24): if len(messages) <= max_messages: return messages summary = llm_summarize(messages[:-8]) # 对旧消息生成摘要 return [{"role": "system", "content": f"历史摘要: {summary}"}] + messages[-8:]这段代码表达的是:对话过长时,保留最近8条原始消息,把更早的部分压缩为摘要放入系统消息。摘要用一次额外的大模型调用生成,虽然增加成本,但换来的是任务后半段不“失忆”。参数说明:max_messages控制触发压缩的阈值,按实际窗口大小调整;messages[-8:]的8是经验值,太大会导致摘要频繁重算,太小会丢失近期上下文细节。
4.3 复现22页PDF时的三个实际坑与对应处理
第一个坑是输出格式不稳定。直接让模型生成完整Markdown再转PDF,经常出现标题层级错乱、代码块未闭合,22页的内容里有好几页渲染失败。常见做法是不让模型输出最终全文,而是让模型分章输出到独立的md文件,再用统一的渲染脚本拼接。这样即使某一章格式坏了,也只影响一章,重新生成那一章的成本远比全文重来得低。我用的是每章一个文件的方案,最后用脚本按大纲顺序拼接,并给每章做页数统计。
第二个坑是中途偏离大纲。任务跑到第10步,模型常会自作主张改变报告结构,追加一些文档里没提过的内容。处理办法是把大纲固化在文件里,每个写作阶段开始时先读取大纲文件,写入前对比章节标题是否一致。发现偏差就让模型按大纲重写,而不是放任它自由发挥。我一般会在阶段代码里加一个断言:章节标题不在大纲中,直接返回错误信息,让主循环重新请求模型。
第三个坑是成本与时间失控。一次22页的报告任务,包含十几次检索和几十次代码执行,完整的token消耗可能远超出预期。做智能体开发时要设两道闸:一是第4.2节的max_steps,二是每阶段结束后的checkpoint。每个阶段跑完就暂停,人工确认产物没问题再放行下一个阶段。Manus产品里那个异步任务页,本质上就是给用户一个观察点:你可以看到每一步的日志,时刻保持人工收回执行权的可能。这一步对早期AI应用开发都适用,宁可慢,不能不可控。
5. 先锋探索之后:Manus类智能体的验收、接管与留痕技巧
长任务智能体和传统软件有个区别:执行路径不固定,同样的输入每次可能走出不同的工具调用链。所以验收不能只看最终结果,还要证明中间步骤没有被静默跳过。我用三个技巧让Manus式智能体从“能跑”变成“稳跑”。
5.1 用Checklist验收智能体产物
下任务前定义机器可读的验收清单。对22页报告任务,检查项包括:是否包含大纲中全部章节、每章字数是否达标、引用来源数量、PDF页数是否在18到26页。把这些检查项写成一个Python函数,任务结束后自动执行,输出验收报告。智能体说“任务完成”不算数,Checklist全部通过才算交付闭环。
5.2 中间快照:让任何阶段都能回滚
长任务跑到最后发现第2章素材方向错了,从头重来代价太大。Manus案例页展示执行过程,本质上就是在暗示中间状态很重要。我在每个阶段结束后把关键文件复制到带时间戳的目录snapshots/20250308_1430/,记录当时的大纲版本和素材清单。发现跑偏就回滚快照,修正阶段输入再跑后续阶段。快照目录还能离线排查智能体在哪一步偏离主线,这是调提示词最直接的证据。
5.3 人工接管阈值:用一行代码决定何时停下来等人
给任务设一个求助条件。连续失败超过3次、工具返回与预期明显矛盾、或成本超过预算线,让程序停止执行并把当前状态输出成报告。我在主循环里把它实现为should_stop()函数,统计失败次数与累计token消耗,超限就返回中断原因,主循环break并打印快照路径。
def should_stop(state): if state.failures >= 3: return "连续失败次数过多,需要人工介入" if state.cost_usd > state.budget_usd: return "预算超限,请确认是否继续" return None把返回值当作中断信号接入主循环,配合前面的快照目录,人和智能体之间就建立起一个简单的指挥关系:智能体负责执行,人负责在关键节点确认。把should_stop()的返回值接进你主循环的第一行,再配合5.2的快照目录,它比任何提示词都更早拦住失控的智能体。
本文还有配套的精品资源,点击获取