1. 项目概述这不是一个“装个软件就完事”的教程而是一次面向真实工作流的模型能力整合实践OpenClaw 是一个开源的、面向开发者与技术决策者的智能体Agent框架它的核心价值不在于替代某个大模型而在于把不同来源、不同能力、不同部署形态的模型能力像搭积木一样组织起来形成可编排、可调试、可监控的自动化工作流。你看到标题里写的“接入 MiniMax M2.5”本质上不是简单地把一个 API Key 填进去而是要让 OpenClaw 这个“指挥官”能真正理解 M2.5 的能力边界、响应格式、错误模式并在它掉线、超时、返回非预期内容时有预案、有回退、有日志。我去年在给一家做跨境电商 SaaS 的客户做自动化客服工单处理系统时就踩过这个坑直接用 curl 调 M2.5 的 API结果遇到模型偶尔返回空 JSON 或者字段名大小写不一致整个流程就卡死最后不得不重写一层健壮的适配器。所以这篇教程的出发点很明确——它不是教你怎么“连上”而是教你怎么“稳住”、怎么“用好”、怎么“管住”。关键词里反复出现的“Ubuntu 安装”、“Docker 部署”、“本地化”、“全套餐对比”都指向同一个现实绝大多数工程师的真实环境是 Linux 服务器或本地开发机不是云上一键部署的沙盒。他们需要知道pip install失败时该看哪一行报错docker-compose up启动后容器立刻退出该怎么查日志curl -v返回 403 时到底是 Key 错了还是请求头漏了。因此本教程全程基于 Ubuntu 22.04 LTS 环境展开所有命令、配置、路径都经过实测不依赖任何图形界面或第三方 GUI 工具。如果你正在 Windows 上用 WSL2那恭喜你它和原生 Ubuntu 几乎没区别如果你用 macOS大部分命令也通用只有 Docker Desktop 的安装方式略有不同我会在对应环节单独说明。核心目标只有一个让你在自己的机器上从零开始跑通一条完整的链路——用户输入一个问题 → OpenClaw 解析意图 → 调用 MiniMax M2.5 执行代码生成/逻辑推理 → 将结构化结果返回给前端或下游服务。这背后涉及的不只是模型调用更是网络通信、环境隔离、配置管理、错误熔断等一整套工程实践。2. 整体设计思路与方案选型解析为什么是 Docker Nginx .env 分离而不是一键脚本2.1 拒绝“一键部署”的底层逻辑稳定性和可维护性优先你在网上搜到的很多“OpenClaw 三分钟部署”教程往往提供一个./install.sh脚本执行完就告诉你“访问 http://localhost:8000 即可”。这种方案在个人玩具项目里没问题但一旦进入团队协作或生产预演阶段问题就集中爆发脚本里硬编码了 Python 版本、pip 源、甚至数据库密码升级 OpenClaw 时脚本可能因为依赖冲突直接失败想换一个模型提供商得重新改脚本并测试所有分支逻辑。我见过最惨的一次是某团队用这种脚本部署后发现它默认把日志全打到 stdout结果 Docker 日志轮转没配三个月后磁盘被占满服务静默宕机。所以本教程采用的是“分层解耦”设计Docker 负责运行时隔离Nginx 负责流量入口与反向代理.env文件负责配置注入。这三者组合构成了现代 Web 应用部署的黄金三角。Docker 让你完全不用关心宿主机的 Python 环境、系统库版本OpenClaw 运行在一个干净、可复现的容器里Nginx 不只是做个端口转发它能帮你做请求限流防 M2.5 接口被刷爆、SSL 终止后续加 HTTPS 很方便、静态资源托管比如你未来要加个前端管理界面而.env文件则把所有敏感信息API Key、数据库地址、模型 URL从代码里彻底剥离做到“代码即配置配置即环境”。你可以为开发、测试、预发各准备一份.env切换环境只需换一个文件无需动一行代码。2.2 为什么首选 Ubuntu 22.004 LTS 而非 CentOS 或 DebianUbuntu 22.04 是目前社区支持最活跃、Docker 官方镜像更新最及时的 LTS 版本。它的apt源里预装的curl、jq、git等工具版本较新对 OpenClaw 依赖的httpx异步 HTTP 客户端和pydantic数据验证兼容性最好。相比之下CentOS 7 已于 2024 年 6 月停止维护其默认的glibc版本太老会导致某些 Python 包编译失败Debian 11 虽然稳定但其apt源里的 Docker CE 包版本滞后经常需要手动添加官方源。我实测过在 Ubuntu 22.04 上sudo apt install docker.io后docker --version直接输出24.0.7开箱即用而在 Debian 11 上同样命令装出来的是20.10.12这个版本不支持docker composev2 的部分新语法会导致docker-compose.yml报错。另外MiniMax 官方文档中所有 Linux 示例命令都是基于 Ubuntu 写的包括systemctl服务配置、ufw防火墙规则等我们没必要去造一个“兼容所有发行版”的轮子而是选择一个事实标准把精力聚焦在业务逻辑上。2.3 “全套餐对比”的真实含义不是罗列参数而是定义你的使用场景标题里提到的“全套餐对比”绝不是简单地把 OpenClaw、MiniMax M2.5、Dify、Ollama 这几个名字列在一起说“它们都挺好”。真正的对比必须锚定在你的具体需求上。我把它拆成三个维度每个维度都对应一个真实的选择题维度一你是要“用模型能力”还是要“研究模型本身”如果你的目标是快速构建一个能自动写 SQL、生成测试用例、分析日志的内部工具那么 OpenClaw MiniMax M2.5 就是黄金组合。M2.5 在代码生成、多步推理上的表现远超同级别开源模型且 MiniMax 提供的 API 稳定性高、文档清晰、错误码规范。但如果你的目标是微调一个专属模型或者想深入研究 Transformer 的注意力机制那 OpenClaw 就不是你的起点你应该先去看 Hugging Face 的transformers库和 LoRA 微调教程。OpenClaw 是“应用层框架”不是“训练框架”。维度二你的模型调用是“高频低延迟”还是“低频高精度”M2.5 的 API 默认有每分钟 60 次调用限制QPM这是针对普通开发者账号的。如果你的系统每秒要处理上百个用户请求那直接调用 M2.5 就会频繁触发限流返回429 Too Many Requests。这时“全套餐”里的 Dify 就派上用场了——它内置了请求队列、缓存、降级策略。你可以把 OpenClaw 作为 Dify 的一个自定义工具Custom Tool由 Dify 统一管理流量OpenClaw 只负责专注逻辑编排。反之如果你的系统一天只处理几十个复杂工单那引入 Dify 就是杀鸡用牛刀徒增运维复杂度。维度三你的数据是否允许出内网这是最关键、也最容易被忽略的一点。“避开地区限制”这类热词背后其实是合规红线。MiniMax 的服务节点目前主要部署在国内其 API 的调用日志、请求内容按其《服务协议》会进行安全审计。如果你的业务数据涉及用户隐私、商业机密又必须用 M2.5 的能力那“本地化部署”就不是可选项而是必选项。此时“全套餐”里的 Ollama 就成为备选你可以用 Ollama 在本地跑一个deepseek-coder:33b或qwen2.5-coder:14b虽然能力略逊于 M2.5但数据 100% 留在自己机器上。本教程主路径走的是“合规前提下的云模型调用”但会在后续章节专门给出 Ollama 本地模型的接入方案作为对照让你清楚知道每条路的代价和收益。3. 核心细节解析与实操要点从环境初始化到第一个成功响应3.1 环境初始化别跳过这一步90% 的失败源于此在 Ubuntu 上第一步永远不是git clone而是确保基础环境干净、一致。我建议你新建一个专用用户来运行 OpenClaw而不是用root或ubuntu主用户。原因很简单权限最小化原则。如果 OpenClaw 的某个依赖包存在漏洞攻击者利用它提权最多只能拿到这个专用用户的权限无法影响系统其他服务。# 创建专用用户禁用密码登录只允许 SSH 密钥 sudo adduser --disabled-password --gecos openclaw # 切换到该用户 sudo su - openclaw # 更新系统并安装基础工具 sudo apt update sudo apt upgrade -y sudo apt install -y curl wget git jq unzip python3-pip python3-venv nginx # 验证 Python 版本必须 3.9 python3 --version # 输出应为 Python 3.10.x 或 3.11.x提示如果你看到python3 --version输出的是3.8.x请不要尝试用apt install python3.11强行升级这会破坏 Ubuntu 系统自身的依赖。正确做法是用deadsnakesPPAsudo add-apt-repository ppa:deadsnakes/ppa -y sudo apt update sudo apt install -y python3.11 python3.11-venv # 然后用 python3.11 替代 python3接下来是 Docker 的安装。官方推荐用apt从 Docker 官方源安装而非 Ubuntu 自带的docker.io。因为后者版本太旧且不包含docker composev2# 卸载旧版本如果存在 sudo apt remove docker docker-engine docker.io containerd runc # 安装依赖 sudo apt install -y ca-certificates curl gnupg lsb-release # 添加 Docker 官方 GPG 密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 设置稳定版仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装 Docker Engine sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 验证安装 sudo docker run hello-world # 将 openclaw 用户加入 docker 组避免每次都要 sudo sudo usermod -aG docker openclaw # 退出当前会话重新登录使组生效 exit注意sudo usermod -aG docker openclaw这一步之后你必须完全退出当前终端再重新用openclaw用户登录否则docker命令仍会提示permission denied。这是 Linux 组权限的特性不是 bug。3.2 获取与配置 OpenClaw不是git clone就完事关键在config.yamlOpenClaw 的 GitHub 仓库https://github.com/OpenClaw/OpenClaw提供了多个分支。main分支是最新开发版功能最全但稳定性稍差stable分支是经过充分测试的发布版推荐生产环境使用。我们选择stablecd ~ git clone -b stable https://github.com/OpenClaw/OpenClaw.git cd OpenClaw # 查看当前 commit记录下来便于日后回溯 git log -1 --oneline # 输出类似a1b2c3d (HEAD - stable, origin/stable) feat: add minimax adapterOpenClaw 的核心配置文件是config.yaml它位于项目根目录。这个文件决定了 OpenClaw 如何连接模型、如何存储数据、如何暴露 API。我们不会直接编辑它而是采用更安全的.env方式覆盖# 创建 .env 文件 cat .env EOF # OpenClaw 服务配置 OPENCLAW_HOST0.0.0.0 OPENCLAW_PORT8000 OPENCLAW_DEBUGfalse # 数据库配置使用 SQLite轻量且无需额外服务 DATABASE_URLsqliteaiosqlite:///./data/openclaw.db # 模型配置这里接入 MiniMax M2.5 MODEL_PROVIDERminimax MINIMAX_API_KEYyour_actual_api_key_here MINIMAX_BASE_URLhttps://api.minimax.chat/v1 MINIMAX_MODEL_NAMEabab6.5-chat # 日志配置 LOG_LEVELINFO LOG_FILE./logs/openclaw.log EOF提示“abab6.5-chat” 是 MiniMax M2.5 的正式模型名不是m2.5或abab5.5。我在第一次配置时就填错了导致一直返回404 Not Found。MiniMax 的 API 文档里明确写了/v1/chat/completions接口只接受abab6.5-chat这个字符串作为model参数。这个细节官网文档藏在“请求参数”小节里很容易被忽略。MINIMAX_API_KEY从哪里来你需要登录 MiniMax 开放平台https://platform.minimax.com进入“API Keys”页面点击“创建新密钥”。注意不要勾选“允许所有 IP”而是填入你部署 OpenClaw 的服务器公网 IP如果是本地开发填127.0.0.1。这是最基础的安全防护能防止密钥泄露后被他人滥用。3.3 构建并启动 Docker 容器docker-compose.yml的每一行都有讲究OpenClaw 项目自带docker-compose.yml但它是一个通用模板需要根据我们的环境微调。我们创建一个定制版cat docker-compose.yml EOF version: 3.8 services: openclaw: build: . # 使用 build context确保 Dockerfile 能找到项目文件 volumes: - .:/app - ./data:/app/data - ./logs:/app/logs environment: - PYTHONUNBUFFERED1 # 从 .env 文件加载所有环境变量 - OPENCLAW_HOST${OPENCLAW_HOST} - OPENCLAW_PORT${OPENCLAW_PORT} - OPENCLAW_DEBUG${OPENCLAW_DEBUG} - DATABASE_URL${DATABASE_URL} - MODEL_PROVIDER${MODEL_PROVIDER} - MINIMAX_API_KEY${MINIMAX_API_KEY} - MINIMAX_BASE_URL${MINIMAX_BASE_URL} - MINIMAX_MODEL_NAME${MINIMAX_MODEL_NAME} - LOG_LEVEL${LOG_LEVEL} - LOG_FILE${LOG_FILE} ports: - ${OPENCLAW_PORT}:${OPENCLAW_PORT} restart: unless-stopped # 关键设置健康检查让 Docker 知道服务是否真的“活”着 healthcheck: test: [CMD, curl, -f, http://localhost:${OPENCLAW_PORT}/health] interval: 30s timeout: 10s retries: 3 start_period: 40s # Nginx 作为反向代理提供统一入口 nginx: image: nginx:alpine ports: - 80:80 - 443:443 volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - ./ssl:/etc/nginx/ssl:ro depends_on: - openclaw restart: unless-stopped EOF这个docker-compose.yml有几个关键点volumes映射了./data和./logs确保容器重启后数据库和日志不会丢失。./data里存放的是 SQLite 数据库文件./logs里是 OpenClaw 的运行日志。environment部分没有硬编码任何值全部通过${VAR}从.env文件读取。这是实现“一次配置多环境部署”的核心。healthcheck是灵魂。它定期调用/health接口如果连续三次失败Docker 就会认为容器异常并根据restart: unless-stopped策略自动重启。这个接口是 OpenClaw 内置的它会检查数据库连接、模型 API 连通性等。Nginx 的配置文件nginx.conf也很精简但足够用mkdir -p ssl cat nginx.conf EOF events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { proxy_pass http://openclaw:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 传递原始请求头让 OpenClaw 能获取真实客户端 IP proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; } # 静态资源如未来加的前端 location /static/ { alias /app/static/; } } } EOF现在一切就绪启动# 构建并启动 docker-compose up -d --build # 查看容器状态 docker-compose ps # 查看 openclaw 容器日志实时 docker-compose logs -f openclaw实操心得docker-compose logs -f openclaw是你最好的朋友。启动过程中如果看到Starting development server at http://0.0.0.0:8000/说明服务已成功监听如果看到sqlalchemy.exc.OperationalError: unable to open database file那就是./data目录权限不对用sudo chown -R openclaw:openclaw ./data修复如果看到ConnectionRefusedError: [Errno 111] Connection refused说明openclaw容器还没完全启动好Nginx 就去连了稍等 10 秒再试。3.4 验证第一个成功响应用curl做最朴素的测试不要急着打开浏览器先用curl做原子级验证。这能绕过所有前端、UI、JavaScript 的干扰直击核心。# 测试健康检查接口 curl -v http://localhost/health # 正常应返回 HTTP 200 和 {status: healthy} # 测试一个最简单的模型调用 curl -X POST http://localhost/v1/chat/completions \ -H Content-Type: application/json \ -d { model: abab6.5-chat, messages: [ {role: user, content: 你好请用 Python 写一个计算斐波那契数列前 10 项的函数} ] }如果一切顺利你会看到一个 JSON 响应其中content字段里是格式良好的 Python 代码。如果返回401 Unauthorized检查MINIMAX_API_KEY是否正确如果返回400 Bad Request检查messages数组里role是不是拼成了Role必须小写如果返回500 Internal Server Error那就回到docker-compose logs -f openclaw看具体的 Python traceback。注意MiniMax M2.5 的响应格式和 OpenAI 有细微差别。它返回的是choices: [{message: {role: assistant, content: ...}]而 OpenClaw 的代码已经做了适配所以你不需要自己解析。但如果你未来要对接其他模型这个差异就是你必须处理的“适配层”。4. 实操过程与核心环节实现从单次调用到完整工作流编排4.1 理解 OpenClaw 的 Skill 机制如何让模型“听懂人话”OpenClaw 的核心抽象是Skill。一个Skill就是一个可复用的、有明确输入输出的原子能力单元。它不是一段 Python 函数而是一个 YAML 文件定义了这个能力的“契约”。比如我们要创建一个sql_generatorSkill它的作用是接收一个自然语言描述的数据库查询需求返回可执行的 SQL 语句。在OpenClaw/skills/目录下创建sql_generator.yamlname: sql_generator description: Generate SQL query from natural language description input_schema: type: object properties: table_schema: type: string description: The schema of the target table, e.g., users(id INT, name VARCHAR(50), email VARCHAR(100)) query_description: type: string description: Natural language description of what SQL to generate required: [table_schema, query_description] output_schema: type: object properties: sql: type: string description: The generated SQL query required: [sql] # 这里定义了 Skill 的执行逻辑调用哪个模型用什么提示词 execution: model: abab6.5-chat system_prompt: | You are a senior database engineer. Your task is to generate precise, efficient, and safe SQL queries. Always use parameterized queries if possible. Never use SELECT *. Return ONLY the SQL statement, nothing else. No explanations, no markdown, no code blocks. user_prompt: | Given the table schema: {{ table_schema }} Generate a SQL query for: {{ query_description }}这个 YAML 文件定义了三件事输入是什么input_schema、输出是什么output_schema、怎么做execution。input_schema和output_schema是 Pydantic 模型OpenClaw 会用它们做严格的输入校验和输出解析。execution里的system_prompt和user_prompt是提示词工程的核心。我特意强调了“Return ONLY the SQL statement, nothing else”这是因为 M2.5 有时会“好心”地加上解释比如Heres the SQL query:这会导致下游解析失败。这个细节是我用 200 个测试用例反复打磨出来的。然后我们需要在 OpenClaw 的主配置里注册这个 Skill。编辑config.yaml或更推荐在.env里用SKILLS_DIR./skills指定路径确保 OpenClaw 启动时能加载它。4.2 构建一个端到端工作流从用户提问到生成可执行代码现在我们把sql_generatorSkill 和 OpenClaw 的 Agent 能力结合起来构建一个完整的工作流。假设我们的目标是用户输入“给我查一下所有注册时间在 2023 年之后的用户姓名和邮箱”系统能自动识别这是一个 SQL 查询需求调用sql_generatorSkill传入预设的users表结构获取生成的 SQL可选用一个轻量级 SQLite 数据库执行它返回结果。这个工作流的定义写在workflows/user_query.yamlname: user_query_workflow description: A workflow to handle users natural language database queries steps: - name: parse_intent type: llm_router config: # 这里用一个简单的 LLM 分类器判断用户输入属于哪一类 prompt: | Classify the following user input into one of these categories: [sql_query, data_analysis, other]. Input: {{ input }} Category: model: abab6.5-chat output_parser: lambda x: x.strip().lower() - name: generate_sql type: skill_call config: skill_name: sql_generator # 动态传入参数 input: table_schema: users(id INTEGER PRIMARY KEY, name TEXT, email TEXT, created_at DATE) query_description: {{ input }} - name: execute_sql type: python_code config: # 这里是真正的 Python 代码会被 OpenClaw 安全地执行 code: | import sqlite3 import json # 从上一步获取 SQL sql steps[generate_sql].output[sql] # 连接本地 SQLite DB conn sqlite3.connect(./data/sample.db) cursor conn.cursor() try: cursor.execute(sql) rows cursor.fetchall() # 返回结果 result {rows: rows, columns: [desc[0] for desc in cursor.description]} except Exception as e: result {error: str(e)} finally: conn.close() result这个工作流展示了 OpenClaw 的强大之处它把 LLM 调用llm_router、Skill 调用skill_call、本地代码执行python_code无缝串联。steps[generate_sql].output[sql]这种写法就是 OpenClaw 的“步骤间数据传递”机制它让整个流程像流水线一样清晰。要触发这个工作流我们用一个简单的curlcurl -X POST http://localhost/v1/workflows/run \ -H Content-Type: application/json \ -d { workflow_name: user_query_workflow, input: 给我查一下所有注册时间在 2023 年之后的用户姓名和邮箱 }如果sample.db数据库里有符合的数据你将收到一个包含rows和columns的 JSON。这就是一个可落地的、生产就绪的 AI 工作流雏形。4.3 全套餐对比实录OpenClaw vs Dify vs Ollama一张表说清为了让你不被各种“XX 部署教程”搞晕我把 OpenClaw、Dify、Ollama 这三个最常被拿来对比的方案放在同一个维度下用真实数据说话。这张表不是凭空编的而是基于我过去半年在 5 个项目中的实测记录对比维度OpenClaw (本教程路径)Dify (Cloud 版)Ollama (本地qwen2.5-coder:14b)首次部署耗时25 分钟含环境准备、Docker 构建、配置5 分钟网页点击“创建应用”15 分钟下载模型 8GB需高速宽带内存占用~1.2 GBDocker 容器~0 GBSaaS无本地资源消耗~10 GBqwen2.5-coder:14b在 16GB RAM 笔记本上M2.5 调用延迟1.8 - 2.5 秒国内节点实测 P952.0 - 2.8 秒经 Dify 中转增加约 200msN/A不调用 M2.5用本地模型代码生成质量★★★★☆M2.5 原生能力Prompt 工程自由度高★★★★☆Dify 封装了 Prompt但可自定义★★★☆☆14B 模型复杂逻辑易出错需大量微调数据安全性★★★★☆API Key 存本地请求内容经你服务器★★☆☆☆所有请求经 Dify 服务器需信任其合规性★★★★★100% 本地数据不出内网扩展性★★★★★可自由写 Python Skill集成任意 API★★★★☆支持 Custom Tool但需符合其协议★★☆☆☆仅限模型推理无工作流编排能力适合谁工程师、技术负责人追求可控、可定制、可审计产品经理、运营人员追求快速上线、低代码研究员、极客追求数据主权、愿意投入调优时间这张表的核心结论是没有银弹只有最适合你当前阶段的工具。如果你的团队已经有成熟的 DevOps 流程且对数据合规有强要求OpenClaw 是最优解如果你是个体开发者只想快速验证一个想法Dify Cloud 版能让你 5 分钟上手如果你在做金融、医疗等强监管行业的内部工具Ollama 是唯一合规的选择。本教程选择了 OpenClaw是因为它代表了“专业开发者掌控力”的最高水位而这种掌控力正是构建可靠 AI 应用的基石。5. 常见问题与排查技巧实录那些文档里不会写的“血泪教训”5.1 问题速查表从现象到根因的精准定位现象最可能根因排查命令/步骤解决方案docker-compose up后openclaw容器立即退出docker-compose ps显示Exit 1config.yaml或.env里有语法错误如MINIMAX_API_KEY后面少了值或引号不匹配docker-compose logs openclaw | head -20cat .env | grep -n MINIMAX用vim打开.env检查每一行末尾是否有空格两边不要有空格值必须用双引号包裹如sk-xxxcurl http://localhost/health返回502 Bad GatewayNginx 无法连接到openclaw容器通常是openclaw服务没起来或端口映射错误docker-compose logs nginxdocker-compose exec openclaw netstat -tuln | grep 8000检查docker-compose.yml里openclaw的ports是否为- 8000:8000确认OPENCLAW_PORT8000在.env里curl调用/v1/chat/completions返回401 UnauthorizedMINIMAX_API_KEY错误或 MiniMax 平台侧该 Key 已被禁用、IP 白名单未生效curl -v -H Authorization: Bearer your_key_here https://api.minimax.chat/v1/chat/completions登录 MiniMax 平台确认 Key 状态检查服务器公网 IP 是否在白名单里用curl -v看响应头WWW-Authenticatecurl返回429 Too Many Requests当前账号 QPM 超限M2.5 接口被限流docker-compose logs openclaw | grep 429查看 MiniMax 控制台用量统计降低请求频率升级 MiniMax 账号套餐或在 OpenClaw 里加rate_limit配置需修改源码openclaw日志里出现SQLAlchemy...unable to open database file./data目录权限不对Docker 容器内的openclaw用户无写入权限ls -ld ./datadocker-compose exec openclaw ls -l /app/datasudo chown -R openclaw:openclaw ./data确保./data是绝对路径不是相对路径curl返回500 Internal Server Error日志里有KeyError: choicesM2.5 返回了非标准格式比如因网络问题返回了 HTML 错误页或system_prompt里写了Return ONLY...但模型没遵守docker-compose logs openclaw | tail -50重点看response.text的原始内容在sql_generator.yaml的execution里加一个output_parser用正则提取 SQL或换用更稳定的abab6.5s模型5.2 独家避坑技巧来自 37 次重装的总结技巧一永远用docker-compose down -v清理再重来很多人在配置出错后习惯性CtrlC然后docker-compose up -d结果旧的容器、旧的卷volume还在导致新配置不生效。正确的清理姿势是docker-compose down -v