Java版Manus实现来了,Spring AI Alibaba发布开源OpenManus实现

此次官方发布的 Spring AI Alibaba OpenManus 实现,包含完整的多智能体任务规划、思考与执行流程,可以让开发者体验 Java 版本的多智能体效果。它能够根据用户的问题进行分析,操作浏览器,执行代码等来完成复杂任务等。

项目源码及体验地址:spring-ai-alibaba-openmanus

官网及博客地址:java2ai.com

效果展示

话不多说,先看运行效果,以下是我们通过几个实际问答记录展示的 Spring AI Alibaba OpenManus 实际使用效果。

  1. 打开百度浏览器,在搜索框输入:阿里巴巴最最近一周股价,根据搜索到的信息绘制最近一周的股价趋势图并保存到本地目录。

  1. 我计划在接下来的五一劳动节假期到韩国旅行,行程是从杭州出发到韩国首尔,总预算为10000元。我想体验韩国的风土人情、文化、普通老百姓的生活,总行程计划为5天。请提供详细的行程并制作成一个简单的HTML旅行手册,其中包含地图、景点描述、基本的韩语短语和旅行提示,以供我在整个旅程中参考。

  1. 在本机的/tmp/docs目录下有一些中文文档 ,请依次将这些文档翻译为中文并保存到一个独立文件,将新生成的文件都存放到/tmp/endocs目录下

总体架构与原理

Spring AI Alibaba Openmanus 与 Python 版本 OpenManus 设计理念相似,其总体架构如下图所示。

分析上图架构,我们可以把它看作是一款多 Agent 智能自动协作实现,其中:

  • Planning Agent 负责任务的分解与规划,将用户问题拆解成几个可顺序执行的 step。planning agent 调用 planning tool 动态生成一个串行的 Manus Agent 子工作流。
  • 多个 Manus Agent 组成一个链式、可顺序依次执行的子工作流。子工作流中的每个 agent 对应上述规划的一个 step,每个 agent 都是一个 ReAct 架构设计,即通过多轮 Tool 调用完成具体子任务。
  • Summary Agent 用来做最后的任务总结

实现总结与展望

Spring AI Alibaba OpenManus 实现中的问题

当前的 OpenManus 实现主要有如下问题:

  • 仓库中 80% 代码都在解决流程编排问题,入串联 manus agent 子流程、做消息记忆、转发工具调用、全局状态修改等,这部分工作可以交给高度抽象的 agent 框架实现,以简化开发复杂度。
  • 工具的覆盖度与执行效果一般,如浏览器使用、脚本执行工具等。
  • 规划及工作流程中无法人为介入进行 review、动态修改、回退等动作。
  • 当前 OpenManus 实现的效果调试相对比较困难。

Spring AI Alibaba 未来规划与解决方案

Spring AI Alibaba 是面向 Java 开发者的开源 AI 应用开发框架,它与 Spring 生态完美适配,可以基于 Spring AI Alibaba 构建全新的 AI 应用,也可以使用它为传统 Spring Boot 应用做智能化升级。

从上图我们可以看出,除了框架原子抽象之外,Spring AI Alibaba 重点规划了 multi-agent 框架,配套生态如可视化评估平台、调试 Studio 等。

接下来,我们将会发布 Spring AI Alibaba Graph 多 agent 框架,以及基于 Spring AI Alibaba Graph 的强化版 OpenManus 实现,预期代码量将比当前减少 70% 以上,整体易读性与效果大幅提升,让开发者可以此为基础构建面向任意场景的智能体应用。

目前 Spring AI Alibaba 已经支持 MCP 工具接入,解析来我们将为 OpenManus 接入更成熟的 MCP server 实现,以提升整体工作表现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/75026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux网络与网络编程】02.初识Socket编程

1. 数据传输的目的 前一篇文章中我们讲解了网络传输的流程,那么网络传输的目的是什么呢?难道我们只是将数据从一台主机传输到另一台主机吗? 当然不是的!因为数据是给人用的。比如:聊天是人在聊天,下载是人…

电脑连不上手机热点会出现的小bug

一、问题展示 注意: 不要打开 隐藏热点 否则他就会在电脑上 找不到自己的热点 二、解决办法 把隐藏热点打开即可

CUDA专题3:为什么GPU能改变计算?深度剖析架构、CUDA®与可扩展编程

1. 简介 1.1. 使用 GPU 的优势 图形处理器(GPU)在相近的成本和功耗范围内,能够提供比中央处理器(CPU)更高的指令吞吐量和内存带宽。许多应用程序利用这些优势,在 GPU 上的运行速度远超 CPU(参见《GPU 应用》)。其他计算设备(如 FPGA)虽然能效也很高,但其编程灵活性…

Linux输入系统应用编程

什么是输入系统 Linux 输入系统是处理用户输入设备(如键盘、鼠标、触摸屏、游戏手柄等)的软件架构。在应用编程层面,它提供了与这些输入设备交互的接口。 主要组成部分 输入设备驱动层:直接与硬件交互的驱动程序 输入核心层:内核中的输入子…

StarRocks BE宕机排查

