ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

OpenClaw环境变量配置全解析:从API Key到Endpoint的实战指南

OpenClaw环境变量配置全解析:从API Key到Endpoint的实战指南 1. 项目概述为什么OpenClaw的环境变量配置是成败关键如果你最近在折腾OpenClaw想把DeepSeek或者阿里云的大模型能力接进来那你大概率已经卡在了环境变量配置这一步。这玩意儿看着简单不就是填几个Key和地址吗但恰恰是这一步决定了你的OpenClaw是能流畅对话的智能助手还是一个只会报错“400”、“401”的“人工智障”。我见过太多新手模型部署、代码拉取都顺利最后倒在了环境变量上反复折腾几个小时甚至几天非常打击信心。OpenClaw本质上是一个大模型应用编排与调度框架它自己不产生智能而是作为一个“调度中心”去调用像DeepSeek、阿里云通义千问这样的后端模型服务。环境变量就是它和这些外部服务“握手”的凭证和地图。配置错了就等于给了错误的门禁卡或者错误的地图自然连不上。所以今天我们不聊复杂的架构就死磕这个最基础、也最要命的环节OpenClaw的环境变量到底怎么填特别是针对DeepSeek和阿里云这两个国内开发者最常用的平台我会把每一步掰开揉碎附上我踩过的所有坑和最终的检测命令让你一次配成。2. 核心概念解析环境变量、API Key与Endpoint在动手之前我们得先搞清楚三样东西什么是环境变量什么是API Key什么又是Endpoint理解它们你才能明白自己到底在配置什么出了问题也知道该查哪里。2.1 环境变量系统的“全局备忘录”你可以把环境变量想象成钉在你电脑或服务器公告栏上的一张便签。任何运行在这个系统上的程序比如OpenClaw都可以随时走过来看一眼这张便签获取上面写的信息。对于OpenClaw来说它需要知道“我要去哪个模型平台Endpoint”“我的通行证API Key是什么”。把这些信息写成环境变量是最安全、最灵活的方式。为什么不用代码写死如果把Key直接写在OpenClaw的源代码里首先极不安全代码一旦泄露Key就暴露了。其次如果你想换一个模型服务比如从DeepSeek换成阿里云或者Key需要更新你就得去改代码非常麻烦。而环境变量允许你在不修改程序本身的情况下动态改变这些配置。常见形式在Linux/Mac上你通常在~/.bashrc或~/.zshrc文件里用export KEY_NAMEvalue来设置在Windows上则在系统属性里设置在Docker中则通过-e参数或docker-compose.yml文件传递。2.2 API Key你的专属通行证API Key也叫访问密钥是你从模型服务商如DeepSeek、阿里云那里获取的一串字符通常以sk-开头或是一长串字母数字组合。这串字符唯一标识了你的账户并决定了你的访问权限和计费。核心作用身份认证。当OpenClaw向DeepSeek的服务器发送请求时必须在HTTP请求头里带上这个Key。DeepSeek的服务器一看“哦这个Key是我发的对应的账户是XXX有调用权限。” 才会处理请求并返回结果。如果Key错误、过期或者没提供服务器就会返回“401 Unauthorized”未授权错误。安全须知API Key就是钱谁有了你的Key谁就能以你的身份调用服务并产生费用。绝对不要把它提交到GitHub等公开代码仓库也不要写在博客的明文代码块里。环境变量是保护它的第一道防线。2.3 Endpoint模型服务的“门牌地址”Endpoint中文常叫“终端节点”或“接入点”其实就是模型API服务的具体网址。它告诉OpenClaw“你要找的DeepSeek聊天接口在这个URL地址上。”为什么重要不同的服务、甚至同一服务的不同模型Endpoint都可能不同。例如DeepSeek最新版Chat模型的Endpoint和阿里云通义千问的肯定不一样。填错了Endpoint就像把信寄到了错误的街道自然收不到回信通常会得到“404 Not Found”或“400 Bad Request”错误。常见误区很多人以为有了Key就能通用其实Key和Endpoint必须配对使用。从DeepSeek平台拿到的Key要配DeepSeek的Endpoint从阿里云拿到的Key要配阿里云对应产品的Endpoint。理解了这三者我们再来看OpenClaw的配置就清晰多了它需要你通过环境变量告诉它正确的Endpoint去哪和正确的API Key怎么进去。3. DeepSeek API Key配置全流程详解DeepSeek作为国内炙手可热的AI模型提供商其API的配置是很多人的首选。下面我们从零开始一步步拿到Key并正确配置到OpenClaw。3.1 获取DeepSeek API Key注册与登录访问DeepSeek开放平台官网通常为 platform.deepseek.com用手机号或邮箱完成注册和登录。进入控制台登录后找到“控制台”、“开发者中心”或类似的入口。创建API Key在控制台页面寻找“API Keys”、“应用管理”或“密钥管理”选项卡。点击“创建新的API Key”或“新建密钥”。系统会提示你为这个Key命名例如“MyOpenClawProject”方便你日后管理。创建成功后平台会立即显示一串以sk-开头的密钥。这是你唯一一次能看到完整Key的机会务必立即复制并保存到安全的地方如本地的密码管理器或加密文档中。页面刷新后通常就只显示Key的前后几位了。注意DeepSeek可能会提供不同模型如DeepSeek-Chat DeepSeek-R1对应的Endpoint和Key。确保你创建Key时选择的模型或应用与你想在OpenClaw中使用的模型一致。目前最常用的是DeepSeek-Chat模型。3.2 确定DeepSeek API Endpoint截至我撰写本文时DeepSeek Chat Completions API的标准Endpoint是https://api.deepseek.com/chat/completions这个地址是调用其对话模型的核心接口。请以DeepSeek官方文档的最新说明为准但当前这个地址是广泛使用的。3.3 在OpenClaw中配置环境变量OpenClaw的配置方式取决于你的部署形式。这里以最常见的两种方式说明方式一传统/源码部署通过.env文件这是最清晰、最推荐给本地开发或非容器化部署的方式。在你的OpenClaw项目根目录下找到或创建一个名为.env的文件。如果使用Docker Compose部署通常已经有一个docker-compose.yml文件.env文件需要与之在同一目录。用文本编辑器打开.env文件。添加或修改以下两行关键配置# DeepSeek API 配置 DEEPSEEK_API_KEYsk-你的真实API密钥在这里 DEEPSEEK_API_BASEhttps://api.deepseek.com # 注意有些OpenClaw配置可能使用 OPENAI_API_KEY 和 OPENAI_API_BASE 来兼容OpenAI格式 # 具体使用哪个变量名请查阅你使用的OpenClaw版本或分支的文档。 # 如果文档不明确一个常见的兼容性配置是同时设置 OPENAI_API_KEY${DEEPSEEK_API_KEY} OPENAI_API_BASE${DEEPSEEK_API_BASE}关键解释DEEPSEEK_API_KEY这里填入你刚才复制的、以sk-开头的完整密钥。DEEPSEEK_API_BASE这里填入基础地址https://api.deepseek.com。OpenClaw内部会将其与具体的接口路径如/v1/chat/completions拼接成完整的Endpoint。变量名陷阱这是最大的坑不同的OpenClaw分支或版本可能认不同的环境变量名。有的直接兼容OpenAI的OPENAI_API_KEY和OPENAI_API_BASE有的则用DEEPSEEK_前缀。最稳妥的方法是查看你下载的OpenClaw项目的README.md或config.example文件。如果找不到可以尝试在项目的配置代码如config.py,.env.example中搜索API_KEY或API_BASE来确定。方式二Docker容器部署通过-e参数或docker-compose.yml如果你用docker run命令直接运行docker run -d \ -e DEEPSEEK_API_KEYsk-你的真实API密钥 \ -e DEEPSEEK_API_BASEhttps://api.deepseek.com \ --name openclaw \ openclaw-image:latest如果你用docker-compose.yml文件version: 3 services: openclaw: image: openclaw-image:latest container_name: openclaw environment: - DEEPSEEK_API_KEYsk-你的真实API密钥 - DEEPSEEK_API_BASEhttps://api.deepseek.com ports: - 3000:3000 # ... 其他配置实操心得我强烈建议无论用什么方式部署都先创建一个.env文件来管理所有环境变量。对于Docker Compose可以在docker-compose.yml中使用env_file:指令来引入.env文件这样配置更集中、更安全也便于版本管理当然.env文件本身要加入.gitignore。4. 阿里云通义千问API Key配置全流程详解阿里云的配置流程比DeepSeek稍复杂一些因为它涉及阿里云整体的访问控制体系。你需要获取的不是一个简单的API Key而是一对AccessKey ID和AccessKey Secret。4.1 获取阿里云AccessKey登录阿里云控制台访问阿里云官网并登录。进入访问控制RAM在控制台首页搜索“RAM”访问控制并进入。创建用户如果还没有在左侧菜单选择“用户”。点击“创建用户”。输入登录名和显示名称务必勾选“编程访问”这将自动生成AccessKey。控制台访问根据你的需要选择。点击“确定”创建成功后会弹出对话框立即下载或复制AccessKey ID和AccessKey Secret。同样这是唯一一次看到完整Secret的机会请妥善保存。为用户授权新创建的用户没有任何权限。你需要为其添加权限策略使其能够调用通义千问的API。在用户列表找到刚创建的用户点击“添加权限”。在“授权范围”选择“整个云账号”。在“系统策略”中搜索“AliyunDashScopeFullAccess”或“AliyunDashScopeReadOnlyAccess”。为了调用模型通常需要授予AliyunDashScopeFullAccess全量管理权限。如果你追求最小权限可以自定义策略但新手建议先用全量权限跑通。点击“确定”完成授权。4.2 确定阿里云DashScope Endpoint阿里云的通义千问等模型通过“灵积”DashScope平台提供API服务。其Chat Completions API的Endpoint通常是https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation但请注意阿里云的API调用除了Endpoint鉴权信息即AccessKey通常不是放在请求头Authorization: Bearer里而是要用阿里云SDK签名的方式或者直接使用SDK。幸运的是OpenClaw的较新版本或一些社区分支已经集成了对阿里云DashScope的支持它会帮你处理签名。对于OpenClaw你通常需要配置的是ALIYUN_API_KEY: 这里实际上填入的是你的AccessKey ID。ALIYUN_API_SECRET: 这里填入你的AccessKey Secret。ALIYUN_MODEL: 指定要使用的模型名例如qwen-max、qwen-plus等。ALIYUN_API_BASE: 可能不需要因为SDK内置了。如果需要通常是https://dashscope.aliyuncs.com。再次强调务必查阅你所使用的OpenClaw版本的文档确认它支持阿里云以及具体需要哪些环境变量名。4.3 在OpenClaw中配置阿里云环境变量假设你的OpenClaw版本支持以下变量名在.env文件中配置# 阿里云 DashScope 配置 ALIYUN_ACCESS_KEY_ID你的AccessKey ID ALIYUN_ACCESS_KEY_SECRET你的AccessKey Secret ALIYUN_MODELqwen-max # 根据你的需要选择模型如 qwen-plus, qwen-turbo等 # 有些配置可能还需要区域但DashScope通常是全局服务 # ALIYUN_REGIONcn-hangzhou对于Docker部署同样通过-e或docker-compose.yml的environment部分注入这些变量。踩坑记录我遇到过最大的一个坑是阿里云的AccessKey Secret可能包含特殊字符如/,,这些字符在直接作为环境变量值传递时可能会被Shell或Docker解析导致密钥被破坏。解决方案是始终将包含特殊字符的密钥用单引号包裹起来。在.env文件中如果值包含空格或特殊字符通常也需要引号。最稳妥的方法是先在Shell里用echo命令测试一下变量值是否正确。5. 环境变量配置后的关键检测与验证配置完环境变量重启OpenClaw服务后怎么知道配置生效了、连接成功了呢盲猜没用我们需要用“检测命令”来验证。5.1 基础检测查看环境变量是否被成功加载首先确认OpenClaw进程确实读到了你设置的环境变量。对于Linux/macOS系统服务或直接进程进入OpenClaw项目目录或者连接到你的服务器尝试在同一个Shell环境下如果你是用systemd服务启动的这个方法可能不行需要用systemctl show命令执行echo $DEEPSEEK_API_KEY或者echo $ALIYUN_ACCESS_KEY_ID如果输出是你设置的Key或ID说明当前Shell环境变量设置正确。但OpenClaw进程不一定继承了这个环境最好通过OpenClaw自身的日志或健康检查接口。对于Docker容器进入容器内部查看docker exec -it openclaw容器名或ID /bin/sh # 进入容器后 env | grep -E (DEEPSEEK|ALIYUN|OPENAI)_API这会列出容器内所有包含API关键词的环境变量检查其值是否正确。5.2 核心检测使用OpenClaw自带的API或CLI工具测试这是最直接的验证方式。许多OpenClaw项目会提供一个简单的测试脚本或健康检查端点。检查服务状态首先确保OpenClaw服务本身在运行。访问其Web UI如果有或者调用其健康检查API例如http://localhost:3000/health或http://localhost:3000/api/status具体路径看文档。应该返回一个包含服务状态如{status: ok}的JSON。调用模型测试接口如果OpenClaw提供了测试接口这是最好的方法。例如通过curl命令模拟一个最简单的聊天请求curl -X POST http://localhost:3000/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer dummy \ # 如果OpenClaw需要认证这里可能需要一个有效的内部token -d { model: deepseek-chat, # 或你在OpenClaw中配置的模型别名如 qwen messages: [{role: user, content: 你好请回复‘收到’即可。}], stream: false }注意这个命令的URL、请求头和数据体需要根据你实际部署的OpenClaw的API文档来调整。重点是观察返回。成功响应你会得到一个JSON包含模型生成的回复内容例如{choices:[{message:{content:收到}}]}。失败响应你会得到一个错误JSON。仔细看错误码和消息401 Unauthorized: 几乎可以肯定是API Key配置错误、过期或权限不足。检查Key是否填错、前后有无多余空格。400 Bad Request: 请求格式错误或参数不对。检查你发送的JSON格式、model字段名是否与OpenClaw配置匹配。特别注意网络热词里提到的openclaw llamap svr operator(): got exception: { error: { code: 400, “me这个错误片段很可能就是请求体不符合后端模型API的要求导致的比如缺少必要字段、字段类型错误等。404 Not Found: Endpoint地址错误或者OpenClaw内部路由配置错误。429 Too Many Requests: 达到API调用频率限制。500/502/503 Internal Server Error: OpenClaw服务内部错误或者连接模型服务商网络超时/失败。查看OpenClaw的服务日志。5.3 终极检测直接查看OpenClaw应用日志日志是排查问题的金钥匙。打开OpenClaw的日志输出观察它在处理请求时的详细过程。对于Docker容器docker logs -f --tail 100 openclaw容器名或ID-f是持续跟踪--tail 100是看最后100行。启动后尝试通过Web界面或API发送一条测试消息然后在日志中搜索“error”、“fail”、“exception”等关键词以及模型供应商的名字如“deepseek”、“aliyun”、“dashscope”。通常连接失败或认证失败的错误信息会在这里清晰地打印出来例如“Failed to call DeepSeek API: Invalid API Key”。对于系统服务如使用systemdsudo journalctl -u openclaw.service -f通过日志你可以看到OpenClaw是否成功读取了环境变量发起网络请求的完整URL是什么收到了后端什么样的响应。这比任何猜测都管用。6. 常见问题排查与解决方案实录根据我帮助别人部署和自身踩坑的经验下面这个表格整理了90%以上你会遇到的问题问题现象可能原因排查步骤与解决方案启动失败提示“环境变量未设置”1. 环境变量确实未设置。2. 变量名拼写错误。3. 配置文件未生效。1. 使用echo $VARIABLE_NAME或容器内env命令确认。2. 逐字母核对.env文件或Docker命令中的变量名区分大小写。3. 确保.env文件与docker-compose.yml在同一目录且Compose文件通过env_file:引用或使用environment:直接定义。重启服务。API调用返回 401 Unauthorized1. API Key错误复制不完整、多空格。2. Key已失效或禁用。3. 对于阿里云可能是AccessKey Secret错误或未授权。1. 重新从平台复制Key在纯文本编辑器里检查确保无首尾空格。2. 登录对应平台控制台检查Key状态是否“启用”额度是否充足。3. 对于阿里云检查RAM用户是否已添加AliyunDashScopeFullAccess权限。等待1-2分钟权限生效。API调用返回 400 Bad Request1. 请求体JSON格式错误。2. 缺少必要参数如model。3. 参数值不符合要求如model名不对。4. Endpoint地址拼接错误。1. 使用在线的JSON格式化工具验证你发送的数据格式。2. 查阅OpenClaw和对应模型平台的API文档核对必填字段。3. 确认model字段的值是OpenClaw配置的模型别名还是平台的实际模型名如qwen-max。4. 查看OpenClaw日志确认其最终发往哪个完整URL。API调用返回 404 Not Found1. Endpoint (API_BASE) 配置错误。2. OpenClaw内部路由路径错误。1. 核对模型平台官方文档的最新API地址。2. 检查OpenClaw版本有些旧版本可能路径不同。尝试访问{API_BASE}/health或类似端点看是否通。API调用返回 429 Too Many Requests达到模型平台的速率限制。1. 检查控制台的用量统计。2. 如果是免费额度可能已用尽或QPS每秒请求数超限。3. 添加请求间的延迟或升级套餐。API调用超时或返回 5xx 错误1. 网络问题无法访问模型服务商。2. 模型服务商服务暂时不可用。3. OpenClaw服务内部异常。1. 从服务器上尝试curl -v https://api.deepseek.com测试网络连通性。2. 查看模型服务商的状态页面或公告。3. 查看OpenClaw日志的完整错误堆栈定位内部错误点。日志显示连接被拒绝 (Connection refused)OpenClaw配置的Endpoint地址端口不对或者本地代理/防火墙干扰。1. 确认Endpoint是https协议且端口是默认的443。2. 如果服务器在海外或需要代理检查OpenClaw是否配置了HTTP_PROXY环境变量。3. 暂时关闭防火墙或安全组规则测试。Docker容器内读取不到 .env 变量docker-compose.yml中未正确指定env_file或.env文件路径不对。1. 确保docker-compose.yml中服务下有env_file: - .env这一行。2. 确保.env文件与docker-compose.yml在同一目录。3. 尝试在docker-compose.yml中直接用environment:定义变量测试。一个典型的排错流程看日志第一时间打开docker logs -f或服务日志这是最直接的错误信息来源。验变量进入容器或进程环境用env | grep API确认变量已存在且值正确注意隐藏字符。测网络从服务所在环境用curl或ping测试到API_BASE域名的连通性。简请求用最简单的curl命令如上文示例绕过OpenClaw前端直接测试其核心API功能缩小问题范围。查文档最后反复核对OpenClaw项目文档和模型平台DeepSeek/阿里云的API文档确保参数、端点、模型名完全匹配。7. 高级技巧与配置优化当你成功跑通基础配置后下面这些技巧能让你的OpenClaw更稳定、更高效。7.1 使用多个模型与故障转移OpenClaw的一个强大之处是能管理多个模型后端。你可以在配置中定义多个“模型”指向不同的API Key和Endpoint。这样当一个服务出现故障或限流时可以自动切换到另一个。这通常需要在OpenClaw的更高阶配置文件如config.yaml或models.yaml中定义而不是简单的环境变量。你需要配置一个模型列表并为每个模型指定其供应商、API Key、Base URL等。具体语法请参考你所使用OpenClaw版本的文档。7.2 敏感信息管理与安全实践永远不要将.env文件提交到Git仓库确保你的.gitignore文件包含.env这一行。对于生产环境有更安全的管理方式Docker Secrets如果你使用Docker Swarm可以使用Secrets管理敏感信息。云服务商密钥管理服务如阿里云的KMS可以将密钥加密存储运行时动态解密。配置中心如Consul, etcd, Apollo等集中管理所有环境的配置。 对于个人或小团队项目至少做到.env文件本地加密备份并在服务器上设置严格的文件权限如chmod 600 .env。7.3 性能调优与参数配置环境变量不仅关乎连接也影响性能和行为。关注以下变量如果OpenClaw支持超时控制如API_TIMEOUT60设置请求模型API的超时时间秒避免长时间挂起。重试机制如API_RETRY_TIMES3在遇到网络波动或服务端5xx错误时自动重试。并发限制如MAX_CONCURRENT_REQUESTS10限制同时向模型API发起的请求数避免触发服务端的速率限制。流式响应确保stream: true的请求能正确工作这需要OpenClaw和后端模型API都支持Server-Sent Events (SSE)。7.4 监控与告警配置完成后不等于一劳永逸。你需要建立简单的监控日志监控使用docker logs或日志收集工具如LokiPromtailGrafana监控错误日志。健康检查定期调用OpenClaw的健康检查接口或发送一个简单的测试问答验证端到端流程是否正常。额度监控定期登录DeepSeek/阿里云控制台查看API调用量和剩余额度设置用量告警如果平台支持避免突然停机。环境变量配置是打开OpenClaw大门的钥匙虽然步骤繁琐但每一步都有其道理。按照上面的攻略耐心核对善用检测命令和日志你一定能顺利配置成功。记住遇到报错不要慌那只是系统在告诉你它需要什么信息而你现在已经知道如何去提供了。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进