OpenClaw gateway start 报 401 Invalid API key?一个环境变量的坑

今天折腾了半小时,终于搞明白为什么 openclaw gateway start 一直报 HTTP 401: Invalid API key,而 openclaw gateway run 却能正常工作。

记录一下,免得以后又踩。


问题现象

openclaw gateway run 前台运行,一切正常,能正常对话。

但换成 openclaw gateway start(systemd 后台服务),就报错:

HTTP 401: Invalid API key 

明明配置文件里 API key 写得好好的,为什么会这样?


原因分析

runstart 的区别:

  • run — 前台运行,直接继承当前 shell 的环境变量
  • start — 通过 systemd 启动后台服务,环境变量是隔离的

问题就出在这里。

我的 shell 里设置了:

exportANTHROPIC_BASE_URL=https://api.aigocode.com exportANTHROPIC_AUTH_TOKEN=sk-xxx... 

gateway run 能继承这些变量,所以能用。但 systemd service 启动时,这些变量根本不存在。

虽然 openclaw.json 配置文件里也写了 apiKey,但 OpenClaw 优先读取环境变量。环境变量不存在时,可能走了默认的 Anthropic 官方 API,然后用配置文件里的 key 去请求——当然会 401。


解决方案

把环境变量加到 systemd service 文件里。

Step 1:找到 service 文件

cat ~/.config/systemd/user/openclaw-gateway.service 

Step 2:在 [Service] section 添加环境变量

[Service] # ... 其他配置 ... Environment=ANTHROPIC_BASE_URL=https://api.aigocode.com Environment=ANTHROPIC_AUTH_TOKEN=sk-你的key [Install] WantedBy=default.target 

⚠️ 注意:Environment 必须放在 [Service] section 里,不能放在 [Install] 后面,否则 systemd 会直接忽略。

Step 3:重新加载并重启

systemctl --user daemon-reload systemctl --user restart openclaw-gateway 

搞定。


踩坑记录

我一开始用 >> 追加环境变量到文件末尾,结果加到了 [Install] section 后面。systemd 日志里有这么一行:

Unknown key name 'Environment' in section 'Install', ignoring. 

直接被忽略了,难怪不生效。


写在最后

这个问题的本质是:前台运行和后台服务的环境变量是隔离的

如果你用的是第三方 API 代理(比如 aigocode),或者自定义了 ANTHROPIC_BASE_URL,记得把这些变量也加到 systemd service 里。

希望这篇文章能帮到遇到同样问题的人。

Read more

Flutter 三方库 wallet_connect 的鸿蒙化适配指南 - 实现 Web3 钱包协议连接、支持 DApp 授权登录与跨链交易签名实战

Flutter 三方库 wallet_connect 的鸿蒙化适配指南 - 实现 Web3 钱包协议连接、支持 DApp 授权登录与跨链交易签名实战

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 wallet_connect 的鸿蒙化适配指南 - 实现 Web3 钱包协议连接、支持 DApp 授权登录与跨链交易签名实战 前言 在进行 Flutter for OpenHarmony 的去中心化应用(DApp)或加密货币钱包开发时,支持标准的 WalletConnect 协议是链接用户钱包的关键。wallet_connect 是该协议的 Dart 实现,它能让你的鸿蒙 App 安全地与 MetaMask、Trust Wallet 等钱包建立双向加密连接。本文将探讨如何在鸿蒙系统下构建安全、稳定的 Web3 授权流程。 一、原理解析 / 概念介绍 1.1 基础原理

By Ne0inhk

一文吃透SBUS协议:从原理到实战(无人机/航模/机器人适用)

在无人机、航模、机器人等精密控制领域,“稳定、快速、可靠”是控制信号传输的核心诉求。传统的PWM信号虽然简单直观,但存在通道数有限、抗干扰能力弱、布线复杂等痛点。而SBUS(Serial Bus)协议——由FUTABA公司专为遥控设备设计的串行数字通信协议,凭借单线传输多通道数据、抗干扰强、延迟低的核心优势,逐渐成为行业主流。 本文将从“是什么-怎么工作-协议细节-厂家产品-接口设计-代码实现-实战技巧-常见问题”八个维度,用最通俗的语言+大量对比表格,全面拆解SBUS协议。无论你是刚入门的电子爱好者,还是需要落地项目的工程师,都能从本文中找到所需的实用信息。 一、SBUS协议基础认知:核心定位与优势对比 在深入技术细节前,我们先通过对比和基础定义,快速建立对SBUS的认知。很多人会把SBUS和常见的UART、PWM等混淆,这里先明确其核心定位:SBUS是基于反向电平UART的“应用层控制协议”,专门用于遥控器与接收机、接收机与飞控/执行器之间的控制信号传输。 1.1 为什么需要SBUS?传统方案的痛点 在SBUS出现之前,航模和早期无人机主要使用PWM或PPM协议传输控

By Ne0inhk
云原生混合架构 K8s 自动化部署平台

云原生混合架构 K8s 自动化部署平台

本项目构建了一套 “本地虚拟化 + 阿里云公有云” 的混合云原生 K8s 自动化部署平台,核心目标是落地安全隔离、自动化交付、弹性稳定且可监控的运维体系,完整覆盖从基础环境搭建到云原生集群部署、服务交付、混合云网络打通的全流程。 1 环境搭建 本阶段核心目标是通过虚拟化技术创建3个节点的本地集群(1个master节点+3个node节点),为后续云原生环境测试、CI/CD组件部署提供基础环境。 1.1 环境规划 节点角色CPU内存磁盘IP规划(桥接模式)master节点(master)2核8G50G192.168.0.200node1节点(node1)2核8G50G192.168.0.201node2节点(node2)2核8G50G192.168.0.202node3节点(node3)2核8G50G192.168.0.203阿里云ECS(Jenkins)2核4G40G弹性公网IP阿里云ECS(Gitlab)2核8G40G弹性公网IP阿里云ACR容器镜像服务----阿里云SLS日志服务----

By Ne0inhk