deepagents之任务规划与分解

发布时间:2026/9/24 17:41:42

deepagents之任务规划与分解 前言agent或llm第一个蜕变是它可以执行工具了。但是agent开始变的强大其实是从LLM能力提升agent可以根据任务自主规划任务与执行开始的。今天我们就看下deepagents如何进行任务的规划与分解。为什么agent需要规划能力简单任务VS复杂任务对于简单的任务比如今天天气怎么样agent直接调用查询天气工具就好了但是对于复杂任务比如需要进行产品调研竞品对比分析的需求规划能力就很重要了。Agent没有规划会怎么样很容易步骤遗漏不完整还可能重复执行陷入死循环的境地无疾而终执行过程较长可能上下文爆炸遗留了重要记录稳定性不足Agent有时候执行的还可以有时候效果就不太行Agent有了规划能力就可以先规划好执行的步骤就可以按部就班的按照计划执行任务了。启用任务规划在新的版本V0.7中需要显式启用任务规划也就是TodoListMiddleware中间件同时会注入write_todos工具。对于简单的问答不需要启用对于需要多步执行等长程任务建议开启前端UI需要展示当前步骤、进度建议开启write_todos工具即便启用了TodoListMiddleware具体是否会任务规划也会看模型、提示词、具体需求任务的复杂度。任务的结构与状态主要就是content、status状态pending还没开始执行、in_progress进行中、completed已完成completed是agent写入的完成状态具体交付物是否完成还需进行检查。agent怎么使用write_todo1、制定计划2、逐步执行3、动态调整过程中可能会根据执行情况增加步骤任务的持久化任务清单todolist保存在agent state的todos字段与消息历史分开管理这样即便消息历史做了压缩也不会影响任务清单。多次invoke之间要自动接续清单需要配置CheckPointer并且复用同一个thread_idInMemorySaver 只能在当前进程保存检查点进程重启还要恢复需要使用数据库等持久化CheckPointersubagents 声明的子agent没有独立的Middleware需要规划能力需要在自己的spec启动Todo它也不会主动读取主agent的清单揭开Middleware的引擎盖我们使用create_deep_agent创建一个agent然后通过middleware设置中间件本质就是把一组中间件组装到了agent上。分清两类hook风格Hook执行方式适合场景Node-stylebefore_agent、before_model、after_model、after_agent编译成 Agent 图中的独立节点按生命周期顺序运行校验、状态更新、审计、人工中断Wrap-stylewrap_model_call、wrap_tool_call包裹一次模型或工具调用可以不调用、调用一次或多次 handler重试、缓存、降级、请求或响应转换简单理解就是Node-style是在节点之间的操作在某个节点之前之后执行很典型的就是在某个操作之前需要人工确认Wrap-style是节点内的操作当前节点执行出问题的补救处理等如模型调用失败的重试一些中间件默认中间件FilesystemMiddleware注入7个文件操作工具并执行permissions权限策略SummerizationMiddleware上下文自动压缩可配置触发阈值PatchToolCallsMiddleware补齐历史消息中缺失的工具响应Prompt caching等模型相关能力是否启用取决于模型和Harness profile好像在哪个章节看到过claude模型有这个能力通过专用参数配置SubAgentMiddleware有subagents配置默认包含general-purpose子agent提供task工具。我好像在其他AI开发工具也见过这个子agentSkillMiddleware通过skills参数启用注入技能包AsyncSubAgentsMiddleware传入异步子agent启用MemoryMiddleware传入memory参数启用注入AGENTS.md记忆HumanInTheLoopMiddleware掺入interrupt_on参数启用拦截指定工具调用等待人工审批通过middleware设置TodoListMiddleware等可选策略按需加入与默认 Middleware 同名的实例会在原位置换默认实例而不是在末尾再叠加一个原位置换是完整实例替换不会把新旧配置按字段合并理解了如上配置方式你就可以看懂deepagent内部是怎么拼装出来的自己按需添加新能力比如PII数据脱敏这个还是很有必要的或者模型降级、调用次数限制等这两个对于agent运行稳定具有很大的价值PatchTooCallMiddleware干了点啥正常的消息记录模型发出工具调用请求后会有一个对应的工具执行结果消息通过tool_call_id把两条消息关联起来。但是工具执行可能被取消那么就只有工具请求消息缺少了工具执行结果的消息。基于hooks就可以在每次执行agent也就是befor_agent hook中检查消息为缺失的消息补上ToolMessage说明这次调用被取消。它只是进行消息补全不会进行工具执行、重试。TodoListMiddleware与write_todos添加TodoListMiddleware后agent会自动获得1write_todos工具可以创建和管理任务清单2todos状态保存任务及状态供后续步骤和UI使用跨轮次调用需要CheckPointer支持3规划指导提示词引导agent在遇到复杂问题的时候先规划再去执行如果发现agent的规划行为需要专门引导的时候可以自定义TodoListMiddleware的系统提示词SummerizationMiddleware在langchain中也有一个同名的总结压缩中间件但是二者在实现上存在一些差异执行位置langchainbefore_model独立节点执行deepagentswrap_model_call在节点内部消息处理langchain执行把就消息替换为摘要保留近期消息deepagents保留原始消息另外记录摘要和截断位置本次模型输入使用摘要近期消息历史保存langchain不负责将旧消息写入backenddeepagents将待总结的旧消息写入backend摘要中附上保存路径任务规划与上下文管理的协同在长时间运行的任务中任务规划和上下文管理需要协调工作问题场景假设agent正在执行一项有10个步骤的任务然后执行到第6步骤的时候对话历史已经非常长了包括前面5个步骤的搜索结果、文件读写操作、中间思考过程等等。这个时候deepagents的上下文管理会自动介入1工具执行结果卸载将工具执行结果卸载到文件系统执行结果只保留前面几行完整内容的路径2对话总结如果上下文还是超过配置的触发阈值旧消息就会被总结压缩本次模型输入改为摘要近期消息。任务清单锚定由于任务清单与消息记录分开存储隐藏对话总结压缩不会营销任务清单的完整性。这份清单可以帮助agent1总共有多少步骤2哪些已经完成哪些还未执行3下一步该做什么清单是否及时更新、下一步是否合理取决于模型的行为。调试时需要结合任务执行情况和工具调用情况、最终产物一起看。代码实战让agent自己规划并执行多步骤研究任务。importosfromlangchain_openaiimportChatOpenAIfromtypingimportLiteralfromtavilyimportTavilyClientfromdeepagentsimportcreate_deep_agentfromlangchain.agents.middlewareimportTodoListMiddlewarefromdotenvimportload_dotenv load_dotenv()# 这个模型不太行MODELXingChenAGI/Xing4.0-29B# 这个模型当前任务可以胜任MODELQwen/Qwen3-8B# 配置模型modelChatOpenAI(# 多步骤规划任务建议使用能力较强、支持工具调用的模型modelMODEL,api_keyos.environ[SILICONFLOW_API_KEY],base_urlhttps://api.siliconflow.cn/v1,)# 搜索工具tavily_clientTavilyClient(api_keyos.environ[TAVILY_API_KEY])definternet_search(query:str,max_results:int5)-dict:搜索互联网获取最新信息。returntavily_client.search(query,max_resultsmax_results)# 创建 Agent并显式启用 write_todosagentcreate_deep_agent(modelmodel,tools[internet_search],middleware[TodoListMiddleware()],system_prompt你是一位专业的技术研究员。 面对复杂研究任务时你会 1. 先用 write_todos 制定研究计划 2. 逐步执行每个步骤及时更新进度 3. 将搜索结果写入文件系统整理 4. 最终输出完整的研究报告 ,)# 发起一个需要规划的复杂任务resultagent.invoke({messages:[{role:user,content:请调研 Agent 开发领域的三大 Harness 框架Deep Agents、Claude Agent SDK、Codex SDK对比它们的核心能力差异写一份简要分析报告。,}]})print(result[messages][-1].content)运行结果### Agent 开发领域的三大 Harness 框架分析报告 以下是对 **Deep Agents**、**Claude Agent SDK** 以及 **Codex SDK** 三大 AI Agent 开发框架的核心能力对比分析。 --- #### 1. **Deep Agents** - **核心能力** - **模型无关性**支持任意支持 tool calling 的模型如 GPT、Llama、Mistral 等。可以连接本地模型如 LM Studio或第三方云模型如 OpenAI、Anthropic。 - **功能模块化**内置多种核心能力包括 read_file、write_file、edit_file、glob、grep、execute 及 task 等涵盖文件操作、搜索、代码执行、任务执行等功能。 - **任务规划能力**使用 ReAct 架构和内置规划能力通过 write_todos 和执行树管理支持复杂、多步骤的代码修改或分析。 - **记忆系统**通过 Memory-First 协议能够跨会话记忆用户偏好、编码风格、项目上下文等信息。 - **技能系统Skills**可在 skills/ 目录下定义特定领域的任务能力如网页搜索、代码审查等按需加载。 - **部署灵活性** - **CLI本地运行**提供本地终端编程代理“Deep Agents CLI”用户可直接运行。 - **SDK嵌入应用**使用 create_deep_agent() 创建一个标准的 LangGraph 编译图可嵌入到任意 Python 应用中。 - **部署为服务**通过 Managed Deep Agents 在 LangSmith 上运行支持多用户、多任务的安全隔离。 - **子代理系统**支持真正的子代理运行能够将复杂任务拆分为多个并行子任务每个子代理有独立的上下文窗口。 - **安全性与隔离**支持文件资源或系统资源的沙箱隔离提供安全边界。 - **自定义与开源**完全开源MIT 许可支持自定义修改适合监管严格或开发需求多样化的场景。 --- #### 2. **Claude Agent SDK** - **核心能力** - **专为 Claude 设计**专为 Anthropic 的 Claude 模型如 Sonnet、Opus 等开发能充分发挥其强大、安全的模型能力。 - **内置工具链**内置文件操作工具如 edit_file、glob、子代理系统、执行脚本能力等从一开始就支持完整的工具链。 - **沙箱化执行**每个用户都有独立的 Sandboxed 环境确保任务执行与用户的其他操作互不影响。 - **调试与反馈机制**提供基于 evaluate() 的手段进行长期评测适用于构建高质量、可追溯的智能代理。 - **多语言支持**最初以 Python 和 TypeScript 为主正逐步扩展。 - **组织架构与行为**提供 query() 异步生成器使智能体在每一环节都返回治理与验证信息。 - **稳定性**已经在生产环境广泛验证适合企业级使用尤其强调 agent loop 的稳定性。 - **能力限制**虽然强大但其核心对用户是**闭源**的无法直接调整底层逻辑。 - **应用场景**适用于那些依赖 Claude 本身的扩展性、结合其精细的上下文管理和模型特性组建成完整代理的场景。 --- #### 3. **Codex SDK** - **核心能力** - **基于 GPT-5.3-Codex**该 SDK 针对 Codex 模型codex-1进行设计和优化结合多工处理和扎实的 AI 编程能力。 - **任务执行与自动化**Codex 可以自主完成代码编写、错误修正、测试执行、提交更改等任务适合构建全生命周期的 AI 编程助手。 - **沙盒执行**每项任务可在独立的云端沙盒中进行提供受控、安全的环境。 - **支持事件流**通过 Codex SDK开发者可以实时跟踪执行状态、输出内容、错误、token 使用情况等构建详细的操作日志和自动化依赖。 - **前端深度集成**支持终端浏览器和复杂用户界面操作可生成图像并处理视觉信息适合处理复杂任务。 - **插件支持**支持接入多种工具和插件如 GitHub、JIRA、CodeRabbit、Neon、Render 和 Superpowers 等实现全自动化的开发流程。 - **离线与远程调用**可部署为服务适合 CI/CD 持续集成甚至支持本地运行和远程访问。 - **局域网支持**提供辅助、更灵活的功能用于任何对 AI 视觉和操作有需求的开发场景。 - **能力局限**Codex 的核心技术依赖 GPT 模型因此需考虑模型 licensing 的限制并且需要 OpenAI 服务无法完全本地化。 --- #### 4. **三大框架的核心能力对比** | **项目** | **Deep Agents** | **Claude Agent SDK** | **Codex SDK** | |----------------------|----------------------------------------------------------------------------------|-------------------------------------------------------------------------------|--------------------------------------------------------------------------------| | **模型支持** | 支持任意 OpenAI 兼容模型如 GPT、Llama、Mistral甚至可部署本地模型。 | 专为 Anthropic 的 Claude 模型设计无法用于其他模型。 | 使用 GPT 模型Codex-1和 CLI。需依赖 OpenAI API。 | | **功能模块** | 高度模块化支持多种操作系统调用文件系统、shell、network。 | 架构较为紧凑内置文件操作、子代理系统、提交变更等适合构建高度定制化的 agent loop。 | 强调任务执行和自动化并对前端交互进行深入优化适合构建即开即用的助手和自动化工具。 | | **部署方式** | 支持三种部署CLI、SDK 嵌入应用、LangSmith 云端部署。 | 只能自托管受限于闭源核心。 | 支持 CLI、本地部署及云端服务适合自定义部署并企业级使用。 | | **开源程度** | **完全开源**MIT支持自定义与扩展。 | 对外套件开源Python 及 TypeScript 调用接口但内部核心是闭源的。 | 代码部分开源但核心 Codex SDK 是 OpenAI 的资源和模型整体是闭源的。 | | **能力扩展性** | 高度可扩展支持中间件、工具、环境解耦。可灵活插拔。 | 沙盒和 agent loop 已封装但用户无法直接修改底层逻辑扩展有限。 | 想在本地执行、部署、维护或者深度 custom 须依赖 Codex Cloud 接口。 | | **适合场景** | 适合希望本地部署、开放存取并高度自定义、控制模型行为的用户。 | 适合需要 Claude 精细的上下文管理和模型能力适合部署于 open source 或 business scenario。 | 更加灵活尤其适合需要与前端交互、调试 UI、执行长时间任务的超级助手任务。 | | **安全性** | 支持 Sandbox 即“状态隔离”的能力可全局支持沙箱 | 支持对每个沙盒环境隔离的完全封装。 | Codex SDK 支持沙盒环境执行任务但需保证访问权限、代码自由执行、云端信号不泄漏。 | --- #### 5. **总结与建议** - **Deep Agents** - 优点开源、模块化、高度灵活适合多模型、混合环境和本地部署。 - 缺点核心技术基于 OpenAI 兼容模型若希望独立使用非 OpenAI 模型需额外适配。 - 适用自定义 agent 构建适合有一定工程背景的开发者或企业级部署需求。 - **Claude Agent SDK** - 优点强大、安全、稳定性高能直接使用 Claude 预训练的 agent loop。 - 缺点核心闭源使用限制在 Claude 生态。 - 适用希望用 Claude 构建与自身平台集成、靠近 Claude 模型能力、且能独立执行任务如代码修改、编辑权限等的场景。 - **Codex SDK** - 优点功能丰富且支持事件流机制调试、测试、提交更改等流程清晰适合 CI/CD 自动化。 - 缺点依赖 GPT 模型与 OpenAI API代码执行与调试等限制较高相对 Claude 开发环境更灵活但执行效率和模型完整性可能受限。 - 适用需要与前端集成、执行图像生成和工具操作的助手适合部署到开源或闭源平台但需注意授权与限制。 --- ### 结论 选择三个框架中任何一个取决于你的应用场景 - 如果你 **注重开放性和灵活性与可扩展性**可以优先考虑 **Deep Agents**。 - 如果你 **依赖 Claude 的已有能力**并希望直接使用稳定且安全的循环结构**Claude Agent SDK** 是合适的选择。 - 如果你 **需要更图形化的交互能力**或者 **进行 CI/CD 自动化****Codex SDK** 是最优选项。 最终避免盲目比较框架区别 —— 实际能力是否值得投入最好结合你的具体开发需求来决定。deepagents能力全景基本就是三大类1、默认注册的必须有没有可能就出问题了。比如文件系统是最基础的东西没有这个工具调用执行可能都没法搞历史消息压缩总结没了这个上下文直接爆炸调用模型报错、长时间等待没了工具调用不全照样可能引起模型调用报错2、通过专用参数是扩展agent能力如支持子agent、skill、记忆、人工干预、异步3、通过Middleware配置则是更细的能力或功能优化以便提升agent性能或稳定性如规划能力、模型工具重试、模型降级、调用次数限制、信息脱敏等。结语本文从最开始的任务规划执行说起到介绍agent中间件的使用从而更好的理解了TodoListMiddleware的实现原理以及如何各种中间件的作用与使用。参考链接https://datawhalechina.github.io/deepagents-in-action/chapters/ch04-task-planning/
延伸阅读

