最近遇到一个棘手的OpenClaw(版本:2026.3.13)问题,现象很直接:每次尝试对话,都会立刻弹出一个令人沮丧的提示——“LLM request timed out”。这个错误意味着网关服务无法在预期时间内接到大语言模型的回复。按照常规思路,自然是先检查网络连通性。然而,Ping测试和curl公网都正常,似乎不是基础网络的问题。排查:一个关键的“巧合”与规律的浮现
在一次偶然的测试中,我开启了系统代理,再次尝试与OpenClaw对话——**竟然成功了**,响应迅速且完全正常。- 关闭系统代理 -> 对话立即报错 `LLM request timed out`。
规律清晰得惊人:OpenClaw服务的正常工作,完全依赖于代理是否开启。这时我突然想到:在最初安装和配置OpenClaw的整个过程中,系统代理一直是开启状态。线索在这里交汇。安装时开启代理,很可能导致安装程序或配置工具将当时的网络环境(即“必须通过代理连接外网”)作为一种持久化配置,写入了某些文件。这使得服务进程在后来的每次启动时,都“固执地”尝试通过代理来发送请求。根因定位:固化在Service文件中的代理配置
问题的根源锁定在OpenClaw网关服务的systemd用户配置文件上。检查 `~/.config/systemd/user/openclaw-gateway.service`,发现在 `[Service]` 段中,存在大量硬编码的代理环境变量:Environment=HTTP_PROXY=http://127.0.0.1:7890Environment=HTTPS_PROXY=http://127.0.0.1:7890...
正是这些配置,导致服务进程每次启动都强制通过 `127.0.0.1:7890` 连接网络。一旦该代理服务未运行,所有对外请求自然瞬间超时。解决方案:一键重置服务配置
要解决此问题,需要清除这些硬编码配置,让OpenClaw在当前正确的网络环境下重新生成服务文件。以下是整合后的操作步骤,你可以将以下整个代码块复制到终端中执行。重要前提:请确保你执行脚本时的终端环境,处于你期望的网络状态(例如,如果你希望未来直连,则现在关闭代理;如果希望用另一个代理,请先配置好)。#!/bin/bash# 解决OpenClaw因安装时代理导致`LLM request timed out`的问题# 本脚本将重置OpenClaw Gateway服务配置,清除硬编码的代理设置。# 1. 备份当前服务配置文件(安全起见)echo "正在备份原服务配置文件..."cp ~/.config/systemd/user/openclaw-gateway.service ~/.config/systemd/user/openclaw-gateway.service.backupecho "备份完成: ~/.config/systemd/user/openclaw-gateway.service.backup"# 2. 停止并禁用当前运行的服务echo "正在停止并禁用openclaw-gateway服务..."systemctl --user stop openclaw-gatewaysystemctl --user disable openclaw-gatewayecho "服务已停止并禁用。"# 3. 删除现有的服务配置文件(这将移除硬编码的代理变量)echo "正在删除旧的服务配置文件..."rm ~/.config/systemd/user/openclaw-gateway.serviceecho "旧配置文件已删除。"# 4. 关键步骤:重新运行安装向导,生成基于当前环境的新配置。# 注意:请确保此时你的终端网络环境(直连或代理)符合你未来的使用预期。echo "正在重新运行OpenClaw安装向导以生成新配置..."echo "请根据提示完成操作。这将生成一个不含硬编码代理的新服务文件。"openclaw onboard --install-daemon# 5. 重新启用并启动新服务echo "正在启用并启动新的openclaw-gateway服务..."systemctl --user enable openclaw-gatewaysystemctl --user start openclaw-gatewayecho "新服务已启用并启动。"# 6. 验证服务状态echo "检查服务运行状态..."systemctl --user status openclaw-gateway --no-pager -l
执行完毕后,OpenClaw网关服务将依据你运行脚本时的环境生成全新配置,不再被旧的代理设置“绑架”。你现在可以自由地开启或关闭代理,而不会遇到“LLM request timed out”的错误了。经验总结
这个案例提醒我们,在安装和配置网络敏感型服务,特别是AI工具链时,初始环境的网络设置(如代理)可能被持久化。当服务运行环境(systemd服务)与你的日常使用环境(Shell会话)不一致时,就会引发此类“离了代理就罢工”的诡异问题。