1. 为什么要在本地跑一个 OpenManus
OpenManus 是一个用 Python 写的通用 AI Agent 框架,核心能力是把「大模型思考」和「工具执行」串成一个循环:模型先想一步,决定调用哪个工具,工具跑完把结果塞回上下文,模型再想下一步,直到任务完成。它适合谁?适合想自己动手搭一个能查资料、能跑代码、能读写文件的自动化助手的开发者,也适合想研究 ReAct 循环和 Flow 多代理协作到底怎么落地的人。
我关注它是因为它把 Agent 的两条路线都摆出来了:单代理走main.py,用 ReAct 模式做「思考-行动」循环;多代理走run_flow.py,用 Planning Agent 先出计划,再交给执行 Agent 逐步完成。这个设计对理解 Agent 工程很有帮助。
但真正上手时,第一个卡点往往不是代码,而是模型接入。OpenManus 默认配置指向的是某一家模型服务,你要么改config.toml里的base_url和api_key,要么就得在代码里硬编码。如果同时想试几个模型,或者团队里多人共用一套环境,Key 管理就会变得很乱。这篇就围绕这个场景,讲怎么用 TaoToken 的统一 Key 和 API 通道,把 OpenManus 的模型接入收敛成一份可复制的配置骨架,然后跑通一次完整的 ReAct 任务。
TaoToken 在这里的角色是统一模型接入层:你拿一个 Key,配一个base_url,就能在 OpenManus 里切换不同模型,不用为每个模型单独维护一套环境变量。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api ,注意 API 地址不带 UTM 参数。
2. 前置准备:Python 环境与 TaoToken Key
2.1 Python 版本和依赖
OpenManus 对 Python 版本有要求,建议 3.11 及以上。我试过 3.10,部分依赖会报类型相关的错,升到 3.11 就顺了。先确认版本:
python3.11 --version如果系统里没有 3.11,可以用 pyenv 或 conda 装一个。然后克隆仓库并建虚拟环境:
git clone https://github.com/mannaandpoem/OpenManus.git cd OpenManus python3.11 -m venv venv source venv/bin/activate pip install -r requirements.txtWindows 下激活命令换成venv\Scripts\activate。依赖装完后,项目根目录会有一个config目录,里面是配置模板,下一步就是改它。
2.2 拿 TaoToken Key 和确认通道
打开 TaoToken 控制台,在 API Keys 页面创建一个 Key。创建时建议给它起个能认出来的名字,比如openmanus-local,方便后面排查是哪个环境在用。创建完复制出来,只显示一次。
然后确认两件事:一是 API 根地址用https://taotoken.net/api,不要带末尾斜杠;二是模型名要和你账号下可用的模型对上。TaoToken 的模型对话页面可以先用网页版试一句,确认 Key 和模型都通,再去配 OpenManus,这样能把「Key 问题」和「OpenManus 配置问题」分开排查。
注意:Key 不要写进会提交到 Git 的文件里。下面配置里我会用占位符,你本地替换成真实 Key,并且把
config.toml加进.gitignore。
3. 可复制配置:config.toml 与 settings.json 骨架
3.1 config.toml 的 llm 段
OpenManus 读的是config/config.toml。核心是[llm]段,把base_url指向 TaoToken 的 API 地址,api_key填你的 Key,model填你要用的模型名。下面这份可以直接复制,改三个值就行:
# Global LLM configuration [llm] model = "gpt-4o-mini" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoTokenKey" max_tokens = 4096 temperature = 0.0 # Optional configuration for vision models [llm.vision] model = "gpt-4o-mini" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoTokenKey"temperature = 0.0是 OpenManus 默认值,Agent 场景下低温度能让工具选择更稳定,建议先别改。max_tokens按模型上限来,4096 对大多数任务够用。
如果你想让 Planning Agent 用推理型模型、执行 Agent 用通用模型,可以在[llm]之外再加一段,然后在代码里按名字取。OpenManus 的 LLM 服务层支持多配置,具体取哪段看app/llm.py里的初始化逻辑。
3.2 settings.json 里的工具开关
config/settings.json控制工具是否启用。ReAct 任务里最常用的是 PythonExecute、FileSaver、BrowserUseTool 和 GoogleSearch。骨架如下:
{ "llm": { "config_name": "default" }, "tools": { "python_execute": true, "file_saver": true, "browser_use": true, "google_search": true }, "max_steps": 20, "workspace": "./workspace" }max_steps是 ReAct 循环的上限,防止模型陷入死循环。第一次跑建议设小一点,比如 10,观察它几步能完成,再往上调。workspace是 FileSaver 的落盘目录,确保这个目录存在且有写权限。
3.3 环境变量方式(可选)
如果你不想把 Key 写进 toml,OpenManus 也支持从环境变量读。可以在启动前 export:
export OPENMANUS_LLM_API_KEY="sk-你的TaoTokenKey" export OPENMANUS_LLM_BASE_URL="https://taotoken.net/api"然后在config.toml里把api_key留空或写成占位,代码里会优先读环境变量。这种方式适合 CI 或多人共用机器,但本地调试时容易忘记 export,反而增加排查成本,按自己习惯选一种就行。
4. 启动与一次完整 ReAct 任务验证
4.1 启动命令
单代理模式用main.py,多代理 Flow 模式用run_flow.py。先跑单代理,验证模型通道和 ReAct 循环:
python3.11 main.py启动后终端会进入交互输入状态。如果配置有问题,这一步就会报错,常见的是base_url拼错或 Key 无效,报错信息里会带 HTTP 状态码,按第 5 节排查。
4.2 输入一个可验证的任务
输入一句中文任务,比如「查询上海今天的天气,并把结果保存到 workspace/weather.txt」。这个任务同时触发 GoogleSearch(或 BrowserUseTool)和 FileSaver,能验证两个工具是否都通。
终端会打印每一步的 think 和 act。think 阶段是模型返回的 tool_calls,act 阶段是工具执行结果。你会看到类似这样的流程:
Step 1: think -> 选择 GoogleSearch,query="上海今天天气" Step 1: act -> 返回天气摘要 Step 2: think -> 选择 FileSaver,path="workspace/weather.txt" Step 2: act -> 文件写入成功 Step 3: think -> 任务完成,输出最终结果如果走到 Step 3 并打印了最终结果,说明 ReAct 循环、模型通道、工具调用三条链路都通了。去workspace/weather.txt确认文件内容,能看到天气信息就完整验证成功。
4.3 多代理 Flow 模式
单代理跑通后,再试run_flow.py:
python3.11 run_flow.pyFlow 模式会先让 Planning Agent 生成一个计划,再交给 Manus Agent 执行。输入一个稍复杂的任务,比如「查三个城市的天气,分别保存成三个文件,最后汇总到一个 summary.txt」。观察 Planning Agent 产出的计划是否合理,以及执行 Agent 是否按计划逐步完成。这一步能直观看到「计划-执行」和「ReAct 单循环」的区别。
5. 本篇常见错排查
5.1 401 或 403:Key 和通道问题
报 401 通常是 Key 无效或没带上。检查config.toml里api_key是否替换成了真实 Key,有没有多余空格。报 403 可能是模型名不在你账号可用范围内,去 TaoToken 模型对话页面确认模型名拼写,注意大小写和版本后缀。
5.2 404:base_url 路径问题
OpenManus 会在base_url后面拼/chat/completions。如果你把base_url写成https://taotoken.net/api/带末尾斜杠,拼出来会变成双斜杠,部分服务会返回 404。统一写成https://taotoken.net/api,不带末尾斜杠。
5.3 工具调用不触发
模型返回了文本但没有 tool_calls,ReAct 循环就退化成普通对话。原因通常是模型不支持 function calling,或者temperature太高导致输出不稳定。换一个支持工具调用的模型,并把temperature设回 0.0。另外确认settings.json里对应工具是true。
5.4 max_steps 耗尽
任务没完成但步数到了上限,终端会提示达到 max_steps。先看是模型在绕圈还是任务本身太复杂。绕圈的话,检查工具返回结果是否被正确塞回上下文;任务复杂的话,把max_steps调到 30 再试,或者改用 Flow 模式让 Planning Agent 拆解。
5.5 文件写入失败
FileSaver 报路径错误,多半是workspace目录不存在。手动建一下:
mkdir -p workspace另外确认启动命令的工作目录是项目根目录,相对路径./workspace是相对当前工作目录解析的。
6. 把 Key 和配置收进一套骨架
跑通之后,建议把配置固化成一套可复制的骨架:config.toml里只留base_url和模型名,Key 走环境变量;settings.json里把max_steps和工具开关按任务类型分几套,比如「搜索类」开 GoogleSearch 和 FileSaver,「代码类」开 PythonExecute 和 FileSaver。这样换模型时只改一个model字段,不用动代码。
TaoToken 在这里的价值就是让这个base_url和 Key 保持稳定,模型切换在服务端完成,OpenManus 侧无感。如果你要长期跑编码类 Agent 任务,可以看 Coding Plan 页面了解额度方案;如果只是验证模型通不通,模型对话页面最快;接入细节和参数说明在接入文档里。API Keys 管理在控制台,创建和轮换都在那里。
最后留一个实用习惯:每次改完config.toml,先用一句「你好,请回复 ok」跑一次main.py,确认模型通道通,再去跑复杂任务。这样能把配置问题和任务问题分开,排查时间能省一大半。