更多相关文章

2026/9/24 17:36:42

【全宇宙恒等系统云端部署和跑起来】

这是全宇宙恒等系统云端部署和跑起来,和豆包对话工作的文字版,可以看下,也可以学习参考。之前的脑机部署和电磁波部署方式也可以进行升级,然后尝试不同的部署方式,我是用的模式A的部署方式。部署到了一款智能工控板的数…

2026/9/24 17:36:42

从零向 UE 5.3 渲染管线插入一个 Mesh Pass

从零向 UE 5.3 渲染管线插入一个 Mesh Pass 前言 这次实验会在 Base Pass 之后、光照之前,把选中的 Mesh 再画一遍。预期效果很简单:在 UStaticMeshComponent 的 Rendering 高级选项中勾选 bRenderCustomMeshPass,运行时模型会呈现红色。 上…

2026/9/24 18:46:47

Debian控制结构实战:用if/for/while/case打造高效运维脚本

聊 Debian 的 control structures(控制结构),很多人第一反应是语法:if 后面要加 then,for 循环里变量怎么取值,case 的右括号要不要双写。可我在 Debian 上写脚本写了这么多年,发现真正的门槛从…

2026/9/24 18:46:47

智能问答系统文件存储选型与MinIO集成实战指南

最近在做一个智能问答系统,文档上传和文件存储这条链路折腾了我好几周。最开始图省事,所有PDF、Word、图片直接落在本机磁盘,配个Nginx别名路径就完事。结果一上线问题全来了:预览打不开、文件下载到一半断线、多台机器部署后文件…

