CodexBar异步架构设计与多源数据采集实现:如何实时监控AI Token消耗
CodexBar异步架构设计与多源数据采集实现如何实时监控AI Token消耗【免费下载链接】CodexBarShow usage stats for OpenAI Codex and Claude Code, without having to login.项目地址: https://gitcode.com/GitHub_Trending/co/CodexBarCodexBar是一款专为开发者和产品经理设计的开源工具能够在无需手动登录的情况下实时监控OpenAI Codex、Claude Code等主流AI服务的Token消耗情况。通过创新的异步架构设计和多源数据采集策略它解决了传统监控工具数据延迟、资源占用高和隐私安全等问题为AI成本管理提供了专业级解决方案。技术挑战与系统设计传统AI服务监控面临三大技术挑战数据采集实时性不足、多源数据整合复杂、用户隐私保护困难。CodexBar采用模块化架构设计将系统划分为数据采集、处理、存储和展示四个核心层次通过异步任务调度和智能缓存机制实现高效数据流处理。图CodexBar模块化架构设计展示数据从采集到展示的完整流程核心架构模块系统主要包含五个核心模块Sources/CodexBarCore负责数据获取与解析Sources/CodexBar处理状态管理与UI交互Sources/CodexBarWidget提供WidgetKit扩展Sources/CodexBarCLI提供命令行接口以及Sources/CodexBarClaudeWatchdog确保Claude CLI会话的稳定性。异步数据采集机制多策略数据源整合CodexBar支持63种不同的AI服务提供商每种服务采用特定的数据采集策略。根据docs/providers.md文档主要采集方式包括Web爬取通过浏览器Cookie或WebView获取数据CLI接口通过RPC/PTY或提供商CLI工具获取OAuth认证使用OAuth API获取授权数据API令牌直接调用服务商API接口本地探测扫描本地会话文件获取使用数据// UsageStore.swift中的多源数据采集实现 func refresh(forceTokenUsage: Bool false) async { guard !self.isRefreshing else { return } self.isRefreshing true defer { self.isRefreshing false } await withTaskGroup(of: Void.self) { group in for provider in UsageProvider.allCases { group.addTask { await self.refreshProvider(provider) } group.addTask { await self.refreshStatus(provider) } } group.addTask { await self.refreshCreditsIfNeeded() } } }智能刷新策略系统采用自适应刷新策略根据用户交互模式和系统状态动态调整数据采集频率。如docs/refresh-loop.md所述刷新频率包括手动、1分钟、2分钟、5分钟、15分钟、30分钟以及自适应模式。图自适应刷新策略决策流程图根据系统状态动态调整采集频率数据处理与存储优化内存高效的状态管理UsageStore模块采用Swift 6严格并发模型通过Sendable状态和显式MainActor切换确保线程安全。数据存储在内存中避免频繁的磁盘I/O操作同时通过SettingsStore持久化用户配置。智能缓存机制Cookie和API凭证等敏感信息使用系统Keychain安全存储避免明文存储风险。Cookie导入支持多种浏览器包括Safari、Chrome/Chromium分支和Firefox确保跨浏览器兼容性。// Keychain安全存储实现 class KeychainCacheStore { private let service com.steipete.codexbar.cache func storeCookie(for account: String, cookie: Data, source: String) throws { let query: [String: Any] [ kSecClass as String: kSecClassGenericPassword, kSecAttrService as String: service, kSecAttrAccount as String: cookie.\(account), kSecValueData as String: cookie, kSecAttrAccessible as String: kSecAttrAccessibleAfterFirstUnlock ] // 安全存储实现 } }关键技术难点与解决方案多账户同步管理CodexBar支持同时监控多个AI服务账户如Claude的个人和工作账户。系统通过账户指纹识别和会话隔离确保数据准确性每个账户使用独立的WKWebsiteDataStore进行Web会话管理。图Claude多账户切换界面展示不同账户的资源使用状态实时数据一致性系统采用乐观并发控制机制通过isRefreshing标志防止重复刷新。当多个刷新请求同时到达时后续请求会被合并或延迟执行确保数据一致性同时避免资源浪费。错误恢复与降级策略当主要数据源不可用时系统自动降级到备用数据源。例如对于Codex服务采集策略按优先级顺序为OAuth API → CLI RPC → Web Dashboard。这种降级策略确保在部分服务故障时仍能提供基本功能。性能优化技术资源感知型调度AdaptiveRefreshPolicy模块根据系统状态智能调整刷新频率低电量模式或严重热压力30分钟刷新间隔最近5分钟内菜单交互2分钟刷新间隔最近5分钟内编码活动5分钟刷新间隔长时间闲置30分钟刷新间隔// AdaptiveRefreshPolicy.swift中的资源感知决策逻辑 func computeNextRefreshDelay(input: Input) - (delay: TimeInterval, reason: String) { if input.lowPowerModeEnabled || input.thermalState.isSeriousOrCritical { return (30 * 60, constrained) } if let lastMenuOpen input.lastMenuOpenAt, input.currentTime.timeIntervalSince(lastMenuOpen) 5 * 60 { return (2 * 60, recentInteraction) } // 更多条件判断... }本地会话扫描优化代理感知扫描通过LocalAgentSessionScanner每30秒检测本地编码活动但会严格控制资源使用最多处理64个代理进程最多解析128个Codex rollout元数据记录每个项目最多保留64个Claude会话候选共享512条目、深度1、150ms的元数据预算安全与隐私保护数据最小化原则CodexBar仅收集必要的使用统计数据不访问用户代码内容或敏感项目信息。所有数据在本地处理不上传到远程服务器。安全凭证管理API密钥和Cookie等敏感信息使用macOS Keychain安全存储支持自动和手动两种Cookie导入模式。手动模式允许用户直接从浏览器复制Cookie头部避免自动扫描的隐私顾虑。图系统Keychain权限设置界面确保敏感信息安全存储实际应用场景与技术集成开发环境集成开发团队可以将CodexBar集成到CI/CD流程中通过CLI接口获取使用统计数据# 获取当前使用情况 codexbar usage --provider codex --format json # 获取特定时间段的使用统计 codexbar usage --provider claude --days 7 --output csv成本监控仪表盘系统提供详细的成本分析仪表盘支持按订阅、模型和时间范围查看支出分布。如docs/screenshots/usage-spend-dashboard-maintainer-light.png所示界面清晰展示总支出、跟踪Token数量和订阅信息。图使用与支出仪表盘展示多服务成本分布和详细统计信息预警与通知系统当接近用量上限时系统会通过macOS通知中心发送预警。用户可以在偏好设置中配置预警阈值和通知方式确保及时了解资源使用情况。技术总结与扩展建议架构设计亮点模块化设计清晰的模块边界和职责分离便于维护和扩展异步处理充分利用Swift并发特性提高系统响应性多源适配支持多种数据采集策略提高系统鲁棒性资源感知智能调整资源使用优化系统性能扩展建议对于希望扩展CodexBar功能的开发者建议关注以下方向新增提供商支持参考现有提供商实现添加新的AI服务监控自定义数据源开发插件系统支持用户自定义数据采集逻辑高级分析功能添加趋势预测、异常检测等高级分析功能团队协作功能支持多用户数据聚合和团队级成本管理性能优化建议增量数据同步实现增量更新机制减少数据传输量智能缓存策略根据数据更新频率动态调整缓存时间并行处理优化进一步优化TaskGroup调度策略提高并发效率CodexBar通过创新的异步架构设计和多源数据采集策略为AI服务监控提供了专业级解决方案。其模块化设计、资源感知调度和安全隐私保护机制为同类工具的开发提供了宝贵的技术参考。无论是个人开发者还是企业团队都能通过CodexBar实现对AI资源使用的精细化管理优化成本支出并提高工作效率。要体验CodexBar的强大功能可以通过以下命令获取源码git clone https://gitcode.com/GitHub_Trending/co/CodexBar cd CodexBar make build【免费下载链接】CodexBarShow usage stats for OpenAI Codex and Claude Code, without having to login.项目地址: https://gitcode.com/GitHub_Trending/co/CodexBar创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

