OpenClaw AI代理搭建全过程讲解:从LLM选型到API接入的完整实践
1. 从零跑通 OpenClaw AI代理LLM选型、Agent编排与API接入的完整链路OpenClaw AI代理是一套把大语言模型、工具调用和记忆系统组装成可执行任务的智能体框架你可以把它理解成一个能自己看文件、查资料、写代码的“数字员工”。它适合已经会一点 Python、想让模型真正动手干活的开发者而不是只想在网页里聊两句的人。我第一次跑通它的时候卡点不在代码本身而在模型通道OpenClaw 默认走 OpenAI 兼容接口但国内直连官方端点经常超时换模型又要改一堆配置。后来我把 LLM 通道统一收敛到 TaoToken 的 API 上用同一个 Key 切换不同模型Agent 编排层几乎不用动这才把整条链路跑顺。这篇内容按“环境准备 → 依赖安装 → LLM 选型与接入 → Agent 编排 → 端到端验证 → 报错排查”的顺序展开每一步都给可复制的命令和配置。你跟着做最后能拿到一个能响应真实对话任务的 OpenClaw 代理。核心检索词先摆出来OpenClaw AI代理搭建、LLM选型、Agent编排、API接入这四个词会贯穿全文。先说清楚 OpenClaw 的定位。它不是又一个聊天壳而是一个带工具集ToolSet、短期/长期记忆Memory、多代理协作AgentTeam的编排框架。你给它一个任务它会自己决定调哪个工具、记什么信息、什么时候把结果返回。所以搭建过程分三层最底层是模型通道LLM Provider中间层是代理定义Agent Tools Memory最上层是服务化FastAPI 暴露接口。很多人只搭了中间层模型通道用默认配置结果一跑就报连接错误这就是典型的“代理写完了但跑不起来”。环境上我建议用 Python 3.10 以上3.9 在部分依赖上会有类型标注问题。工作目录单独建别和系统 Python 混在一起。下面从虚拟环境开始一步步来。1.1 环境准备与依赖清单先建一个干净的工作空间。虚拟环境的作用是把 OpenClaw 的依赖和系统隔离避免版本冲突python -m venv openclaw_env source openclaw_env/bin/activate # Mac/Linux # openclaw_env\Scripts\activate # Windows激活后确认 Python 版本python --version # 期望输出 Python 3.10.x 或更高接着拉取 OpenClaw 仓库并安装依赖。依赖清单里比较关键的是openai模型通道、pydantic配置校验、fastapiuvicorn服务化、numpy向量记忆。如果你的网络拉 GitHub 慢可以先配好 pip 镜像再装git clone https://github.com/openclawai/openclaw.git cd openclaw pip install -r requirements.txt pip install -e .pip install -e .是以可编辑模式安装这样你改本地代码能直接生效调试代理逻辑时很方便。装完验证一下python -c import openclaw; print(openclaw.__version__)能打印版本号就说明框架层没问题。这一步常见的坑是pip install -e .报setup.py not found那多半是你没进到仓库根目录或者仓库结构变了确认setup.py或pyproject.toml在cd后的目录里。1.2 LLM 选型代理的“大脑”怎么挑OpenClaw 的 LLM 配置在config/llm_config.yaml。选型的核心是三个参数provider、model、temperature。provider 决定走哪个通道model 决定用哪个模型temperature 决定输出的随机性。代理场景和聊天场景对模型的要求不一样。聊天可以容忍慢和发散代理要的是稳定、能按格式调工具、少胡说。所以我的选型原则是编排和工具调用用中等模型如 gpt-3.5-turbo 级别复杂推理和长任务用强模型如 gpt-4 级别temperature 压到 0.1–0.3减少工具参数乱填的概率。# config/llm_config.yaml llm: provider: openai model: gpt-3.5-turbo temperature: 0.2 max_tokens: 2000 base_url: https://taotoken.net/api api_key: sk-你的TaoToken密钥这里base_url指向 TaoToken 的 API 端点api_key用 TaoToken 控制台生成的 Key。这样配置的好处是OpenClaw 仍然按 OpenAI 兼容协议发请求但实际通道由 TaoToken 统一承接你换模型只改model字段不用动代理代码。模型 ID 要写对比如gpt-3.5-turbo、gpt-4、claude-3-5-sonnet这类具体可用列表在 TaoToken 的模型对话页能看到。选型时还要注意上下文长度。代理会把工具返回结果、记忆内容拼进 prompt很容易撑爆上下文。max_tokens控制的是输出长度输入长度取决于模型本身。如果你发现代理“记不住前面的话”先看是不是输入超了而不是模型笨。1.3 工具与记忆配置工具是代理的“钳子”记忆是代理的“海马体”。工具配置在config/tools_config.yaml# config/tools_config.yaml tools: - name: file_operator enabled: true permissions: [read, write] - name: web_search enabled: true api_key: your_search_api_key - name: code_executor enabled: true sandbox: truecode_executor一定要开sandbox: true否则代理执行代码时可能动到你的真实文件系统。记忆分短期和长期短期用ShortTermMemory存最近 N 轮对话长期用LongTermMemory配向量库。代理任务里如果涉及“记住用户偏好”就得挂长期记忆。2. TaoToken 前置统一 Key 与 API 通道在写代理代码之前先把模型通道这件事解决掉。OpenClaw 本身不绑定任何一家模型它只认 OpenAI 兼容协议。这意味着只要有一个兼容端点你就能接任意模型。TaoToken 在这里扮演的角色就是“统一入口”一个 Key、一个 Base URL背后可以切不同模型。为什么要在搭建阶段就引入它而不是先跑通再换因为代理调试最烦的就是“换模型要改代码”。如果你一开始就把base_url和api_key抽到配置里后面换模型只改一个字段代理逻辑零改动。我试过先直连再迁移结果工具调用的参数格式在不同模型间有差异迁移时排查了半天不如一开始就统一。2.1 获取 Key 与确认端点到 TaoToken 控制台创建 API Key路径是 API Keys 页面。创建后复制sk-开头的字符串只显示一次丢了就重建。Base URL 用https://taotoken.net/api注意这个地址不带任何查询参数直接作为 OpenAI 客户端的base_url。如果你用的是 Claude Code 这类工具TaoToken 也提供了对应的接入文档配置方式类似都是 Base URL Key Model ID 三件套。OpenClaw 这边我们手动写进 YAML效果一样。2.2 把通道写进 OpenClaw 配置回到config/llm_config.yaml确保base_url和api_key正确。这里有个细节有些框架要求base_url以/v1结尾有些不需要。TaoToken 的端点是https://taotoken.net/apiOpenClaw 内部会拼接/chat/completions所以不要自己加/v1否则会变成/api/v1/chat/completions导致 404。llm: provider: openai model: gpt-3.5-turbo temperature: 0.2 max_tokens: 2000 base_url: https://taotoken.net/api api_key: sk-你的TaoToken密钥配置写完后先别急着跑代理用一段最小请求验证通道是否通。这一步能帮你把“通道问题”和“代理问题”分开省很多时间。2.3 最小连通性验证写一个test_llm.pyfrom openai import OpenAI client OpenAI( base_urlhttps://taotoken.net/api, api_keysk-你的TaoToken密钥 ) resp client.chat.completions.create( modelgpt-3.5-turbo, messages[{role: user, content: 只回复两个字通了}], temperature0.1 ) print(resp.choices[0].message.content)运行python test_llm.py如果打印“通了”说明 Key、端点、模型 ID 三者都对。如果报 401是 Key 问题报 404是端点或模型 ID 问题报超时是网络问题。这一步过了再进代理编排心里就有底了。3. 可复制配置Agent 编排与 settings 片段通道通了现在写代理。OpenClaw 的代理定义围绕Agent类展开核心参数是 name、llm_config、memory、tools。下面给一个可直接复制的my_first_agent.py它定义了一个“秘书代理”能读写文件、管理日程。# my_first_agent.py from openclaw import Agent from openclaw.memory import ShortTermMemory from openclaw.tools import ToolSet secretary Agent( name秘书小爪, llm_config{ provider: openai, model: gpt-3.5-turbo, temperature: 0.2, base_url: https://taotoken.net/api, api_key: sk-你的TaoToken密钥 }, memoryShortTermMemory(capacity10), toolsToolSet([ file_operator, calendar ]) ) response secretary.run(帮我整理今天的日程并创建一个会议纪要文件) print(小爪说:, response)注意llm_config里我把base_url和api_key又写了一遍。这是为了让你看清三件套的完整形态Base URL、Key、Model ID。实际项目里应该抽到环境变量或统一配置文件避免硬编码。下面给一个更工程化的settings.yaml# settings.yaml llm: base_url: https://taotoken.net/api api_key: ${TAOTOKEN_API_KEY} model: gpt-3.5-turbo temperature: 0.2 agent: name: 秘书小爪 memory_capacity: 10 tools: - file_operator - calendar然后在代码里用os.environ读 Key用yaml.safe_load读配置。这样换模型只改settings.yaml的model字段代理代码不动。3.1 多代理协作配置单个代理能干活但复杂任务需要分工。OpenClaw 的AgentTeam可以把研究员、写作者、审核者组队# multi_agent.py from openclaw import Agent, AgentTeam researcher Agent( name研究员小爪, role研究员, llm_config{model: gpt-4, base_url: https://taotoken.net/api, api_key: sk-你的TaoToken密钥}, tools[web_search, file_operator] ) writer Agent( name作家小爪, role写作者, llm_config{model: gpt-3.5-turbo, base_url: https://taotoken.net/api, api_key: sk-你的TaoToken密钥}, tools[text_editor] ) team AgentTeam([researcher, writer]) result team.collaborate(研究 AI 代理的最新进展并写一篇总结报告) print(result)这里研究员用强模型保证检索质量写作者用中等模型控制成本两个代理共用同一个 TaoToken Key只是model不同。这就是统一通道的价值多模型混用不需要多套凭证。3.2 长期记忆配置如果代理要跨会话记住用户偏好挂长期记忆# memory_system.py from openclaw.memory import LongTermMemory crab_memory LongTermMemory( storage_typevector, db_path./crab_memory.db ) crab_memory.remember( keyuser_preference, value用户喜欢简洁回答讨厌技术术语堆砌 ) recalled crab_memory.recall(user_preference) print(recalled)向量库会占磁盘定期清理crab_memory.db里过期的条目否则检索会变慢。4. 验证请求端到端对话任务跑通配置写完跑一次端到端任务确认代理真的能用。验证分两步先单代理再多代理。4.1 单代理端到端验证运行my_first_agent.pypython my_first_agent.py期望输出类似小爪说: 已整理今日日程上午10点站会下午2点评审。会议纪要文件已创建meeting_notes_20250101.md如果代理返回了工具执行结果说明 LLM 通道、工具调用、记忆三部分都通了。如果只返回一段文字但没有实际创建文件说明模型没触发工具调用这时候把temperature降到 0.1或者在 prompt 里明确“请使用 file_operator 工具创建文件”。4.2 服务化验证把代理暴露成 HTTP 接口用 FastAPI# deploy_api.py from fastapi import FastAPI from openclaw import Agent app FastAPI() crab Agent( nameAPI小爪, llm_config{ model: gpt-3.5-turbo, base_url: https://taotoken.net/api, api_key: sk-你的TaoToken密钥 } ) app.post(/ask) async def ask_crab(question: str): response crab.run(question) return {answer: response} app.get(/status) async def check_status(): return {status: healthy}启动uvicorn deploy_api:app --host 0.0.0.0 --port 8000另开终端测试curl -X POST http://localhost:8000/ask?question你好介绍一下你自己返回 JSON 里有answer字段就说明服务化成功。这一步的坑是question作为查询参数传中文可能编码问题生产环境建议改成 JSON body。4.3 多代理协作验证运行multi_agent.py观察两个代理是否按顺序交接。研究员先检索写作者再成文。如果卡在研究员阶段多半是web_search的 API Key 没配如果写作者输出为空检查它的model是否可用。5. 本篇常见错排查搭建过程中最容易撞的几类报错我按真实日志对照给你。401 UnauthorizedKey 无效或没传。检查api_key是否以sk-开头是否有多余空格。TaoToken 的 Key 在控制台 API Keys 页面生成复制时别漏字符。如果 Key 正确还报 401看base_url是否写成了带/v1的地址导致请求打到了错误路径。local proxy failed / connection timeout网络层问题。先确认https://taotoken.net/api能通用curl -I https://taotoken.net/api看返回码。如果超时检查本机 DNS 和防火墙。注意不要配任何非官方的网络工具直接用系统网络即可。reading choices 报错 / KeyError: choices响应结构不符合预期。常见原因是model字段写了一个不存在的模型 ID服务端返回了错误 JSON而代码直接取choices就崩了。解决方法是先打印完整响应resp client.chat.completions.create(...) print(resp)看到错误信息后再改模型 ID。TaoToken 的模型对话页可以确认当前可用的模型列表。OAuth 相关报错如果你用的是 Claude Code 或 Codex 这类带 OAuth 的工具报 OAuth 失败通常是凭证过期。重新走一遍授权流程或者改用 API Key 方式接入。OpenClaw 本身不走 OAuth所以这个错一般出现在你混用了其他工具时。Agent 不调用工具模型返回了文字但没触发工具。把temperature降到 0.1在系统提示里明确工具名或者换一个工具调用能力更强的模型。gpt-3.5-turbo 在复杂工具参数上偶尔会偷懒换成 gpt-4 级别会稳很多。记忆检索返回空长期记忆写入后recall拿不到。检查db_path是否有写权限向量维度是否和模型匹配。如果用的是默认 embedding确认它和 TaoToken 通道不冲突。CC Switch / Cline MCP / Codex auth.json 场景如果你在 OpenClaw 之外还用了这些工具配置时同样要写全三件套——Base URL 填https://taotoken.net/apiKey 填 TaoToken 的 KeyModel ID 填具体模型名。三者缺一工具就会报连接或鉴权错误。6. 把代理跑稳之后通道、编排与验证的取舍代理跑通只是起点。真正让它稳定干活关键在通道统一和编排分层。通道层用 TaoToken 收敛成一个 Base URL 加一个 Key模型切换变成改一个字段编排层把 Agent、ToolSet、Memory 拆开配置单代理和多代理共用同一套通道验证层先跑最小连通性再跑单代理最后跑服务化每层过了再进下一层。如果你要长期跑编码类或 Agent 类任务可以看下 Coding Plan它针对高频调用场景做了额度优化。需要验证模型效果时模型对话页能直接试不同模型的输出差异。接入文档里有各工具的完整配置示例API Keys 页面管理你的凭证。地址分别是模型对话https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentmodel_chatCoding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding_plan控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentconsoleAPI Keyshttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi_keys接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc最后留一个我踩过的坑代理的max_tokens别设太大2000 足够大多数任务设到 8000 会让响应变慢且容易截断工具调用。工具返回的长文本先做摘要再塞回 prompt否则上下文很快爆掉。把这两点处理好你的 OpenClaw 代理就能稳定跑起来了。