当前位置: 首页 > news >正文

OpenManus-通过源码方式本地运行OpenManus,含踩坑及处理方案,chrome.exe位置修改

前言:最近 Manus 火得一塌糊涂啊,OpenManus 也一夜之间爆火,那么作为程序员应该来尝尝鲜

1、前期准备

  • FastGithub:如果有科学上网且能正常访问 github 则不需要下载此软件,此软件是提供国内直接访问 github
  • Git:通过 git 远程拉去 github 代码,当然也可以不用安装
  • Anaconda 或者 Miniconda:python 依赖管理工具
  • 科学上网:如果想去谷歌搜索,则需要支持访问 google.com,如果不需要,则配置访问路径为 百度,请往下看

2、进入 github 下载源码

点我进入OpenManus 仓库

阅读官方提供的文档:OpenManus 中文文档

2.1、下载源码

下载源码分两种方式:

  • 第一种是安装了 Git 的,直接通过命令
git clone https://github.com/mannaandpoem/OpenManus.git
  • 第二种是直接下载 zip 包
    下载 ZIP 包直接点击

2.2、准备工作

  • 创建 python 虚拟环境
# 创建虚拟环境
conda create -p D:\dev\py_repo\open_manus python=3.12
# 激活这个环境
conda activate open_manus
  • 支持 function calling 的大模型 API key

这里推荐使用 阿里云百炼平台,百炼开通后180天内送一定额度的 token,基本上是属于免费级别的

获得 API-KEY
在这里插入图片描述
在这里插入图片描述

  • 获取模型

每个模型都有相应的说明,注意看每个模型的注意事项描述,如果说明了不支持 Function calling 的模型,是无法使用到 OpenManus 中的
在这里插入图片描述
比如这个图片中,deepseek-r1 模型就不支持 Function calling

亲测有效的是 qwen-plus 模型,qwq-32b 也是支持的,不过我没亲测

3、使用 PyCharm 打开源码,并配置虚拟环境

这一步主要是为了阅读源码和启动源码,如果不需要阅读源码的可以直接跳过本步骤

  • 配置解释器
    启动 PyCharm 打开源码,并配置刚刚设置的 open_manus conda 环境,我这里已经配置过了,没有配置过第一步显示的是 Add interpreter
    在这里插入图片描述

  • 选择虚拟环境
    在这里插入图片描述
    选择好以后,点击 OK ,等待环境的初始化和加载,大概也就 10 来分钟左右

4、配置 OpenManus 环境

  • 如果是 PyCharm 启动,则直接手动复制 /config/config.example.toml 将复制出来的文件名改为 config.toml 即可
# Global LLM configuration
[llm]
model = "qwen-plus"
base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1"
api_key = "sk-.................................."
max_tokens = 4096
temperature = 0.0

model :一定要是支持 function calling 的模型
base_url:百炼云平台的接口地址,只要是百炼的模型,接口地址几乎是相同的,不用修改
api_key:这个就是之前注册的 api-key,直接复制接口
其他的都不用修改

  • 如果是通过 CMD 启动的,则使用命令复制文件,然后将正确的内容填写进去即可
cp config/config.example.toml config/config.toml

5、依赖拉取

5.1、激活环境

PyCharm 打开 terminal 窗口,激活 conda 环境,注意这里一定要是在项目的根目录下才可以

conda activate open_manus

5.2、安装依赖

pip install -r .\requirements.txt

完整命令截图如下:
在这里插入图片描述

6、各种踩坑

6.1、不支持 function calling

不支持 tool call,选择支持 function calling 的模型

<400> InternalError.Algo.InvalidParameter: The tool call is not supported.

6.2、模型名字错误

检查模型的名字,是否拼写错误

'The model `xxxxxx` does not exist or you do not have access to it.'

6.3、google_search 无法调用

⚠️ Tool 'google_search' encountered a problem: HTTPSConnectionPool(host='www.google.com', port=443): Max retries exceeded with url: /search?q=Google+homepage&num=12&hl=en&start=0&safe=active (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x0000020960CF1520>, 'Connection to www.google.com timed out. (connect timeout=5)'))
  • 方式1:科学上网全局代理,或者切换稳定的谷歌代理站点
  • 方式2:添加配置,有大佬提交了 pr,支持百度搜索
[llm]
model = "qwen-plus"
base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1"
api_key = "sk-.................................."
max_tokens = 4096
temperature = 0.0# 添加此项代码,走百度搜索
search_agent_config = "baidu"

