ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

CodexBar 中 T3 Chat 用量集成:cookie 认证、tRPC 端点与双用量窗口解析原理

CodexBar 中 T3 Chat 用量集成:cookie 认证、tRPC 端点与双用量窗口解析原理 CodexBar 中 T3 Chat 用量集成cookie 认证、tRPC 端点与双用量窗口解析原理【免费下载链接】CodexBarShow usage stats for OpenAI Codex and Claude Code, without having to login.项目地址: https://gitcode.com/GitHub_Trending/co/CodexBarCodexBar 通过 cookie 认证的 tRPC 接口无公开 API追踪 T3 Chat 的 4 小时 Base 用量窗口与月度 Overage 超量Overage用量桶并在菜单栏以 Base / Overage 双窗口形式展示。本文以仓库中 docs/t3chat.md 为主体逐层拆解该集成的配置方式、请求构造、响应解析与错误处理并结合 T3Chat 源码目录 的实现细节帮助读者理解并调试这条 非官方集成 的完整链路。集成定位与非官方边界T3 Chat 没有为用量数据发布官方 API。CodexBar 的做法是读取其网站自身使用的 cookie 认证端点因此文档明确标注这是一次非官方集成上游任何响应结构或鉴权机制的变更都可能使其失效。这一风险在代码中也得到了体现——解析器、错误类型和 cURL 捕获解析都集中在 T3ChatUsageSnapshot.swift 与 T3ChatUsageFetcher.swift 中便于在上游变动时快速定位修补。从源码结构看该 provider 还具备一条插件回退路径T3ChatProviderDescriptor.swift 中定义的fetchPlan在ProviderPluginPrototype启用时会优先尝试t3chat.js脚本抓取策略失败或不可用时回退到原生 Swift 策略T3ChatWebFetchStrategy。两条路径都只依赖 cookie且不会调用 tRPC 端点之外的其他 T3 Chat 接口。配置方式自动导入推荐在任意受支持的浏览器中登录 T3 Chat在 CodexBar 的Settings → Providers中启用T3 Chat。启用后 CodexBar 会自动导入浏览器会话 cookie并且该 cookie 只会被发送到https://t3.chat。自动导入的实现在 T3ChatUsageFetcher.swift 的T3ChatCookieImporter中它按BrowserCookieImportOrder依次探测已安装的浏览器对t3.chat与www.t3.chat两个域名做 cookie 查询将所有匹配记录拼成namevalue; name2value2形式的 header 返回第一个非空来源即生效。注意浏览器 cookie 导入可能需要完全磁盘访问权限Full Disk AccessSafari 尤其如此Chromium 系浏览器则可能需要macOS 钥匙串Keychain授权。这也是为什么自动导入被#if os(macOS)包裹——非 macOS 平台下自动模式不可用只能走手动模式见T3ChatWebFetchStrategy.isAvailable的平台判断。手动粘贴在 T3 Chat 的 provider 设置里把Cookie source切到Manual然后在T3 Chat cookie字段中粘贴以下任一项从浏览器网络请求中复制的裸Cookie: ...header 值从 T3 Chat 设置页捕获的完整curl命令——解析器会处理所有-H标志但只转发Cookieheader 和一组固定的安全请求头白名单见 T3ChatUsageFetcher.swiftaccept、referer、sec-fetch-*、trpc-accept、x-client-context、x-deployment-id、x-trpc-batch、x-trpc-source等。手动捕获 cookie 的标准步骤在浏览器中打开https://t3.chat/settings/customization打开开发者工具 → Network 标签刷新页面找到getCustomerDatatRPC 请求右键 → Copy → Copy as cURL把完整curl命令粘贴进 CodexBar 设置里的T3 Chat cookie字段。解析入口是T3ChatUsageFetcher.requestContext(from:)T3ChatUsageFetcher.swift它先用CurlCaptureParser提取 header 字段取其中的Cookie值并归一化再通过白名单挑出可转发的请求头。需要强调的是T3 Chat 不支持独立的环境变量或--cookieCLI 参数Settings 字段是唯一的手动通道。设置界面本身由 T3ChatProviderImplementation.swift 提供一个 Cookie source 选择器Auto/Manual不允许 Off加上仅在 Manual 模式下可见的安全文本字段字段旁还有 Open T3 Chat Settings 链接直接打开https://t3.chat/settings/customization。cookie 值经sanitizedCookieHeader存储、normalizedConfigValue归一化持久化逻辑在 T3ChatSettingsStore.swift。数据源单次 GET 请求与 JSONL 响应每次刷新CodexBar 只发送一个 GET 请求GET https://t3.chat/api/trpc/getCustomerData?batch1input...请求构造的细节T3ChatUsageFetcher.customerDataURL()与applyDefaultHeadersinput参数是固定的 tRPC 入参{0:{json:{sessionId:null},meta:{values:{sessionId:[undefined]}}}}源码注释标明其形状捕获自 2026 年 5 月的getCustomerData请求默认请求头模拟浏览器环境trpc-accept: application/jsonl、x-trpc-source: web-client、x-trpc-batch: true、Chrome User-Agent、Referer: https://t3.chat/settings/customization、一组Sec-Fetch-*头以及Origin: https://t3.chat。手动 cURL 捕获中的对应头会覆盖这些默认值。响应体是JSONLtRPC 的 jsonl 传输格式。解析器 T3ChatUsageParser 逐行解析对每一行尝试JSONSerialization然后递归深度搜索findCustomerData内嵌的getCustomerDatatRPC 结果对象——判定条件是对象中包含usageFourHourPercentage、usageMonthPercentage或同时包含subscription与usageBand的字典找到后解码为T3ChatCustomerData结构体。这种 扫描 深度查找 策略让解析器对 tRPC 外层包装结构batch 数组、result 包装等的细微变化有一定容忍度但也意味着上游彻底改变字段命名时仍会失败。字段到用量窗口的映射源字段CodexBar 标签说明usageFourHourPercentageBase主窗口4 小时滚动窗口0–100usageFourHourNextResetAtBase 重置时间JavaScript epoch 毫秒或 Unix 秒usageWindowNextResetAtBase 重置时间回退当usageFourHourNextResetAt缺失时使用usageMonthPercentageOverage次窗口月度超量窗口usagePeriodPercentageOverage回退当usageMonthPercentage缺失时使用subscription.currentPeriodEndOverage 重置时间账期结束时间部分套餐缺失usageBandBase 标签后缀例如standard会显示为 Base - standardsubTier/subscription.productName套餐名作为菜单中的账号身份展示时间戳的归一化规则T3ChatUsageSnapshot.date(fromMilliseconds:)中以100 亿10_000_000_000为阈值——大于该值按 JavaScript epoch 毫秒除以 1000 处理否则按 Unix 秒处理。这与文档说明一致也覆盖了 T3 Chat 当前返回毫秒而部分 subscription 字段可能是秒 的混合情况。双用量窗口的映射逻辑映射实现在T3ChatUsageSnapshot.toUsageSnapshot()T3ChatUsageSnapshot.swiftBase 窗口主4 小时滚动限流桶追踪窗口开启以来已消耗的小时级模型生成额度的百分比按 T3 Chat 服务器时钟大约每 4 小时重置。代码中windowMinutes固定为4 * 60重置时间取usageFourHourNextResetAt缺失时回退到usageWindowNextResetAtusageBand非空时拼进重置描述形成如 Base - standard 的标签。Overage 窗口次月度超量预算追踪超出套餐包含额度的消费。重置时间只来自活跃订阅的subscription.currentPeriodEnd。这里有一处刻意的防御逻辑源码注释明确说明billingNextResetAt跟踪的是用量窗口重置而非超量账期因此当订阅元数据缺失时Overage 的重置时间直接留空unknown而不是错误地展示 Base 的重置时间——避免把 4 小时重置误标为月度重置。次窗口百分比的取值同样带回退usageMonthPercentage ?? usagePeriodPercentage最终经min(100, max(0, raw ?? 0))夹紧到 0–100。套餐名planName的生成规则是优先subscription.productName否则subTier并把连字符分隔的各段首字母大写如team-plan→Team Plan作为ProviderIdentitySnapshot的loginMethod展示在菜单中。CLI 用法# Show T3 Chat usage codexbar usage --provider t3chat # Or use the alias codexbar usage --provider t3-chat codexbar usage --provider t3别名t3-chat、t3在 T3ChatProviderDescriptor.swift 的ProviderCLIConfig中声明。T3 Chat 不提供 token 成本数据descriptor 中supportsTokenCost为falseusage --format json输出只包含用量与身份数据而codexbar cost --provider t3chat不受支持对应提示 T3 Chat cost summary is not supported.。错误与排障错误类型集中在T3ChatUsageErrorT3ChatUsageSnapshot.swiftHTTP 状态码分支在fetchCustomerData中处理401/403 映射为invalidCredentials429 且响应头x-vercel-mitigated: challenge时映射为vercelChallenge其余状态码包装为apiError(HTTP \(code))。错误原因修复No T3 Chat cookies found浏览器中没有t3.chat会话在受支持的浏览器登录 T3 Chat使用自动模式T3 Chat session cookie is invalid or expired会话 cookie 失效或被吊销退出 T3 Chat 后重新登录再刷新 CodexBar 或重新粘贴 cookieT3 Chat returned a Vercel security challenge手动只用了裸 Cookie header但 T3 Chat 需要额外的 Vercel 请求头改粘完整的 cURL 捕获Could not parse T3 Chat usageT3 Chat 改变了 tRPC 响应结构带脱敏后的响应样本提交 issueHTTP 401/HTTP 403会话过期或账号不存在重新认证HTTP 429带x-vercel-mitigated: challenge被 Vercel 边缘限流等几分钟用完整 cURL 捕获重试排障时还可以利用T3ChatUsageFetcher.debugRawProbeT3ChatUsageFetcher.swift它会打印一次完整探测包含 cookie 名、转发头、以及subTier、usageBand、四个百分比/重置时间字段的原始值失败时给出带本地化描述的错误行。对应的解析与请求行为在测试 T3ChatUsageFetcherTests.swift 中有覆盖。关键文件索引文件职责T3ChatProviderDescriptor.swiftprovider 元数据标签 Base/Overage、CLI 别名、品牌色与抓取管线Swift 策略 插件回退T3ChatUsageFetcher.swifttRPC 请求构造、浏览器 cookie 导入、cURL 捕获解析、HTTP 状态码处理T3ChatUsageSnapshot.swiftT3ChatCustomerData解码、JSONL 扫描、窗口/时间戳/套餐名映射T3ChatProviderSettings.swiftcookieSourcemanualCookieHeader设置结构及其在ProviderSettingsSnapshot中的注入T3ChatProviderImplementation.swiftSettings 界面Cookie source 选择器与 cookie 安全字段的可见性绑定T3ChatSettingsStore.swiftcookie 来源与 header 的持久化读写适用前提与限制自动 cookie 导入依赖 macOS 的浏览器 cookie 读取能力Full Disk Access / Keychain 授权其他平台只能使用手动 cURL 粘贴模式该集成只依赖t3.chat的单个 tRPC 端点请求默认超时 15 秒T3 Chat 无 token 成本数据成本类命令与统计codexbar cost对该 provider 不可用由于是非官方集成input参数、默认请求头与响应字段都可能随上游改版失效调试时应优先使用 Debug Probe 输出核对原始字段。【免费下载链接】CodexBarShow usage stats for OpenAI Codex and Claude Code, without having to login.项目地址: https://gitcode.com/GitHub_Trending/co/CodexBar创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表