2026/9/24 18:46:47

CentOS 7上用Docker部署Redis与PostgreSQL完整指南

最近在测试环境要搭一套缓存加关系型数据库的组合,顺手把整个流程从零到一完整走了一遍。今天就以 CentOS 7 为底,把 Docker 装好,再用 Docker 把 Redis 和 PostgreSQL 跑起来。整个过程其实就是一条命令链,但中间值得注意的坑不少…

2026/9/24 18:46:47

Java Web原生实战:Servlet+JDBC手写学生管理系统

简介:本资源是一份面向Java Web初学者与课程设计实践者的完整学生信息管理系统项目,涵盖登录、学生增删改查、管理员密码修改等核心功能模块,适用于高校Java程序设计、Web开发或数据库应用类课程实训。压缩包共78个文件,包含16个J…

2026/9/24 18:46:47

few-shot-gaze复现全程指南:从数据预处理到MAML元学习视线估计

简介:面向计算机视觉与人机交互方向的毕业设计,整份源码包用于复现并优化 Seonwook Park 的 few-shot-gaze 项目,核心任务基于 MPIIFaceGaze 与 GazeCapture 两个公开数据集,解决少样本条件下的视线估计问题。压缩包内共有 93 个文…

2026/9/24 18:41:47

运维转网络安全:6-12个月落地转型路线图

写这篇文章之前,我先说个真实的感受。我身边不少做运维的朋友,干了三五年后都会冒出一个念头:“我是不是该转安全?”原因五花八门——有的是觉得运维天花板低,天天处理琐事;有的是看安全岗位薪资高、越老越…

2026/9/23 12:07:00

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/24 0:00:21

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:21

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:21

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码