6.4、循环打印日志 playwright install

2025-03-10 22:07:44.834 | INFO     | app.agent.base:run:137 - Executing step 1/30
2025-03-10 22:07:48.030 | INFO     | app.agent.toolcall:think:53 - ✨ Manus's thoughts: 
2025-03-10 22:07:48.030 | INFO     | app.agent.toolcall:think:54 - 🛠️ Manus selected 1 tools to use
2025-03-10 22:07:48.031 | INFO     | app.agent.toolcall:think:58 - 🧰 Tools being prepared: ['browser_use']
2025-03-10 22:07:48.031 | INFO     | app.agent.toolcall:execute_tool:140 - 🔧 Activating tool: 'browser_use'...
ERROR    [browser] Failed to initialize Playwright browser: BrowserType.launch: Executable doesn't exist at C:\Users\admin\AppData\Local\ms-playwright\chromium-1148\chrome-win\chrome.exe
╔════════════════════════════════════════════════════════════╗
║ Looks like Playwright was just installed or updated.       ║
║ Please run the following command to download new browsers: ║
║                                                            ║
║     playwright install                                     ║
║                                                            ║
║ <3 Playwright Team                                         ║
╚════════════════════════════════════════════════════════════╝
2025-03-10 22:07:48.464 | INFO     | app.agent.toolcall:act:113 - 🎯 Tool 'browser_use' completed its mission! Result: Observed output of cmd `browser_use` executed:
Error: Browser action 'navigate' failed: BrowserType.launch: Executable doesn't exist at C:\Users\admin\AppData\Local\ms-playwright\chromium-1148\chrome-win\chrome.exe
╔════════════════════════════════════════════════════════════╗
║ Looks like Playwright was just installed or updated.       ║
║ Please run the following command to download new browsers: ║
║                                                            ║
║     playwright install                                     ║
║                                                            ║
║ <3 Playwright Team                                         ║
╚════════════════════════════════════════════════════════════╝
2025-03-10 22:07:48.476 | INFO     | app.agent.base:run:137 - Executing step 2/30

首先这个问题是缺少了浏览器,那么需要先下载浏览器组件

python -m playwright install chromiumpip install playwright

安装不上,那么就暴力安装

  • 下载 chromium

下载地址:https://playwright-verizon.azureedge.net/builds/chromium/1148/chromium-win64.zip

  • 解压后放入指定目录

根据错误日志可以看到,程序去这个路径下面寻找 Browser action 'navigate' failed: BrowserType.launch: Executable doesn't exist at C:\Users\admin\AppData\Local\ms-playwright\chromium-1148\chrome-win\chrome.exe,那么就直接把浏览器复制到这个路径下即可

在这里插入图片描述

6.5、其他踩坑

如果你遇到了其他坑,就去这里面搜索问题:

https://github.com/mannaandpoem/OpenManus/issues

总能找到问题的解决办法

7、补充

2025-03-11补充

deepseek-r1 模型均不可用

deepseek-r1 不管是阿里云百炼平台,还是 deepseek 官网,都是不支持 Function calling 的,亲测结果
在这里插入图片描述
deepseek官网唯一支持 Function calling 的模型 deepseek-chat 在官方的描述如下:
在这里插入图片描述
deepseek-chat 模型亲测有效:

提示词:搜索整理昨天的所有AI相关的最新咨询,整理成markdown文件,文件名为:news_ai

经过漫长的等待,最终得到了如下的结果:超时了

修改 chrome.exe 位置

修改位置需要修改源代码,有三处地方需要修改

  • /app/config.py 文件

第四行代码和第 26 行代码修改
在这里插入图片描述

from typing import Dict, Optional  # ,Optional 为添加项class LLMSettings(BaseModel):model: str = Field(..., description="Model name")base_url: str = Field(..., description="API base URL")api_key: str = Field(..., description="API key")max_tokens: int = Field(4096, description="Maximum number of tokens per request")temperature: float = Field(1.0, description="Sampling temperature")api_type: str = Field(..., description="AzureOpenai or Openai")api_version: str = Field(..., description="Azure Openai version if AzureOpenai")chrome_instance_path: Optional[str] = Field(None, description="Local Chrome installation path") # 为添加项
  • browser_use_tool.py 修改

