@astrosheep/pi-quota

中文文档
0.13.2发布于 2026/10/28TypeScriptES Module零依赖近 30 天下载 2669

由 Codex, Kimi, OpenCode Go, 新阿庇, DeepSeek, Sub2API 和 YesCode 适配器组成配额栏

中文使用文档
文档目录6 节
  1. 显示什么
  2. 配置提供者
  3. 建筑
  4. 快照计划
  5. 独立查询层
  6. 发展

@astroheep/pi-quota (英语)

Pi的契约配额状态: Codex, Kimi, OpenCode Go和DeepSeek在框外工作;新Api,Sub2API和YesCode使用明确的提供方绑定.

pi install npm:@astrosheep/pi-quota

安装或更改设置后重新装入 Pi 。 使用 /usage 以持续、无上下文的方式提供拥有配额数据的提供者的快照,包括目前的数据。 使用 /usage --all 检查供应商错误。 自动页脚投票从不添加聊天项目 .

显示什么

仁爱页脚/usage
已知使用期限5h [▆] 72% ↺ 2h15m水平栏、剩余百分比、重置、可用的确切数额
钱包Bal $12.34与限额和开支分开
数额限制,没有规定期限Key quota [▇] $85.00剩余百分比加上准确的剩余/使用/上限
无限制限制Key quota ∞无限制,没有假钱或百分比
开支未显示今天的费用;终生时间保留在数据中,没有显示

百分比总是意味着 剩余,没有使用。 未知为 [?] ?; 过期的重设为 ↺ due 并隐藏 Stale 百分比,直到下一个成功查询。 钱包余额永远不会变成百分比 。 历史开支不是配额.

页脚显示每个平衡,然后按适配器顺序限制,默认上限为2个——设置 quotaUsage.footerWindows 改为正整数或 "all" ——然后是 +N 对于它没有显示的限制,只针对目前的提供者。 共同限制比范围限制更可取,因此范围限制可以算入 +N。 。 。 . /usage 查询所有已配置的支持提供者,并显示按提供者分组的每个余额、限制和“今日”开支条目;它不打开模式,也不向模型发送信息。 捕捉时快照仍被冻结 瞬间查询失败(网络,超时,速率限制或服务出错)将最后一个成功值保存在页脚中. 一个暗淡 ? 仅出现过一次该快照至少5分钟,并在成功刷新后消失。 没有缓存数据的失败, 或者 auth/ config/schema 错误, 则显示错误 . /usage --all 仍然报告查询失败.

配置提供者

在全局中添加约束 ~/.pi/agent/settings.json 下级 quotaUsage (不是项目设置):

{
  "quotaUsage": {
    "providers": {
      "my-sub2api": { "adapter": "sub2api" },
      "my-new-api": { "adapter": "new-api", "quotaPerUnit": 500000, "currency": "USD" },
      "deepseek": { "adapter": "deepseek" },
      "opencode-go-2": { "adapter": "opencode-go" },
      "yes-vg": { "adapter": "yescode", "username": "[email protected]", "password": "..." },
      "my-script": { "adapter": "exec", "command": ["my-quota-cli", "--json"], "label": "My Script" },
      "my-alias": { "adapter": "alias", "of": "my-sub2api" }
    }
  }
}

使用 准确的 Pi 提供者 ID. 询问内置的提供者和明确绑定的提供者;明确装订用相同的ID取代内置的适配器。 未知的密钥或适配器选项被拒绝 。 API 密钥出自 Pi 的提供者 auth,端点出自提供者所注册的模型; 不要将模型 API 密钥放入 quotaUsage。 。 。 .

适配器终点结果
sub2api{baseUrl}/usage钱包、密钥配额、费率窗口或订阅日/周/月窗口; API-key Today/Lifetime 实际支出
new-api账户 PAT /api/user/self,返回键入式计费/端点账户余额+终生支出;密钥限制(无限或无限),没有发明续作
deepseek公务 /user/balance所有报告的货币余额;无发明支出
opencode-go公务 https://opencode.ai/zen/go/v1/usage5h/1w/30d 窗口,与内置窗口相同 opencode-go 适配器
yescodeco.yes.vg 登录 会话 /api/v1/auth/profile + 键 /api/v1/user/balance单独订户/现收现付余额加范围订户限额
exec运行 command 作为 argv(无外壳), 将 stdout 当作一个 QuotaSnapshot 贾森不论指挥报告如何; fetchedAt 由适配器盖章,绝不由命令盖章
alias无终点——出席大会的代表 of 约束(内置或明示)共享目标账户的配额; 一行折叠 /usage