TMS320F2802x SCI与I2C寄存器深度解析与实战配置指南

TMS320F2802x SCI与I2C寄存器深度解析与实战配置指南

1. 项目概述与核心价值在嵌入式系统开发,尤其是工业控制、电机驱动和数字电源这些对实时性和可靠性要求极高的领域,TMS320F2802x系列DSP是当之无愧的主力芯片。在这些应用中,芯片与外部传感器、上位机、其他微控制器之间的数据交换是系统正常…

2026/10/15 18:31:54 阅读更多 →
5分钟掌握Jessibuca Pro:免费打造专业级Web直播播放器的终极指南

5分钟掌握Jessibuca Pro:免费打造专业级Web直播播放器的终极指南

5分钟掌握Jessibuca Pro:免费打造专业级Web直播播放器的终极指南 【免费下载链接】jessibuca Jessibuca是一款开源的纯H5直播流播放器 项目地址: https://gitcode.com/GitHub_Trending/je/jessibuca Jessibuca Pro是一款功能强大的开源Web直播播放器&#xf…

2026/9/30 7:28:32 阅读更多 →
AnimationController动画基础_Flutter在鸿蒙平台实现流畅UI动画

AnimationController动画基础_Flutter在鸿蒙平台实现流畅UI动画

作者:付文龙(红目香薰) 仓库地址:https://gitcode.com/feng8403000/FlutterfromBeginnertoAdvancedForHarmonyOS.git 联系邮箱:372699828qq.com 概述 Flutter动画系统是一个强大的动画框架,它基于Animati…

