Skip to content

bug: Moonshot 国际站余额无法查询,双站点同时配置时凭据复用不确定 #39

Description

@Hotakus

背景

balance-providers.ts 目前只有一条 Moonshot 适配器(id: "moonshot"),余额端点是国内站
https://api.moonshot.cn/v1/users/me/balance。

而 OpenCode 的 provider 目录(models.dev)把 Moonshot 拆成了两个独立 provider:

provider id 站点 API
moonshotai 国际站 https://api.moonshot.ai/v1
moonshotai-cn 中国站 https://api.moonshot.cn/v1

插件里没有 moonshotai 这个 id,两边只能靠前缀匹配(startsWith("moonshot"))对上。

复现步骤

  1. 在 OpenCode 里连接 Moonshot(国际站 moonshotai 和/或中国站 moonshotai-cn)
  2. V2 下打开 /cache-balance,选中 Moonshot
  3. 观察余额

期望行为

两个站点的余额各自可查,币种分别为 USD(国际站)/ CNY(中国站),凭据按站点一一对应。

实际行为

  • 只配国际站时:显示「未配置」(插件端点是国内站,id 也对不上)
  • 两个都配时:前缀匹配命中的 provider 由 provider.list() 的顺序决定,可能读到国际站 key
    却打到国内站端点,返回 401
  • 国际站余额无论如何都查不到

根因

  • 单条适配器无法表达「同一供应商的两个站点」
  • 余额 provider id(moonshot)与 OpenCode provider id(moonshotai / moonshotai-cn)不一致,
    靠前缀匹配碰运气

建议方向

  • 拆成两条:moonshotai(国际站,USD)与 moonshotai-cn(中国站,CNY),id 直接对齐
    OpenCode provider id,消除前缀匹配
  • matchBalanceProvider 的自动切换匹配需能区分两者
  • V1 / V2 共用 balance-providers.ts,两端保持一致

环境

  • OS: Windows 11
  • opencode: 2.0.14
  • opencode-visual-cache: 1.7.1
  • Node: v22.18.0

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions