连接错误
本页专注于 Elftia 中各类网络连接问题的排查。涵盖 LLM API 调用错误、代理相关故障、SSL/TLS 问题、MCP 连接失败以及 Channel 连接异常。
LLM API HTTP 状态码
当 LLM API 调用返回错误时,HTTP 状态码是最重要的排查线索。以下是每个状态码的含义和解决方案:
401 Unauthorized
含义: API Key 无效或未提供。
常见原因:
- API Key 输入时包含多余空格或换行
- API Key 已被撤销或过期
- API Key 格式错误(如 OpenAI Key 应以
sk-开头) - 使用了错误提供商的 Key
解决步骤:
- 前往 设置 → 提供商设置,重新检查 API Key。
- 复制完整的 Key,粘贴到输入框中替换现有值。
- 前往提供商的控制台,确认 Key 仍然有效。
- 如果使用 API Key 池,检查池中是否有失效的 Key(已禁用的 Key 会标记为灰色)。
当 API Key 池中某个 Key 返回 401 时,该 Key 会被自动禁用,系统自动切换到池中其他可用 Key。
403 Forbidden
含义: 认证成功但权限不足。
常见原因:
- 账号余额不足或未绑定支付方式
- API Key 不具备请求的模型的访问权限
- IP 地址或地区被提供商限制
- 组织/项目权限限制
解决步骤:
- 登录提供商控制台,检查账号余额和支付状态。
- 确认 API Key 有权访问你选择的模型(部分高级模型需要特殊权限)。
- 如果使用代理,尝试切换代理节点到不同地区。
- 检查提供商控制台中的组织和项目设置。
429 Too Many Requests
含义: 请求频率过高,触发了速率限制。
常见原因:
- 短时间内发送了太多请求
- 账号的速率配额较低(免费或低层级账号)
- 多个应用共享同一个 API Key
解决步骤:
- 等待一段时间后重试。Elftia 会显示冷却提示。
- 如果频繁触发,考虑升级提供商账号的用量层级。
- 配置 API Key 池,使用多个 Key 分散请求。
Elftia 的自动处理:
- 遇到 429 时,当前 Key 会进入冷却期(从 60 秒开始,指数退避最长至 15 分钟)。
- 如果配置了 API Key 池,系统会自动切换到池中其他可用 Key 重试请求。
- 冷却期结束后 Key 自动恢复可用。
500 Internal Server Error
含义: 提供商服务器内部错误。
解决步骤:
- 这是提供商端的问题,通常会自动恢复。等待几分钟后重试。
- 查看提供商的状态页面确认是否有已知故障。
- 如果持续出现,尝试切换到其他模型或提供商。
502 Bad Gateway
含义: 提供商的网关/负载均衡器错误。
解决步骤:
- 通常是暂时性问题,等待 1-5 分钟后重试。
- 检查提供商状态页面。
- 如果使用自定义 Base URL(第三方中转),检查中转服务是否正常。
503 Service Unavailable
含义: 提供商服务暂时不可用(维护或过载)。
解决步骤:
- 等待提供商恢复服务。
- 切换到备用提供商继续工作。
- 查看提供商的状态页面和社交媒体了解恢复时间。
529 Overloaded
含义: 提供商服务器过载(Anthropic 特有的状态码)。
解决步骤:
- 等待一段时间后重试。
- 如果配置了 API Key 池,系统会自动切换 Key 重试。
- 尝试使用较小的模型(如 Claude Haiku 而非 Claude Opus),减轻服务器负担。
Elftia 的自动处理: 与 429 相同,触发冷却和自动 Key 切换机制。
代理相关错误
ECONNREFUSED
含义: 连接被拒绝,通常是代理服务未运行。
Error: connect ECONNREFUSED 127.0.0.1:7890
解决步骤:
- 确认代理客户端(Clash、V2Ray、Shadowsocks 等)正在运行。
- 检查代理监听的端口号与 Elftia 配置的端口是否一致。
- 确认代理是否监听了正确的地址(
127.0.0.1vs0.0.0.0)。 - 如果不需要代理,在 设置 → 通用 → 代理 中切换为「无代理」。
ETIMEDOUT
含义: 连接超时,代理无法连通目标服务器。
Error: connect ETIMEDOUT api.openai.com:443
解决步骤:
- 检查代理的上游连接是否正常(代理本身能否访问目标域名)。
- 检查代理的路由规则是否包含 LLM API 域名。
- 尝试切换代理节点。
- 检查防火墙规则。
ECONNRESET
含义: 连接被远端重置,通常是代理中途断开。
解决步骤:
- 检查代理的连接稳定性。
- 增大代理的超时设置。
- 如果是长时间的流式请求(如大段代码生成),代理可能有连接时长限制,需要调整。
SSL/TLS 错误
UNABLE_TO_VERIFY_LEAF_SIGNATURE
含义: 无法验证服务器证书,通常是自签名证书。
常见场景:
- 企业代理使用自签名 CA 证书进行 HTTPS 检查
- 自建的 LLM API 中转服务使用自签名证书
解决步骤:
- 安装并信任代理/中转服务的根证书。
- Windows:双击证书文件 → 安装证书 → 本地计算机 → 受信任的根证书颁发机构。
- macOS:双击证书文件 → 添加到钥匙串 → 始终信任。
- Linux:复制到
/usr/local/share/ca-certificates/→ 运行sudo update-ca-certificates。
- 重启 Elftia 使证书变更生效。
CERT_HAS_EXPIRED
含义: 服务器的 SSL 证书已过期。
解决步骤:
- 如果是自建服务,更新 SSL 证书。
- 如果是公共服务,通常是临时问题,稍后重试。
- 检查系统时间是否准确(错误的系统时间会导致有效证书被判定为过期)。
ERR_TLS_CERT_ALTNAME_INVALID
含义: 证书的域名与实际访问的域名不匹配。
解决步骤:
- 检查提供商的 Base URL 是否拼写正确。
- 如果使用自定义端点,确认服务器证书覆盖了你使用的域名。
MCP 连接错误
stdio 模式 — ENOENT
含义: 找不到 MCP 服务器的启动命令。
Error: spawn npx ENOENT
解决步骤:
- 确认
command字段指定的程序已安装:npx/node:需要安装 Node.js。uvx/python:需要安装 Python 和 uv。
- 在终端中手动运行该命令验证是否可执行。
- 检查 设置 → 通用 → 环境 中的工具安装状态。
- 如果工具已安装但仍报错,可能需要重启 Elftia 刷新 PATH 环境变量。
stdio 模式 — 进程启动后立即退出
症状: MCP 服务器显示短暂连接后断开。
可能原因:
- 缺少必要的 npm/pip 依赖
- 启动参数错误
- 缺少必要的环境变量
解决步骤:
- 在终端中手动运行 MCP 服务器命令,查看错误输出:
npx -y @modelcontextprotocol/server-filesystem /path
- 检查是否缺少依赖包,手动安装:
npm install -g @modelcontextprotocol/server-filesystem
- 确认 MCP 配置中的
env包含所有必要的环境变量。
SSE/HTTP 模式 — 连接超时
症状: 远程 MCP 服务器连接超时。
解决步骤:
- 确认 MCP 服务器正在运行且可从你的网络访问。
- 在浏览器中尝试访问 MCP 服务器的 URL 验证连通性。
- 检查防火墙是否允许访问 MCP 服务器的端口。
- 如果使用代理,确认代理规则允许访问 MCP 服务器的地址。
SSE 模式 — 连接频繁断开
症状: SSE 连接建立后频繁断开重连。
可能原因:
- 网络不稳定
- 代理或负载均衡器的连接超时设置过短
- MCP 服务器本身不稳定
解决步骤:
- 检查网络连接的稳定性。
- 如果使用代理或反向代理,增大连接超时和空闲超时设置。
- 联系 MCP 服务器的维护者确认服务状态。
Channel 连接错误
Discord Bot 连接失败
可能原因:
- Bot Token 无效或过期
- Bot 未被邀请到目标服务器
- Bot 缺少必要的权限
- Discord API 限速
解决步骤:
- 在 Discord Developer Portal 确认 Bot Token 正确。
- 确认 Bot 已被邀请到目标 Discord 服务器并有发言权限。
- 检查 Bot 的 Privileged Gateway Intents 是否已启用。
Telegram Bot 连接失败
可能原因:
- Bot Token 无效
- 网络无法访问 Telegram API(
api.telegram.org) - 另一个客户端在使用同一个 Bot Token
解决步骤:
- 通过 @BotFather 确认 Bot Token 正确。
- 确认你的网络可以访问
api.telegram.org(可能需要代理)。 - 确保没有其他应用正在使用相同的 Bot Token。
速率限制与退避机制
Elftia 内置了智能的速率限制处理机制:
API Key 池自动切换
当单个 Key 遇到 429/529 错误时:
- 当前 Key 进入冷却期。
- 系统立即尝试池中下一个可用 Key。
- 如果请求成功,用户几乎无感知。
- 冷却期使用指数退避:60s → 120s → 240s → ... → 最长 15 分钟。
- 冷却期结束后 Key 自动恢复可用。
会话亲和性
为了保持 LLM 提供商的提示缓存效率,同一个对话会话会尽量使用同一个 API Key:
- 首次请求通过加权轮询选择 Key。
- 后续请求优先使用同一个 Key。
- 仅当绑定的 Key 不可用(冷却中或被禁用)时才切换。
永久失败处理
当 Key 返回 401/403 时,说明 Key 已永久失效:
- 该 Key 会被自动禁用(标记为不可用)。
- 系统切换到其他 Key。
- 你会在提供商设置的 API Key 池中看到被禁用的 Key。
防火墙与杀毒软件
防火墙阻止出站连接
症状: 所有 LLM API 调用都超时或被拒绝。
解决步骤:
- 在防火墙设置中,将 Elftia 添加到允许列表。
- Windows Defender 防火墙:控制面板 → Windows Defender 防火墙 → 允许应用通过防火墙 → 添加 Elftia。
- macOS:系统偏好设置 → 安全性与隐私 → 防火墙 → 允许 Elftia。
- 如果使用企业防火墙,联系 IT 管理员开放以下域名的出站访问:
api.openai.com(OpenAI)api.anthropic.com(Anthropic)generativelanguage.googleapis.com(Google Gemini)api.deepseek.com(DeepSeek)
杀毒软件误报
症状: 杀毒软件阻止 Elftia 运行或网络连接。
解决步骤:
- 在杀毒软件中将 Elftia 的安装目录添加到排除/白名单。
- 常见需要排除的路径:
- Windows:
C:\Users\<用户名>\AppData\Local\Elftia\ - macOS:
/Applications/Elftia.app
- Windows:
网络连通性快速检查
遇到连接问题时,可以按以下顺序快速排查:
- 基本网络:在浏览器中打开任意网页,确认网络正常。
- 域名解析:在终端运行
ping api.openai.com(或对应提供商域名),确认域名可解析。 - 端口连通:在终端运行
curl -I https://api.openai.com,确认 443 端口可访问。 - 代理测试:如果使用代理,在终端设置代理环境变量后重试上述命令。
- Elftia 测试:在 Elftia 的提供商设置中使用「测试连接」功能。
如果步骤 1-4 都正常但步骤 5 失败,可能是 Elftia 的代理配置问题,请参考 使用代理 重新配置。
如果本页未涵盖你遇到的连接问题,请使用 诊断工具 导出诊断信息,然后在社区中寻求帮助。