Hoshimi

故障排查

按现象排查常见问题:服务器起不来或端口被占用,401/403/400,模型不见了或 503,登录失效,账号都用完了,代理和网络错误,站点拒绝图片或工具。

先看症状对应的小节。每一条都列出你会看到的错误信息、原因和处理办法;错误信息是程序实际输出的原文,可以直接搜索。

先收集信息

去哪里看能看到什么
运行 hoshimi serve 的终端所有日志(输出到 stderr,不写日志文件)。HOSHIMI_LOG_LEVEL=DEBUG hoshimi serve 或 hoshimi serve --debug 输出更多细节
hoshimi check配置能否读取、能否通过校验,以及将要启用哪些渠道、多少账号
渠道 页每个渠道的状态(需要处理)、账号状态(需要登录、已过期、暂停中、出错)、额度和最近的网络错误
用量 页的调用列表每次调用的渠道、账号、尝试次数、错误代码和说明;勾选 仅失败 只看失败的
模型 页每个模型的探测结果和是否被记为不可用
GET /api/v1/network/diagnostics每个渠道每类操作最近一次的网络结果,见网络与代理

服务器起不来

网关拒绝请求:401、403、400

这些错误来自 Hoshimi 自己的访问控制,请求还没有到达上游。它们的响应体形如 {"code": "…", "message": "…", "detail": {}};如果是 OpenAI 格式的 {"error": {…}},那是上游或路由返回的错误,见后面几节。

状态和代码信息原因与处理
401 model_api_key_requiredA model API key is required访问 /v1/* 需要模型 API 密钥。用 Authorization: Bearer <模型 API 密钥> 或 x-api-key 发送。注意工具访问密钥不能用在这里
401 auth_requiredA tool access key is required访问 /api/*、/docs 或 /openapi.json 需要工具访问密钥,只接受 Authorization: Bearer;模型 API 密钥和 x-api-key 不能用在这里
403 remote_not_allowedRemote address not allowed客户端 IP 不在 security.allow_cidrs 中。把它的网段加进去
400 bad_hostHost not allowed服务器监听在回环地址,而请求的 Host 不是 localhost、127.0.0.1、::1 或监听地址。常见于反向代理转发了公开域名,或用自定义的本地域名访问。让代理转发 Host: 127.0.0.1:<端口>
403 bad_originCross-origin request refused浏览器从另一个来源发起写请求。把那个来源加入 security.allow_origins(需要工具访问密钥)
403 bad_originCross-site request refused请求没有 Origin,但浏览器标明它来自另一个站点

网页界面反复弹出 请输入工具访问密钥,或提示 工具访问密钥不正确。:密钥被改过,用当前的密钥重新登录。忘了密钥时,停止服务器,用 hoshimi config set server.access_token "<新密钥>" 设置一个新的(或设为 null 取消),再启动。详细规则见访问控制。

模型的问题

账号与登录

网络与代理

渠道请求失败时,错误信息形如 <渠道>: <类别>; <建议>,类别与网络诊断中的 kind 相同:

信息原因与处理
…: proxy_error; check network configuration连不上配置的代理。确认代理在运行、地址和端口正确。配置的代理失败时不会退回直连
…: timeout; check network configuration连接或读取超时。站点可能需要代理才能访问,或代理太慢
…: connection_error; check network configurationDNS、拒绝连接或 TLS 错误
…: challenge; complete_browser_authorization上游返回了 Cloudflare 质询。Hoshimi 不会自动通过质询;换一条线路,或稍后再试
…: edge_rejected; check_endpoint_and_network返回的是 HTML 拦截页。检查地址是否正确、线路是否被拦截
…: invalid_response; check_endpoint_and_network期待 JSON 却收到 HTML,多半是地址指向了网页而不是 API
…: region_restricted; check_provider_availability站点不服务当前出口的地区。换一条其他地区的代理线路
…: client_restricted; check_client_compatibility站点只允许自己的客户端使用免费额度
…: signature_rejected; check_request_integrity站点拒绝了请求签名

这些都不会让账号作废,也不会触发换账号。

还要注意:

  • auto 模式读取的是服务器进程启动时的环境变量;在另一个终端里设置的 HTTPS_PROXY 对已经运行的服务器无效。小写的 https_proxy 优先于大写。
  • 环境变量里的代理地址写错时,请求会报错而不是被忽略。
  • network.system_proxy 只在 Windows 上有效。
  • SOCKS 代理对 Bedrock 的 AWS SDK 无效,Bedrock 需要 HTTP(S) 代理。
  • 本机地址(如本地的 Ollama)始终直连,不经过代理。

配置方法见网络与代理。

站点拒绝图片或工具

数据与文件

仍然解决不了时,带上 HOSHIMI_LOG_LEVEL=DEBUG 下的日志、hoshimi version 的输出和复现步骤,到 GitHub Issues 反馈。日志可能包含账号 id 和主机名,分享前检查一遍。

本页目录