捆绑 opencode-go 到第二个 OpenCode Go 账户: 注册为自己的 Pi 提供者 models.json 拥有自己的 apiKey (例如:. opencode-go-2然后把身份证绑在这里 内置 opencode-go 绑定是隐含的,不需要输入; 保留的ID openai-codex, (中文(简体) ), kimi-coding 财务报告和审定财务报表 opencode-go 不能反弹.

Sub2API 不接受额外的设置;它保存了部署子路径. 仅限利率的密钥不需要暴露出顶级货币(汇率为美元)。 未知的速率窗口持续时间和无效限制失败, 而不是发明出 1d 窗口 。 未加上限的订阅时间省略。 每周重播时使用所报内容 weekly_window_start 加上7天;每日/月重播仍然未知,因为这个端点没有提供相应的锚或服务器时区. 它的仪表板 /api/v1/usage 是一个单独的, JWT 认证的相接请求日志; 适配器使用 API 键 /v1/usage 换句话说.

对于新阿皮, quotaPerUnit 默认为 500000, (中文(简体) ), currency 改为 USD可选添加 dashboardAccessToken (控制台系统访问符)和 dashboardUserId (一些老叉子要求的正数ID)给供应商. 这个PAT是 仅限 设置中可选保密 。 账号端点优先;出错会回溯到按键本地计费和符号使用路径. 没有 PAT, API 键不能读取仪表板账户配额 。 有限的关键报告只有当 total_granted (b) 其限值保留了精确的用入/保留在 amounts.limit: null 和一个未知的百分比。 它永远不会变成钱包. unlimited_quota 和遗产账单的无限 哨兵变成无限 限制而不是无限的平衡 设置和服务器出错机构的值从未被登录 .

对于YesCode, username 是账户电子邮件和 password 账户密码; 两者都留在全局 settings.json,这是这个适配器的取舍。 YesCode 拒绝账户端点上的 API 密钥( “ 需要用户会话或 JWT ”) , 因此适配器日志通过 /api/v1/auth/login,将发行的cookie/JWT缓存到内存~23小时,并在认证失败时重新登录一次。 模型 cr_ 密钥从不发送到账户的端点; 它只将提供者钉入到官员身上 co.yes.vg 源代码。 订阅和现收现付余额仍然分开;只有在账户实际设有这些上限时,才列出每日/每周限额。 仅保留明确报告的下一次重置; last_*_reset 没有确定未来的时间表.

Exec 在没有 shell 的情况下运行配置的 argv, 并将 stdout 描述为 JSON 对象, 并需要 balances, (中文(简体) ), limits 财务报告和审定财务报表 spending 数组——每个适配器产生的相同的计划,由控制器执行. 这是一个 断开查询/执行合同迁移页:1 windows, (中文(简体) ), balance, (中文(简体) ), allowance 财务报告和审定财务报表 spend 字段被拒绝,而不是转换. fetchedAt 由适配器盖章; 命令的值被忽略。 控制器将每个查询(10s default)绑定,在超时时杀死了孩子;非零出局,无法读取的JSON和超过256KB的输出会成为出错,命令输出永远不会被登录. 这孩子继承了皮的环境,所以在阴道中保守秘密,而不是在 quotaUsage。 。 。 .

将第二个提供者ID绑定在同一账户: "of" 名称真正的绑定,它可以是内置的或明确的适配器。 其别名从不自问——关于别名的会话显示目标在页脚上的配额,在目标的身份和证书下被询问,以及 /usage 将别名折叠到目标单行中,并随同折叠后的会话针(和 ). 异想天开 of 目标没有配置的别名显然失效而不是消失.

认证配额 URL 必须使用 HTTPS, 但本地部署的 HTTP 回放除外 。 URL用户信息,查询字符串,片段和HTTP重定向被拒绝;证书从不跟随重定向. 固定的官方终点拒绝自定义起源. 没有浏览器 cookie 刮取或认证发现 .

建筑

Pi model/auth → adapter → QuotaSnapshot → controller → footer / /usage / state event
  • src/query/: 协议特定解析,认证解析,安全URL,被绑定的GET客户端,状态验证和控制器. 没有Pi/TUI进口.
  • src/config.ts:严格的全球供应商约束.
  • src/bar/:纯紧凑渲染和持续多供应商聊天卡.
  • src/extension.ts 财务报告和审定财务报表 src/index.ts: Pi生命周期和Auth桥.

QuotaSnapshot 保留三个独立的概念: balances (自有钱), limits (定期和非定期津贴) spending (已报告支出,不一定是钱包借项或限制消费)。 Pi 提供者只选择/宾入适配器;模型没有添加推断出的所有者/账户图. 自定义适配器可以传递到 createQuotaExtension({ adapters: [...] }); 见 examples/custom-provider.ts. 提供者的别名永远不会被推断出来.

扩展会公布结构状态( O) : quota-bar:state:v2 并保存使用卡 quota-bar:usage:v2;旧的合同事件/卡不迁移。 使用 createQuotaExtension({ footer: false }) 在不使用此扩展页脚的情况下消耗它。 正常的查询会被节制,可以被取消,超时被限制,出错后被后退. /usage 强制查询每个已配置的辅助提供者,然后从默认视图中省略失败的结果。 切换提供者立即丢弃旧页脚值 .

快照计划

以下所有类型均以下列出口命名: @astrosheep/pi-quota/query数字 :

interface Balance {
  id: string;
  label: string;
  currency: string;
  remaining: number;
}
interface LimitAmounts {
  unit: string;
  limit: number | null;
  used: number;
  remaining: number;
}
interface UsageLimit {
  id: string;
  label: string;
  scope?: string;
  remainingPercent: number | null;
  resetAt: number | null;
  durationSeconds?: number;
  amounts?: LimitAmounts;
  unlimited?: true;
}
interface Spending {
  id: string;
  label: string;
  currency: string;
  amount: number;
  period: 'today' | 'lifetime';
}
interface QuotaSnapshot {
  balances: Balance[];
  limits: UsageLimit[];
  spending: Spending[];
  fetchedAt: number;
}
  • 所有三个阵列都需要,每个阵列最多有64个条目。 只花费快照是有效的;全空快照不是有效的.
  • ID是非空白的,无控制字符串,最多64个字符,独一无二 每一类别它们是不透明的,保存得非常准确,从未从持续时间中衍生出来: 5h 不同身份证的限制仍然不同。 标签/镜片/单元为终端安全进行消毒,被修剪并被限定为64个字符;空白值被拒.
  • 货币是三字母大写代码. 平衡是有限的,包括零债务和负债务。 它们不能是无限的.
  • 百分比是2004年的限值 [0, 100]永远 剩余· ; null 意为未知. 准确数额和提供者百分比在四舍五入或具体提供者核算后无需商定. limit 非阴性或 null (上限未报告); used (a) 非负性; remaining 有限且可能是负数。 金额单位可以是货币或计数,例如: tokens编号 :requests;计数格式不为钱.
  • 无限制的使用 unlimited: true, (中文(简体) ), remainingPercent: null,没有 amounts。未知的盖 (amounts.limit: null已经 没有 意思是无限的.
  • fetchedAt 财务报告和审定财务报表 resetAt (一) 为划时代的毫秒; resetAt 阳性或 null提供的期限必须是正数。 时间/重置时间不明,不能证明没有续约. 没有假定固定/滚动分类或未来重设时间表.
  • 支出数额是有限的,不是负数. today 表示 提供者定义的天数,没有推断出时区。 两个时期都保留在快照中,但页脚省略了支出和 /usage 只显示今天.

例如,执行命令可以发出此命令( 无) fetchedAt 所需:

{
  "balances": [{ "id": "wallet", "label": "Balance", "currency": "USD", "remaining": 12.34 }],
  "limits": [{
    "id": "requests", "label": "Requests", "remainingPercent": 80, "resetAt": null,
    "amounts": { "unit": "requests", "limit": 100, "used": 20, "remaining": 80 }
  }],
  "spending": [{ "id": "today", "label": "Reported spend", "currency": "USD", "amount": 2.5, "period": "today" }]
}

独立查询层

非 Pi 消费者( 桥口、 插件、 脚本) 可以导入查询层, 而无需拉入 Pi 扩展名或其对等依赖性 :

import {
  AdapterRegistry, codexAdapter, createJsonClient, createPostJsonClient,
} from '@astrosheep/pi-quota/query';

const registry = new AdapterRegistry([codexAdapter]);
const snapshot = await registry.get('openai-codex')!.query({
  provider: 'openai-codex',
  signal: AbortSignal.timeout(10_000),
  now: () => Date.now(),
  getAuth: myAuthResolver,      // you supply credentials
  getJson: createJsonClient(),
  postJson: createPostJsonClient(),
});

子路径导出每个适配器, 注册/ 控制器, 选项校验器, HTTP/ exec pypution, 以及所有查询类型 。 同伴依赖是可选择的,因此仅为查询层安装就保持了光线.

发展

需要节点22.18和相容的Pi安装.

npm install --ignore-scripts
npm test
npm run typecheck
npm run build
npm run demo

版本与发布记录

@astrosheep/pi-quota 共发布 20 个版本,首次发布于 2026/09/23;过去 12 个月发布了 20 个版本。

版本发布日期距今
0.13.2latest2026/10/2810 天前
0.13.12026/10/2810 天前
0.13.02026/10/1424 天前
0.12.22026/10/1425 天前
0.12.12026/10/1325 天前
0.12.02026/10/1325 天前

关于 @astrosheep/pi-quota 的常见问题

@astrosheep/pi-quota 是什么?

由 Codex, Kimi, OpenCode Go, 新阿庇, DeepSeek, Sub2API 和 YesCode 适配器组成配额栏

如何安装 @astrosheep/pi-quota?

在项目目录运行 npm install @astrosheep/pi-quota,或使用 pnpm add / yarn add / bun add。

@astrosheep/pi-quota 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@astrosheep/pi-quota 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@astrosheep/pi-quota 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@astrosheep/pi-quota 可以商用吗?

@astrosheep/pi-quota 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@astrosheep/pi-quota 的下载量有多少?

根据 npm 官方下载统计,@astrosheep/pi-quota 在 2026/10/07 – 2026/11/05 这 30 天内被下载 2,669 次,日均约 89 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@astrosheep/pi-quota 还在维护吗?

最新版本 0.13.2 发布于 2026/10/28(10 天前);至今共发布 20 个版本,其中过去 12 个月发布了 20 个;首次发布于 2026/09/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。