1. 云服务器上跑 OpenManus,为什么总卡在 Python 依赖和 LLM 接入
OpenManus 是 MetaGPT 社区成员开源的一个通用 AI Agent 项目,你可以把它理解成「能在自己机器上跑、能看它一步步思考并调用工具」的智能体框架。它不需要邀请码,克隆代码、配好 LLM API 就能用,主代理负责理解需求并分配任务,PlanningAgent 把复杂任务拆成可执行步骤,ToolCallAgent 再去调用浏览器自动化、代码执行器、文件处理等工具。适合谁?适合想在云服务器上长期挂一个 Agent、又不想被本地环境折腾的开发者。
但真到云平台上从零部署,坑基本集中在两处:一是 Python 版本和依赖冲突,系统自带的 Python 往往被其他服务占用,直接pip install很容易把全局环境污染,甚至把系统工具搞崩;二是 LLM 接入配置,OpenManus 的config.toml里要填model、base_url、api_key,很多人手里有好几个模型的 Key,每换一个模型就改一次配置,管理起来很乱。
这篇就按「云服务器 → conda 隔离环境 → 接入 TaoToken 统一 Key → 启动验证」的顺序走一遍,命令和配置都给全,你照着敲就能跑起来。核心思路是:用 conda 把 OpenManus 的 Python 环境单独关起来,用 TaoToken 的统一 Key 和 API 通道地址把 LLM 接入这层收口,后面换模型只改一个model字段。
2. 前置准备:TaoToken 统一 Key 与 API 通道地址
在动服务器之前,先把 LLM 接入这层准备好,不然 OpenManus 启动了也跑不动任务。TaoToken 在这里扮演的角色是「统一 Key + 统一 API 通道」:你不需要在 OpenManus 里分别配 OpenAI、Anthropic 等各家地址,而是把base_url指向同一个通道地址,api_key用同一个 Key,换模型时只改model名字。
具体操作路径:
先去官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 注册并登录,然后在控制台里创建 API Key。控制台入口在 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,Key 管理页在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。创建完把 Key 复制出来,形如sk-...,先存到本地,后面写进config.toml。
API 通道地址统一用 https://taotoken.net/api ,注意这个地址后面不加 UTM 参数,直接作为base_url的基础。OpenManus 走的是 OpenAI 兼容协议,所以base_url填https://taotoken.net/api/v1这种带/v1的形式即可(具体以你所用模型在文档里的说明为准,接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite )。
提示:Key 只创建一次就够,后面 OpenManus 的
[llm]和[llm.vision]两段都复用同一个 Key,不用分别申请。
如果你后面要长期跑编码类、Agent 类任务,可以了解下 Coding Plan( https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ),按套餐走比单次调用更省心;只是想先验证模型通不通,用模型对话页( https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite )发一条消息就能确认 Key 是否生效。
3. 云服务器上创建 conda 隔离环境并部署 OpenManus
这一章是主体,从登录云服务器开始,到依赖装完为止。假设你已经有一台能 SSH 登录的云主机(Ubuntu 22.04 为例),并且有 sudo 权限。
3.1 安装 Miniconda 并初始化
先确认系统里有没有 conda:
conda --version如果没有,装一个 Miniconda(比 Anaconda 轻,云服务器上够用):
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh安装过程中一路回车,最后问是否conda init选 yes。装完重新开一个 SSH 会话,或者执行:
source ~/.bashrc conda --version能打印出版本号就说明 conda 可用了。这一步很关键,很多人装完不重开会话,后面conda activate报CommandNotFoundError,就是没初始化。
3.2 创建 OpenManus 专用环境
OpenManus 官方推荐 Python 3.12,我们单独建一个名为open_manus的环境,和系统 Python 完全隔离:
conda create -n open_manus python=3.12 -y-y是自动确认,省得中途还要输 y。创建完激活:
conda activate open_manus python --version应该输出Python 3.12.x。如果提示conda init相关错误,执行一次conda init然后重开会话即可。
3.3 克隆项目并安装依赖
git clone https://github.com/mannaandpoem/OpenManus.git cd OpenManus pip install -r requirements.txt依赖里包含浏览器自动化、代码执行等组件,装的时候耐心等。如果某一步卡在编译,多半是缺系统库,Ubuntu 上补一下:
sudo apt-get update sudo apt-get install -y build-essential python3-dev装完可以用pip list | grep -i openai之类确认关键包在不在。这里强调一下:所有pip install都必须在conda activate open_manus之后执行,否则会装到 base 环境或系统环境,后面启动时 import 报错,排查起来很费劲。
3.4 生成并填写 config.toml
OpenManus 的配置模板在config/config.example.toml,需要复制成config.toml再改:
cd config cp config.example.toml config.toml vim config.toml按i进入插入模式,改完按Esc,输入:wq保存退出。核心是把[llm]和[llm.vision]两段指向 TaoToken 的统一通道:
# Global LLM configuration [llm] model = "claude-3-5-sonnet" base_url = "https://taotoken.net/api/v1" api_key = "sk-你的TaoTokenKey" max_tokens = 4096 temperature = 0.0 # Optional configuration for specific LLM models [llm.vision] model = "claude-3-5-sonnet" base_url = "https://taotoken.net/api/v1" api_key = "sk-你的TaoTokenKey"model字段填你在 TaoToken 里想用的模型名,base_url统一走https://taotoken.net/api/v1,api_key两段填同一个 Key。这样以后换模型,只改model一处,不用动地址和 Key。
注意:
config.toml里含 Key,别提交到 Git,也别贴到公开群里。项目.gitignore一般已经忽略它,自己再确认一下。
4. 启动验证:跑通一次请求看结果
配置写完,回到项目根目录启动主程序:
cd ~/OpenManus conda activate open_manus python main.py正常的话会看到 OpenManus 的交互提示,输入一个简单任务,比如「帮我列一下当前目录下的文件并说明用途」。它会先规划、再调用工具、最后给结果。如果 LLM 接入正确,你能看到它一步步输出思考过程;如果 Key 或地址有问题,通常会在第一次调用模型时就报错。
想更轻量地先验证 Key 通不通,可以单独发一条请求:
curl https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoTokenKey" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-3-5-sonnet", "messages": [{"role": "user", "content": "ping"}] }'返回里有choices字段就说明 Key 和通道都正常,再去跑main.py就稳了。这一步能帮你把「是 Key 问题还是 OpenManus 配置问题」快速分开。
5. 本篇常见报错排查
部署过程中最容易撞上的几类问题,按现象对号入座。
conda: command not found:Miniconda 装完没重开会话,或者conda init没执行。执行source ~/.bashrc,还不行就重开 SSH。
ModuleNotFoundError: No module named 'xxx':依赖装到了别的环境。确认conda activate open_manus已生效,再pip install -r requirements.txt重装一遍。
启动后调用模型报 401 / invalid api key:config.toml里 Key 填错,或者base_url写成了不带/v1的地址。对照第 3.4 节的配置检查,Key 前后不要有空格。
报连接超时 / connection error:先确认服务器能正常访问外网,再用第 4 节的curl单独测通道地址。如果curl通而main.py不通,多半是config.toml没保存成功,重新cat config/config.toml看一眼内容。
config.toml改了没生效:确认改的是config/config.toml而不是config.example.toml,并且启动时的工作目录是项目根目录。
浏览器自动化相关报错:依赖里的浏览器组件可能缺系统库,按 3.3 节补build-essential,必要时单独装 Playwright 的浏览器依赖。
6. 后续怎么用:统一 Key 换模型与长期运行
跑通之后,日常维护其实很轻。想换模型,只改config.toml里[llm]和[llm.vision]的model字段,base_url和api_key保持 TaoToken 的统一配置不动,重启python main.py即可。这样你手里多个模型可以随时切换,不用维护多套 Key。
如果打算把 OpenManus 当长期 Agent 用,建议在云服务器上用tmux或nohup挂后台,避免 SSH 断开就停:
tmux new -s openmanus conda activate open_manus python main.py按Ctrl+B再按D脱离会话,下次tmux attach -t openmanus回来。Key 管理、用量查看都在控制台 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,接入细节以文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 为准。编码类、Agent 类任务跑得多的话,Coding Plan( https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite )会比零散调用更合适。