将 _ensure_browser_initialized 函数替换为如下代码

    async def _ensure_browser_initialized(self) -> BrowserContext:"""Ensure browser and context are initialized."""if self.browser is None:# 舍弃本句代码# self.browser = BrowserUseBrowser(BrowserConfig(headless=False))# 新增如下代码llm_config = config.llm['default']chrome_instance_path = llm_config.chrome_instance_pathprint(chrome_instance_path)self.browser = BrowserUseBrowser(BrowserConfig(headless=False, chrome_instance_path=chrome_instance_path))if self.context is None:self.context = await self.browser.new_context()self.dom_service = DomService(await self.context.get_current_page())return self.context
  • config.toml 新增配置项
[llm]
model = "qwen-plus"
base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1"
api_key = "sk-xxxxxx"
chrome_instance_path = "D:\\software\\chrome-win\\chrome.exe"   # 此项为新增配置项
max_tokens = 4096
temperature = 0.0

亲测有效

相关文章:

OpenManus-通过源码方式本地运行OpenManus,含踩坑及处理方案,chrome.exe位置修改

前言&#xff1a;最近 Manus 火得一塌糊涂啊&#xff0c;OpenManus 也一夜之间爆火&#xff0c;那么作为程序员应该来尝尝鲜 1、前期准备 FastGithub&#xff1a;如果有科学上网且能正常访问 github 则不需要下载此软件&#xff0c;此软件是提供国内直接访问 githubGit&#…...

【性能测试】Jmeter下载安装、环境配置-小白使用手册(1)

本篇文章主要包含Jmeter的下载安装、环境配置 添加线程组、结果树、HTTP请求、请求头设置。JSON提取器的使用&#xff0c;用户自定义变量 目录 一&#xff1a;引入 1&#xff1a;软件介绍 2&#xff1a;工作原理 3&#xff1a;安装Jmeter 4&#xff1a;启动方式 &#xf…...

HTML星球大冒险之路线图

第一章&#xff1a;欢迎来到 HTML 星球&#xff01; 1.1 宇宙的基石&#xff1a;HTML 是什么&#xff1f; &#x1f30d; 比喻&#xff1a;HTML 是网页世界的「乐高积木」&#xff0c;用标签搭建一切可见内容&#x1f3af; 目标&#xff1a;理解 HTML 的作用&#xff0c;掌握…...

初识大模型——大语言模型 LLMBook 学习(一)

1. 大模型发展历程 &#x1f539; 1. 早期阶段&#xff08;1950s - 1990s&#xff09;&#xff1a;基于规则和统计的方法 代表技术&#xff1a; 1950s-1960s&#xff1a;规则驱动的语言处理 早期的 NLP 主要依赖 基于规则的系统&#xff0c;如 Noam Chomsky 提出的 生成语法&…...

LabVIEW伺服阀高频振动测试

在伺服阀高频振动测试中&#xff0c;闭环控制系统的实时性与稳定性至关重要。针对用户提出的1kHz控制频率需求及Windows平台兼容性问题&#xff0c;本文重点分析NI PCIe-7842R实时扩展卡的功能与局限性&#xff0c;并提供其他替代方案的综合对比&#xff0c;以帮助用户选择适合…...

AI编程工具-(七)

250309,10这几天都在用通义灵码搞做建模分析。 感想&#xff0c;指令越具体&#xff0c;实现效果越好。 依然是之前的时许数据&#xff0c;这几天分析效果没有提升。 画的几个有意思的图表和效果 主要觉得这图好看&#xff0c;提示词不复杂。 预测效果 预测准确性提升不大聊…...

什么是一致性模型,在实践中如何选择?

一、一致性模型 1、强一致性(Strong Consistency) ①定义:强一致性意味着在分布式系统中的每个读取操作,都能读取到最近写入的数据。也就是说,所有节点都始终保持相同的数据状态。 ②特点:写操作对所有节点立即可见,所有的读取操作在任何节点上都能看到最新的写入。 …...

Python项目-智能家居控制系统的设计与实现

1. 引言 随着物联网技术的快速发展&#xff0c;智能家居系统已经成为现代家庭生活的重要组成部分。本文将详细介绍一个基于Python的智能家居控制系统的设计与实现过程&#xff0c;该系统能够实现对家庭设备的集中管理和智能控制&#xff0c;提升家居生活的便捷性和舒适度。 2…...

RDP连接无法复制粘贴问题的排查与解决指南