StarRocks BE宕机排查 排查是否OOM dmesg -T|grep -i oom #排查是否oom原因: 2.X版本OOM原因 BE 的配置文件 (be.conf) 中 mem_limit 配置不合理,需要配置mem_limit(机器总内存-其他服务占用内存-1~2g(系统预留)) 比如机器内存40G,上面有…

逻辑回归(Logistic Regression)模型的概率预测函数

以二分类问题为例,常见的损失函数有 负对数似然损失(neg log-likelihood loss),交叉熵损失(cross entropy loss),deviance loss指数损失(exponential loss)。 前三者虽然名字不同,但却具有相同的表达形式。此外,neg …

函数式组件中的渲染函数 JSX

在 Vue.js 和 React 等现代前端框架中,函数式组件已成为一种非常流行的设计模式。函数式组件是一种没有内部状态和生命周期方法的组件,其主要功能是接受 props 并渲染 UI。随着这些框架的演进,渲染函数和 JSX(JavaScript XML&…

Android 动态设置默认Launcher(默认应用 电话-短信-浏览器-主屏幕应用))

Android 动态设置默认Launcher(默认应用 电话-短信-浏览器-主屏幕应用)) 文章目录 场景需求参考资料思路期待效果 实现方案源码流程分析和思路实现DefaultAppActivityHandheldDefaultAppFragmentHandheldDefaultAppPreferenceFragmentDefaultAppChildFragmentDefaul…

Qt下载模板到本地文件内容丢失问题

上源码 关键点已标注在源码中 A, B… // 保存的文件路径后缀QString dateTime Myapp::getCurrentTimeDescYMDHms().replace(" ", "").replace("-", "").replace(":", "");// 临时文件名称QString newFileName Q…

【数学建模】动态规划算法(Dynamic Programming,简称DP)详解与应用

动态规划算法详解与应用 文章目录 动态规划算法详解与应用引言动态规划的基本概念动态规划的设计步骤经典动态规划问题1. 斐波那契数列2. 背包问题3. 最长公共子序列(LCS) 动态规划的优化技巧动态规划的应用领域总结 引言 动态规划(Dynamic Programming,简称DP)是一…

蓝桥杯备考------>双指针(滑动窗口)

来看哈我们这道例题 我们第一种想法应该就是暴力求解,枚举每个子数组 当我们枚举第一个数的时候,我们要从第一个数开始挨个枚举每个结尾 如图,以第一个数开头的最长不重复数我们就枚举完了 然后我们让两个指针全部到第二个数 再枚举第二个…

python实现股票数据可视化

最近在做一个涉及到股票数据清洗及预测的项目,项目中需要用到可视化股票数据这一功能,这里我与大家分享一下股票数据可视化的一些基本方法。 股票数据获取 目前,我已知的使用python来获取股票数据方式有以下三种: 爬虫获取,实现…

【15】Selenium 爬取实战

一、selenium适用场景 二、爬取目标 三、爬取列表页 (1)初始化 (2)加载列表页 (3)解析列表页 (4)main 四、爬取详情页 (1)加载详情页 (2…

如何封装一个上传文件组件

#今天用el-upload感到很多不方便,遂决定自己封装一个。注:本文不提供表面的按钮样式和文件上传成功后的样式,需要自己创建。本文仅介绍逻辑函数# 1,准备几个表面用来指引上传的元素 2,创造统一的隐藏文件上传输入框&…

【计网】数据包

期末复习自用的,处理得比较草率,复习的同学或者想看基础的同学可以看看,大佬的话可以不用浪费时间在我的水文上了 1.数据包的定义: 数据包是网络通信中的基本单元,它包含了通过网络传输的所有必要信息。数据包的结构…

HTTP抓包Websocket抓包(Fiddler)

近期时常要和各个厂商的java云平台打交道:登录、上传、下载等,程序的日志虽必不可少,但前期调试阶段,免不了遇到问题,这时有一个称手的抓包工具就显得尤为重要了。 Fiddler Everywhere是一款跨平台的网络调试工具&…

Git和GitCode使用(从Git安装到上传项目一条龙)

第一步 菜鸟教程-Git教程 点击上方链接,完成Git的安装,并了解Git 工作流程,知道Git 工作区、暂存区和版本库的区别 第二步 GitCode官方帮助文档-SSH 公钥管理 点击上方链接,完成SSH公钥设置 第三步(GitCode的官方引…

基于 WebAssembly 的 Game of Life 交互实现

一、前言 在前期的实现中,我们使用 Rust 编写核心逻辑,并通过 WebAssembly 将其引入到 Web 环境中,再利用 JavaScript 进行渲染。接下来,我们将在这一基础上增加用户交互功能,使模拟过程不仅能够自动演化,…

【keil】单步调试

一、步骤 1、打开stc-isp软件 2.打开keil仿真设置,选择对应的单片机型号 3.点击将所选目标单片机设置为仿真芯片,点击下载,按一下单片机打下载按钮 4.此时已经将仿真程序下载到单片机 5.此时点击options,找到debug选择STC Montor 51 Driv…

c++弱指针实现原理

在 C 中,弱指针(std::weak_ptr)是一种特殊的智能指针,其核心目标是‌解决 std::shared_ptr 的循环引用问题‌,同时不增加对象的引用计数。它的实现原理基于与 std::shared_ptr 共享的 ‌控制块(Control Blo…