2026/9/29 8:21:10 阅读更多 →

最新新闻

Hadoop与Spark选型指南:从性能对比到落地实践

Hadoop与Spark选型指南:从性能对比到落地实践

1. 先聊两句:为什么总有人拿他俩做对比但凡接触过大数据,几乎都绕不开同一个问题:Hadoop和Spark到底选哪个?我在不少技术群里见过类似的争论,有人觉得Spark快,所以Spark一定更好;也有人觉得Hado…

2026/10/15 18:32:46 阅读更多 →
“如果没有Windows,英伟达根本不会诞生!”黄仁勋放话,全球最值钱公司因Windows才存在?

“如果没有Windows,英伟达根本不会诞生!”黄仁勋放话,全球最值钱公司因Windows才存在?

当整个科技行业都在把注意力投向云端大模型、AI 数据中心和 Agent 入口时,英伟达 CEO 黄仁勋却在微软的活动上,把英伟达的起点拨回了 1992 年:“英伟达是因为 Windows 才创立的……如果没有 Windows,英伟达根本不会诞生。”近日&a…

2026/10/15 18:32:46 阅读更多 →
仓颉 std.binary 包实战指南:大小端字节序列转换与字节序反转接口详解

仓颉 std.binary 包实战指南:大小端字节序列转换与字节序反转接口详解

人工智能AI 技能文档开发工具 【免费下载链接】DocAgent 项目地址: https://gitcode.com/Cangjie-SIG/DocAgent 点击查看 免费下载 std.binary 是仓颉标准库中专用于处理字节序(Endianness)的包,它把仓颉基础数据类型&#xff08…

2026/10/15 18:32:46 阅读更多 →
YADR dotfiles:一站式整合 Vim、Git、Zsh 插件与配置的开发者工作流

YADR dotfiles:一站式整合 Vim、Git、Zsh 插件与配置的开发者工作流

开发工具 【免费下载链接】dotfiles YADR - The best vim,git,zsh plugins and the cleanest vimrc youve ever seen 项目地址: https://gitcode.com/gh_mirrors/dotfil/dotfiles 点击查看 免费下载 导读 YADR(Yet Another Dotfile Repo)是…

2026/10/15 18:32:46 阅读更多 →
双酚类化合物潜在危害与个人减少暴露的5个方法

双酚类化合物潜在危害与个人减少暴露的5个方法

什么是双酚类化合物双酚类化合物是一类含有两个酚基团的有机化合物,核心结构是两个酚基团通过一个连接基团(常见的亚甲基基团)连接起来,其中广受关注的双酚A(Bisphenol A, BPA)化学结构是两个苯酚基团通过2…

2026/10/15 18:32:46 阅读更多 →
NLog 项目贡献指南:从 Issue 报告、多目标编译到 CI 构建的完整实战手册

NLog 项目贡献指南:从 Issue 报告、多目标编译到 CI 构建的完整实战手册

后端运维观测 【免费下载链接】NLog NLog - Flexible and Structured Logging for various .NET Platforms 项目地址: https://gitcode.com/gh_mirrors/nl/NLog 点击查看 免费下载 本文档是 NLog 开源仓库(.NET 平台灵活的结构化日志框架)中…

2026/10/15 18:31:45 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →