Skip to content

Troubleshooting

KS-OTO edited this page Sep 21, 2026 · 2 revisions

排查

按症状查。

速查表

症状 最可能的原因 去哪节
页面起来了但每张卡都是「未配置」 环境变量没读到(改完没重启 / 平台面板没重新部署) ①
只有某一家卡不出现 变量名拼错 / 成对凭据缺一半 / 多账号断号 ②
报「会话已失效」但 Cookie 刚复制过 本地 .env 里的 $ 被展开吃掉字符 ③
平台面板拒绝保存变量 值里有空格 / 换行(整段 Cookie、echo 写入的 \n) ④
New API 填了 Token 却永远读不到数据 填的是 sk- 模型调用密钥而不是系统访问令牌 ⑤
阿里云只出了半张卡 / 少一块区块 两块凭据是共存关系,删了 AK/SK 就丢两块数据 ⑥
Logo 配了但一直看不到 用了 http 地址(被按混合内容拦掉)或地址写错 ⑦
站点名不见了 / 被截断 SITE_NAME 显式留空(只显示 Logo)、或太长被省略号截断 ⑦
时间文案整体消失 视口 ≤1199px 时它下移到内容区顶部,这是设计如此 ⑧
每次刷新都在打上游、额度查询很慢 关掉了服务端缓存 / 用的不是本项目部署 ⑨
改了变量但线上没变化 部署产物在构建期固化配置,改面板值不会影响已运行的实例 ⑩

1. 所有卡都显示「未配置」

这是未配置时的正常空态,不是错误 —— 页面在一条 Key 都没有时也应该能正常渲染。

排查顺序:

  1. 改完 .env 是否重启了服务? 环境变量在进程启动时读取,热更新不生效。

  2. 变量名对不对? 逐字对照 配置参考 的表。

  3. 真的读到了吗? 打印长度自检:

    bun -e 'console.log(process.env.DEEPSEEK_API_KEY?.length ?? "not set")'
  4. 线上环境:变量注入了吗? 打开 /api/status 看每家的 configured。 EdgeOne 上还可以打开 /api/diag,它会列出运行时已知的环境变量名 (Key/Secret 类只显示 <set>)。

  5. 在平台上配的变量,改完有没有重新部署? 见 ⑩。

2. 某一家平台不出现

  • 成对凭据缺一半:火山 / 阿里云 / 百度都需要 *_ACCESS_KEY_ID 和 *_SECRET_KEY 同时存在。只配一半时整对会被丢弃 —— 表现为「卡片无声消失,也没有空态提示」。
  • 多账号断号:编号必须连续,遇到缺口即停。 有 _1、_3 却没有 _2,后续组全部读不到。
  • 字母大小写与下划线:OPENCODE_GO_API_KEY 有两个下划线;GITEE_AI_API_KEY 不是 GITEE_API_KEY。

3. 「会话已失效」但 Cookie 是刚复制的

几乎一定是本地 .env 的 $ 展开把值吃掉了。

这类 ticket 的值里含 $,未转义时会被 .env 加载器当作变量名、静默展开为空, 而且报错与真过期完全一致(都是 BailianGateway.Login.NotLogined)。

  • 症状判据:报错里附带当前配置值的长度。明显偏短 → 就是这个问题。
  • 修法:字面 $ 写成 \$。加引号在两种加载器下都无效。
  • 平台上相反:直接粘原值,不要加反斜杠。

长度一致也可能是旧值。 长度自检只能抓被吃掉的截断,抓不到「长度相同的旧值」。 怀疑没生效时,比对哈希而不是长度。

完整写法见 凭据与多账号 → Cookie 怎么填。

4. 平台面板拒绝保存变量

面板会报「变量值不能包含空格、换行、制表符等特殊字符」。两个来源:

  • 整段 Cookie 头(形如 a=b; c=d)天生带分号与空格,面板必定拒绝。
    • 百炼:只粘 login_aliyunid_ticket 的值,别粘整段。
    • 模力方舟:必须用整段 → 先 encodeURIComponent 再存(服务端会自动还原)。
  • 用 CLI 写入时用了 echo:echo 会附带回车换行。改用 printf '%s'。