RDP连接无法复制粘贴问题的排查与解决指南 问题描述注意事项排查原因检查RDP剪贴板进程是否正常检查组策略设置检查权限和安全设置检查网络连接 解决方式重启rdpclip.exe进程启用RDP剪贴板重定向调整组策略设置检查并调整安全设置更新驱动程序和系统检查网络连接使用其他远程连…...

IDEA与Maven使用-学习记录(持续补充...)

1. 下载与安装 以ideaIU-2021.3.1为例&#xff0c;安装步骤&#xff1a; 以管理员身份启动ideaIU-2021.3.1修改安装路径为&#xff1a;D:\Program Files\JetBrains\IntelliJ IDEA 2021.3.1勾选【创建桌面快捷方式】&#xff08;可选&#xff09;、【打开文件夹作为项目】&…...

Go 语言封装 HTTP 请求的 Curl 工具包

文章目录 Go 语言封装 HTTP 请求的 Curl 工具包&#x1f3d7;️ 工具包结构简介核心结构体定义初始化函数 &#x1f31f; 功能实现1. 设置请求头2. 构建请求3. 发送请求4. 发送 GET 请求5. 发送 POST 请求6. 发送 PUT 请求7. 发送 DELETE 请求8. 读取响应体 &#x1f4a1; 实现…...

RK3568 SD卡调试记录

文章目录 1、环境介绍2、概念理清3、原理图查看4、dts配置5、验证6、SD卡启动6.1、启动优先级6.2、启动流程6.2.1、Maskrom(Boot ROM)启动优先级6.2.2、Pre-loader(SPL)启动优先级 6.3、如何从sd卡启动&#xff1f;6.3.1、制作sd启动卡6.3.2、sd卡启动 7、总结 1、环境介绍 硬…...

高效获取历史行情数据:xtquant的实战应用

高效获取历史行情数据&#xff1a;xtquant的实战应用 &#x1f680;量化软件开通 &#x1f680;量化实战教程 在量化交易领域&#xff0c;历史行情数据是构建和测试交易策略的基础。无论是回测策略的有效性&#xff0c;还是进行市场分析&#xff0c;高质量的历史数据都是不可…...

【python爬虫】酷狗音乐爬取练习

注意&#xff1a;本次爬取的音乐仅有1分钟试听&#xff0c;仅作学习爬虫的原理&#xff0c;完整音乐需要自行下载客户端。 一、 初步分析 登陆酷狗音乐后随机选取一首歌&#xff0c;在请求里发现一段mp3文件&#xff0c;复制网址&#xff0c;确实是我们需要的url。 复制音频的…...

阿里云 DataWorks面试题集锦及参考答案

目录 简述阿里云 DataWorks 的核心功能模块及其在企业数据治理中的作用 简述 DataWorks 的核心功能模块及其应用场景 解释 DataWorks 中工作空间、项目、业务流程的三层逻辑关系 解释 DataWorks 中的 “节点”、“工作流” 和 “依赖关系” 设计 解释 DataWorks 中 “周期任…...

uniapp+Vue3 开发小程序的下载文件功能

小程序下载文件&#xff0c;可以先预览文件内容&#xff0c;然后在手机上打开文件的工具中选择保存。 简单示例&#xff1a;&#xff08;复制到HBuilder直接食用即可&#xff09; <template><view class"container-detail"><view class"example…...

Apache Log4j 2

目录 1. Apache Log4j 2 简介 1.1 什么是Log4j 2&#xff1f; 1.2 Log4j 2 的主要特性 2. Log4j 2 的核心组件 2.1 Logger 2.2 Appender 2.3 Layout 2.4 Filter 2.5 Configuration 3. Log4j 2 的配置 4. Log4j 2 的使用示例 4.1 Maven 依赖 4.2 示例代码 4.3 输出…...

4.2.2 ArrayList类

ArrayList类与List类的用法差不多&#xff0c;提供的方法也差不多。但是与List不同的是&#xff0c;ArrayList可以包含任意类型的数据&#xff0c;但是相应的&#xff0c;要使用包含的数据&#xff0c;就必须对数据做相应的装箱和拆箱&#xff08;关于装箱和拆箱&#xff0c;请…...

L1-088 静静的推荐

L1-088 静静的推荐 - 团体程序设计天梯赛-练习集 (pintia.cn) 题解 这里代码很简单&#xff0c;但是主要是循环里面的内容很难理解&#xff0c;下面是关于循环里面的内容理解&#xff1a; 这里 n 10 表示有 10 个学生&#xff0c;k 2 表示企业接受 2 批次的推荐名单&#…...

