资讯动态

CodexBar 的 Kiro 用量采集方案:kiro-cli 命令探测与 GetUsageLimits 超额额度增强

发布时间:2026/9/13 12:05:41 来源:尧图企业网站定制
CodexBar 的 Kiro 用量采集方案kiro-cli 命令探测与 GetUsageLimits 超额额度增强【免费下载链接】CodexBarShow usage stats for OpenAI Codex and Claude Code, without having to login.项目地址: https://gitcode.com/GitHub_Trending/co/CodexBar本指南基于 CodexBar 开源仓库中 docs/kiro.md 及 Kiro Provider 的完整实现系统讲解 CodexBar 如何在不借助浏览器 Cookie 与 OAuth 流程的前提下采集 KiroAWS 旗下基于 Builder ID 认证的编码助手的用量数据。读者将掌握Kiro 主数据源kiro-cli的命令式探测机制与超时/回退策略、GetUsageLimitsAPI 对超额overage额度的尽力而为增强、三类用量窗口计划积分、Bonus 积分、超额额度的快照映射以及计划用量 vs 超额用量拆分中防止双重计数的数据校验原则。Kiro Provider 概览无 Cookie、无 OAuth 的 CLI 优先架构CodexBar 是一款菜单栏用量统计应用对绝大多数 Provider 依赖浏览器 Cookie 或 OAuth 换取会话凭证。Kiro 是一个例外它使用 AWS 官方kiro-cli工具直接抓取用量数据认证完全由 CLI 内置的 AWS Builder ID 流程负责CodexBar 自身不接触任何 Cookie 或 OAuth 令牌。这一点可以从 Provider 描述符 Sources/CodexBarCore/Providers/Kiro/KiroProviderDescriptor.swift 中得到印证cliName: kiroaliases: [kiro-cli]fetchPlan.sourceModes仅包含.auto与.cli没有任何.cookies/.oauth模式取数管线resolveStrategies直接返回[KiroCLIFetchStrategy()]KiroCLIFetchStrategy.isAvailable通过TTYCommandRunner.which(kiro-cli)检查二进制是否存在fetch则构造KiroStatusProbe并执行探测dashboardURL指向 Kiro 官方用量页https://app.kiro.dev/account/usagedefaultEnabled: false意味着用户需要在设置中显式开启Show Kiro usage品牌色为 Kiro 标识性的橙色调ProviderColor(red: 255/255, green: 153/255, blue: 0/255)并配有专属聚彩confetti配色。数据源一kiro-cli 命令行探测主数据源核心命令与超时语义主数据源是单条 CLI 命令kiro-cli chat --no-interactive /usage对应源码位于 Sources/CodexBarCore/Providers/Kiro/KiroStatusProbe.swift 的runUsageCommand()整体超时 20 秒usageProbeTimeout: TimeInterval 20.0空闲截断 4 秒CLI 一旦开始输出若连续 4 秒无新输出则主动终止进程并采信已收到的内容idleTimeout: 4.0配套探测whoami3 秒超时、1.5 秒空闲截断用于登录态校验与账号信息邮箱、认证方式提取chat --no-interactive /context8 秒超时用于上下文窗口Context window占用解析该探测失败仅记日志、不阻断主流程。stdout/stderr 管道优先PTY 伪终端兜底新版 Kiro CLI 在管道下能正常输出但部分旧版本在普通管道下不产出任何内容反过来新版本在 PTY 下即使加了--no-interactive也可能让 TUI 无限期存活。因此 CodexBar 采用双通道竞速 回退策略见runCommand先以普通stdout/stderr管道启动命令管道数据到达即记录活动时间戳若管道在pipeTimeoutCap5 秒内仍无输出且尚未收到可接受的管道结果则在同一命令总截止时间20 秒内启动 PTY 伪终端通道兜底管道结果需要经过shouldAcceptPipeResult校验如 usage 输出必须能被解析器识别才被采纳不完整或不可用的管道输出会被丢弃转而等待 PTY 结果任一通道产生合格结果即取消另一通道并返回保证总耗时仍受 20 秒 deadline 约束。进程管理方面管道启动时会向TTYCommandRunner注册进程组PipeProcessRegistry确保应用退出时能随主进程一起终止残留子进程避免kiro-cli僵尸进程。前置条件与登录态本机需已安装kiro-cli未找到时报cliNotFoundkiro-cli not found. Install it from https://kiro.dev需已通过 AWS Builder ID 完成登录未登录时whoami/usage 输出会命中not logged in、login required、failed to initialize auth portal、kiro-cli login、oauth error等关键词被判定为notLoggedIn并提示用户先运行kiro-cli login输出带有 ANSI 装饰符CodexBar 在解析前先用正则\x1B\[[0-9;?]*[A-Za-z]|\x1B\].*?\x07剥离全部转义序列stripANSI。plan-only 报告的特殊处理kiro-cli 2.20 及更新版本会输出类似Plan: KIRO PRO MAX | 1 usage breakdowns的摘要行。解析器parsePlanName识别到该行时标记matchedNewFormat isSummary此时若没有可用的条形图百分比与积分数字则生成一个hasUsageMetrics false的只含计划名的快照——摘要中的 breakdown 数量既不等于零用量也不代表还有可用额度CodexBar 不会据此推断任何积分余量。数据源二GetUsageLimits API超额额度增强尽力而为为什么需要第二个数据源Kiro CLI 的/usage报告只把积分对照计划本身陈述对组织organization账户会整段省略 overage超额部分因此它永远无法给出超额上限。而账号实际可花费的天花板是计划 超额额度。GetUsageLimitsAPI 恰好携带超额额度CodexBar 用它把缺失的账本补全。相关实现位于 Sources/CodexBarCore/Providers/Kiro/KiroUsageLimitsAPI.swift。请求协议与区域路由HTTP 方法POSTContent-Type: application/x-amz-json-1.0头部X-Amz-Target: AmazonCodeWhispererService.GetUsageLimits请求体为{profileArn: ...}鉴权使用Authorization: Bearer access_token端点为区域化的依据 CLI profile ARN 中的 region 段路由profile ARN 区域端点us-east-1POST https://codewhisperer.us-east-1.amazonaws.com/eu-central-1法兰克福POST https://q.eu-central-1.amazonaws.com/ARN 会被严格拆解校验必须是arn:aws:codewhisperer:region:...:profile/xxx六段结构、不含空白与控制字符且区域必须命中上面两个端点之一否则抛出credentialsUnavailable(unsupported profile ARN)并跳过增强请求超时 10 秒使用隔离的临时 URLSession不共享 Cookie、无缓存、reloadIgnoringLocalCacheData、防重定向避免污染与主应用的状态。凭证来源只读打开 CLI 状态库API 凭证完全取自 CLI 自身的状态文件且以SQLite 只读模式sqlite3_open_v2(..., SQLITE_OPEN_READONLY, ...)busy_timeout 250ms打开——令牌与其刷新周期由 CLI 独占CodexBar 绝不写入macOS~/Library/Application Support/kiro-cli/data.sqlite3Linux无 XDG~/.local/share/kiro-cli/data.sqlite3Linux有XDG_DATA_HOME$XDG_DATA_HOME/kiro-cli/data.sqlite3任意平台可用环境变量KIRO_DATA_DIR整体覆盖目录追加data.sqlite3两张表两个键表key取出的 JSON 字段auth_kvkirocli:odic:tokenaccess_tokenstateapi.codewhisperer.profilearn值得注意的执行顺序设计API 增强在 CLI 探测之后运行fetch()中先跑 CLI最后fetchUsageLimits()因此 CLI 在探测过程中若刷新了令牌增强请求读取到的必然是最新的。此外该路径依赖 CLI 私有令牌库的位置而 Kiro 某个版本可能移动它CLI 报告则只读取 CLI 自己发布的输出因此增强被设计为非致命——失败时保留 CLI 已产出的计划相对数值或维持 plan-only 报告用量不可得只有当 API 返回明确的正向额度时才用它补上缺失的计划指标。输出格式示例与解析要点kiro-cli chat --no-interactive /usage的典型输出如下已剥离 ANSI┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ | KIRO FREE ┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ Monthly credits: ┃ ┃ ████████████████████████████████████████████████████████ 100% (resets on 01/01) ┃ ┃ (0.00 of 50 covered in plan) ┃ ┃ Bonus credits: ┃ ┃ 0.00/100 credits used, expires in 88 days ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛解析器在 KiroStatusProbe.swift 中通过多条正则兼容不同 CLI 版本计划名兼容三种格式——旧版| KIRO FREE徽标行、2.x 的Estimated Usage | resets on 2026-06-01 | KIRO FREE尾部字段、1.24 的Plan: name新格式用量百分比█\s*(\d)%条形图提取若无条形图则回退用(X.XX of Y covered in plan)计算used/totalcreditsTotal默认兜底 50即免费档重置时间resets on MM/DD假定当前或次年或resets on yyyy-MM-ddISO 格式两种写法均可解析Bonus 积分Bonus credits: X.XX/Y credits used与expires in N daysoverage 行Overages: ...、Credits used: X、Est. cost: $X USD仅当 API 不可用且币种为 USD 时才采信后两者。快照映射计划、Bonus 与超额三个独立窗口KiroUsageSnapshot.toUsageSnapshot()KiroStatusProbe.swift将上述信息映射为 CodexBar 统一的UsageSnapshotPrimary window主窗口月度计划积分百分比条形图。当托管报告或摘要输出扣留指标、且 API 增强不可用时该窗口连同数字积分行一起省略但计划名仍可见包含 Bonus 的 API 总量与零额度不会顶替 CLI 计划指标或凭空造出缺失的计划仪表。usedPercent取自███...█ X%或 API 应答时的planUsed / planLimitresetsAt解析自resets on MM/DD或 API 的nextDateResetSecondary window次窗口Bonus 积分存在时。始终来自 CLI。当GetUsageLimits返回非空bonuses[]数组时CodexBar 保留 CLI 的计划仪表不把 Bonus 花费当作计划用量overage 增强照常生效resetsAt由expires in N days换算为到期日Extra windowkiro-overage已花费的超额额度对照overageCapWithPrecision仅 API 提供。这是第二层积分上限而非可选的额外用量——计划仪表保持 plan-only使计划已花完但仍有超额余量的账户依旧能看到剩余超额空间该窗口复用 Credits 剩余的文案N of M credits leftProvider cost费用快照overageCharges对照overageCap × overageRate仅 API展示超额产生的实际费用与费用上限IdentityaccountOrganization取计划名如KIRO FREEloginMethod也取计划名用于菜单展示。详情面板details还会按需渲染Credits left/used/total、Bonus credits left、Overages 状态、Overage usage、Overage credits left、Overage cost、Context window 及其细分Context files / Tools / Kiro responses / Your prompts、Manage 链接。Plan 与 Overage 拆分杜绝双重计数API 响应中的currentUsageWithPrecision是包含 overage 的总量因此计划用量必须按planUsed currentUsage - currentOverages计算。若把总量直接喂给计划仪表已花完计划的账户会显示超过 100%且同一笔花费会在两个仪表中被重复计数。源码通过 KiroUsageLimitsAPI.parse 施加多条防御性校验逐分量校验而非求和校验planLimit、totalUsed、overageUsed各自必须是有限非负数——负数无法藏在正数总量里蒙混过关关系一致性totalUsed overageUsed否则抛overage exceeds total usage计划上限无 Bonus 时要求planUsed planLimit否则拒绝ENABLED 无 cap 视为不完整而非禁用overageEnabled在ENABLED但无 cap 时返回nil保留 CLI 的 overage 行展示未知状态如未来新增的枚举值同样不当作 disabled 处理重置时间合理性nextDateReset必须是 Unix 秒落在2001-09-09 ~ 2100-01-011_000_000_000...4_102_444_800区间内的值毫秒/微秒单位会被判定为非法。上述逻辑在 Tests/CodexBarTests/KiroUsageLimitsAPITests.swift 中有完整的真实响应级验证一份 KIRO POWER 账户计划已花完、超额正在使用的录制响应overageInUseResponse展示了planLimit 10000、planUsed 10000、overageUsed 3603.49、overageCap 10000、overageRate 0.04、overageCharges 144.14、overageChargeLimit 40010000 × 0.04的映射结果并断言快照中计划仪表停留在 100% 而非 136%、kiro-overage窗口为 36.03%、费用窗口上限为 $400。测试同时覆盖overage 超总量拒绝、DISABLED 不撤销已花超额、多个 CREDIT 余额拒绝、非 USD 币种不采信 CLI 的美元估算、Bonus 未分离时保留 CLI 计划仪表、以及测试环境强制拒绝访问开发者真实状态库refuses the live state database under tests。状态页Kiro 没有独立的状态页。CodexBar 中该 Provider 的statusLinkURL直接指向AWS Health Dashboard对应StatusItemController的View Status入口描述符见 KiroProviderDescriptor.swift状态相关探测实现于 Sources/CodexBarCore/Providers/Kiro/KiroStatusProbe.swift 与 KiroStatusProbe.swift 配套的KiroStatusProbe之上。应用侧集成登录流程与菜单栏展示应用层实现位于 Sources/CodexBar/Providers/Kiro/KiroProviderImplementation.swift提供kiro-cli-login设置动作允许用户在设置面板一键触发Re-authenticate重认证实际执行kiro-cli login提供kiroMenuBarDisplay下拉选择器控制菜单栏图标旁是否显示 Kiro 积分、百分比或两者KiroMenuBarDisplayMode三态。关键源码与测试文件索引文档与描述docs/kiro.mdProvider 描述符与取数策略Sources/CodexBarCore/Providers/Kiro/KiroProviderDescriptor.swiftCLI 探测whoami/usage/context、pipe/PTY 回退、ANSI 剥离、解析Sources/CodexBarCore/Providers/Kiro/KiroStatusProbe.swiftGetUsageLimits 增强SQLite 只读凭证、区域端点、解析校验Sources/CodexBarCore/Providers/Kiro/KiroUsageLimitsAPI.swift应用层集成登录动作、菜单栏选择器Sources/CodexBar/Providers/Kiro/KiroProviderImplementation.swift测试 Tests/CodexBarTests/KiroUsageLimitsAPITests.swift、Tests/CodexBarTests/KiroStatusProbeTests.swift、Tests/CodexBarTests/KiroStatusProbeTTYHardStopTests.swift、Tests/CodexBarTests/KiroRegionalEnrichmentTests.swift、Tests/CodexBarTests/KiroSummaryTests.swift综上CodexBar 的 Kiro Provider 展示了一种CLI 输出为主、底层 API 为辅的健壮取数范式主链路只依赖 CLI 公开输出对 CLI 私有存储的变动免疫增强链路尽力而为地补足超额账本并通过逐分量校验与计划/超额分离仪表的设计在不臆造数据的前提下给出准确、可审计的用量视图。【免费下载链接】CodexBarShow usage stats for OpenAI Codex and Claude Code, without having to login.项目地址: https://gitcode.com/GitHub_Trending/co/CodexBar创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价