5. New API 填了 Token 却读不到数据

NEWAPI_TOKEN 要填的是系统访问令牌(个人设置 → 安全设置 → 系统访问令牌), 不是控制台里 sk- 开头的模型调用密钥。

两者都能通过站点鉴权,但权限不同。填成 sk- 时程序会自动降级到 OpenAI 兼容的 账单接口(/v1/dashboard/billing/*),读数仍然正确,但拿不到用户名与按模型明细 —— 表现为「卡片出来了但字段少一半」。

6. 阿里云的区块少了

ALIYUN_ACCESS_KEY_ID / ALIYUN_SECRET_KEY 与 ALIYUN_TOKENPLAN_COOKIE 各管一块数据,互不替代:

  • 删掉 AK/SK → 同时丢掉「Token 资源包」和「组织/座席」两块;
  • 没配 Cookie → 「个人版套餐用量」处显示黄色提示;
  • 只配 Cookie 也能用:个人版用量可独立查询,组织/座席区块自动隐藏。

对照表见 凭据与多账号 → 阿里云。

7. Logo 配了却看不到

原因 判据与修法
用了 http:// 地址 在 https 页面上被按混合内容拦掉,表现为「配了却一直看不到」。必须 https
地址写错 加载失败会自动降级:先换另一套主题的 Logo,都不行才退回纯文字。所以不会留破图
只配了明亮那套 暗黑模式会沿用 SITE_LOGO_URL。深色字标落在深色导航上会糊成一片,两套都配才完整
SITE_NAME 留空了 这是预期行为:显式留空 = 品牌位只显示 Logo。想显示默认名就删掉这一行
站点名被截成 LLM… 品牌位用省略号截断,不会把导航顶出视口。换个短点的名字

不受 CORS 限制:Logo 与 favicon 由浏览器直接加载,服务端既不代理也不读像素。

8. 时间文案在窄屏不见了

视口 ≤1199px 时,「更新于 / 下次刷新」会从导航行下移到内容区顶部 (手机原本就这么做)。实测 768 视口下导航行已无余量,站点名会被挤压成「AI…」。

所以窄屏下它只是换了位置,不是消失了。详见 配置参考 → 时间文案与断点。

9. 上游调用太频繁

本项目自带 TTL 缓存 + 单飞:命中缓存时上游调用为 0,并发刷新共享同一次上游请求。

  • 余额 / 用量类 TTL 60 秒,结构 / 权益类(资源包、套餐、座席)300 秒。
  • 默认刷新间隔 180 秒,所以按天计的那几项大约每两次自动刷新才真正打一次上游。
  • 手动点「刷新」会绕过缓存(?refresh=1)—— 这是故意的,手动刷新永远拿得到实时数据。

如果发现上游调用明显高于这个节奏,检查是不是把 REFRESH_INTERVAL_SECONDS 调得过小, 或者页面上有别的进程在打 /api/usage。

10. 改了变量线上没生效

部署产物在构建期固化配置。 改面板上的值不会影响已经在跑的实例, 要触发一次新部署(或在面板点 Redeploy)。

例外:SITE_NAME / Logo / favicon / REFRESH_INTERVAL_SECONDS 这些站点自定义变量 由服务端在启动时读取并随 /api/status 下发 —— 这些重启服务即生效,不需要重新构建前端。

还是不行

  1. 打开 /api/usage,看目标平台那一片切片里的 error / code。 上游业务码比 HTTP 码信息量大 —— 401 也可能是「账号已停用」而不是「令牌错」。
  2. 打开 /api/status 确认配置被服务端读到了。
  3. 还是定位不了就提 issue,附上 /api/usage 里那一片切片的输出 (先把凭据相关的字符串打码)。

Clone this wiki locally