普及听力保健知识竞赛

普及听力保健知识竞赛 热点指数&#xff1a;★★★ 日期&#xff1a;3月3日 关键词&#xff1a;爱耳护耳、听力健康、耳部保健、听力科普 适合行业&#xff1a;医疗健康、健康护理、教育培训、公益组织 推荐功能&#xff1a;答题、H5宣传 宣传方向&#xff1a;广泛普及听力…...

小结: IGMP协议

IGMP&#xff08;Internet Group Management Protocol&#xff09;协议详解 IGMP&#xff08;Internet Group Management Protocol&#xff09;是IPv4 组播&#xff08;Multicast&#xff09;通信的控制协议&#xff0c;主要用于主机和路由器之间的组播成员管理。IGMP 允许主机…...

Dify 本地部署教程

目录 一、下载安装包 二、修改配置 三、启动容器 四、访问 Dify 五、总结 本篇文章主要记录 Dify 本地部署过程,有问题欢迎交流~ 一、下载安装包 从 Github 仓库下载最新稳定版软件包,点击下载~,当然也可以克隆仓库或者从仓库里直接下载zip源码包。 目前最新版本是V…...

ConcurrentHashMap从源码总结使用注意事项(源码)

ConcurrentHashMap实现原理 目录 ConcurrentHashMap实现原理核心源码解读&#xff08;1&#xff09;数据结构: 采用数组链表/红黑树&#xff08;2&#xff09;初始化&#xff08;3&#xff09;并发扩容&#xff08;4&#xff09;put 操作流程&#xff08;5&#xff09;计数 siz…...

前端 UI 框架发展史

上一小节我们了解了前端 UI 框架的作用和意义&#xff0c;接下来我们再来了解前端 UI 框架的发展历史。 虽然是讲历史&#xff0c;但我不想讲得太复杂&#xff0c;也不打算搞什么编年史记录啥的&#xff0c;毕竟我们不是来学历史的。 我会简单描述一下前端 UI 框架的发展历程…...

【工控】线扫相机小结 第五篇

背景介绍 线扫相机通过光栅尺的脉冲触发&#xff0c; 我在调试线扫过程中&#xff0c;发现图像被拉伸&#xff0c;预设调节分配器。图像正常后&#xff0c;我提高的相机的扫描速度&#xff08;Y轴动的更快了&#xff09;。 动的更快的发现&#xff0c;图像变短了&#xff08;以…...

AI与SEO关键词智能解析

内容概要 人工智能技术正重塑搜索引擎优化的底层逻辑&#xff0c;其核心突破体现在关键词解析维度的结构性升级。通过机器学习算法对海量搜索数据的动态学习&#xff0c;AI不仅能够识别传统TF-IDF模型中的高频词汇&#xff0c;更能捕捉语义网络中隐含的关联特征。下表展示了传…...

STM32---FreeRTOS消息队列

一、简介 1、队列简介&#xff1a; 队列&#xff1a;是任务到任务&#xff0c;任务到中断、中断到任务数据交流的一种机制&#xff08;消息传递&#xff09;。 FreeRTOS基于队列&#xff0c;实现了多种功能&#xff0c;其中包括队列集、互斥信号量、计数型信号量、二值信号量…...

开关模式电源转换器 EMI/EMC 的集成仿真

介绍 在电力电子领域&#xff0c;电磁干扰 &#xff08;EMI&#xff09; 和电磁兼容性 &#xff08;EMC&#xff09; 问题可以决定设计的成败。开关模式电源转换器虽然高效且紧凑&#xff0c;但却是电磁噪声的常见来源&#xff0c;可能会对附近的组件和系统造成严重破坏。随着…...

Java虚拟机之垃圾收集(一)

目录 一、如何判定对象“生死”&#xff1f; 1. 引用计数算法&#xff08;理论参考&#xff09; 2. 可达性分析算法&#xff08;JVM 实际使用&#xff09; 3. 对象的“缓刑”机制 二、引用类型与回收策略 三、何时触发垃圾回收&#xff1f; 1. 分代回收策略 2. 手动触发…...

linux---天气爬虫

代码概述 这段代码实现了一个天气查询系统&#xff0c;支持实时天气、未来天气和历史天气查询。用户可以通过终端菜单选择查询类型&#xff0c;并输入城市名称来获取相应的天气信息。程序通过 TCP 连接发送 HTTP 请求&#xff0c;并解析返回的 JSON 数据来展示天气信息。 #in…...