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

llama.cpp重大更新:自带Web UI,性能超越Ollama,本地大模型部署新选择!

llama.cpp重大更新:自带Web UI,性能超越Ollama,本地大模型部署新选择!

Ollama 背后执行推理的核心技术其实是由 llama.cpp 承担的,GGUF 模型格式也是由 llama.cpp 的作者所开发。 现在 llama.cpp 迎来重大更新,它也有了自己的 Web UI,我测试了安装部署和自行打包,很多地方确实比 Ollama 还有方便好用。 官方介绍,优势如下: * 完全免费、开源且由社区驱动 * 在所有硬件上表现出色 * 高级上下文和前缀缓存 * 并行和远程用户支持 * 极其轻量级且内存高效 * 充满活力且富有创造力的社区 * 100% 隐私 使用之前需要先安装 llama.cpp server 我还是喜欢命令行直接安装 ## Winget (Windows)winget install llama.cpp## Homebrew (Mac and Linux)brew install llama.

【保姆级教程】llama.cpp大模型部署全攻略:CPU/GPU全兼容,小白也能轻松上手!

【保姆级教程】llama.cpp大模型部署全攻略:CPU/GPU全兼容,小白也能轻松上手!

一、简介 * • llama.cpp 是一个在 C/C++ 中实现大型语言模型(LLM)推理的工具 * • 支持跨平台部署,也支持使用 Docker 快速启动 * • 可以运行多种量化模型,对电脑要求不高,CPU/GPU设备均可流畅运行 * • 开源地址参考:https://github.com/ggml-org/llama.cpp • 核心工作流程参考: 二、安装与下载模型(Docker方式) 1. 搜索可用模型 • 这里以 qwen3-vl 模型为例,提供了多种量化版本,每种版本的大小不一样,根据自己的电脑性能做选择,如选择(模型+量化标签):Qwen/Qwen3-VL-8B-Instruct-GGUF:Q8_0 • 可以在huggingface官网中搜索可用的量化模型:https://huggingface.co/models?search=

【每天一个知识点】Midjourney

【每天一个知识点】Midjourney

🧠 一、Midjourney 的工作方式(原理机制) Midjourney 是基于 扩散模型(Diffusion Model) 与 大规模视觉语言模型(CLIP) 的 AI 图像生成系统。 它的核心原理可以概括为三个阶段: 1️⃣ 文本理解阶段(Prompt Encoding) * 用户输入提示词(Prompt),例如: “A futuristic cityscape at sunset, ultra realistic, cinematic lighting, 8K” * Midjourney 使用一个经过大规模训练的 文本–图像对齐模型(类似 OpenAI 的 CLIP) 来理解提示词的语义。 * 模型将文字转化为一组高维语义向量(text embedding)。 2️⃣ 扩散生成阶段(Diffusion Process) * 系统从一张“

NASA火星代码测试内幕:用AIGC模拟外星环境攻击

NASA火星代码测试内幕:用AIGC模拟外星环境攻击

火星任务软件测试的迫切需求 NASA的火星探测任务(如“毅力号”和未来载人计划)依赖于复杂的软件系统,这些系统必须抵御未知的外星环境威胁,包括辐射干扰、沙尘暴、黑客攻击等。传统测试方法难以模拟这些极端场景,因此NASA创新性地引入AIGC(人工智能生成内容)技术,生成动态、高保真的攻击模拟环境。本文从软件测试专业视角,揭秘这一内幕,分析其技术框架、测试流程和行业启示,助力测试从业者提升风险应对能力。 一、背景:火星软件测试的独特挑战 火星任务软件(如导航、通信和生命支持系统)面临三重挑战: 1. 环境不确定性:火星表面辐射强度是地球的100倍,沙尘暴可导致传感器失效(数据来源:NASA JPL报告,2025)。 2. 安全威胁:外星黑客攻击可能通过深空网络渗透,例如2024年模拟测试中发现的零日漏洞。 3. 测试局限性:地面实验室无法完全复制火星条件,传统脚本测试覆盖率不足。 AIGC的引入解决了这些痛点: * 定义:AIGC利用生成式AI(如GPT-4和GANs)自动创建攻击场景,包括恶意代码注入、