From 704f8a4e5dc4e08305c43769d53824f9ccb9d05e Mon Sep 17 00:00:00 2001 From: Codex Date: Wed, 24 Jun 2026 11:03:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=BC=BA=20Codex=20=E7=94=A8=E9=87=8F?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E9=87=8D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/pc-metrics/push-metrics-ble.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/pc-metrics/push-metrics-ble.py b/tools/pc-metrics/push-metrics-ble.py index 4ae9192..b29bc64 100644 --- a/tools/pc-metrics/push-metrics-ble.py +++ b/tools/pc-metrics/push-metrics-ble.py @@ -548,12 +548,13 @@ class CodexRateLimitReader: if now < self.next_refresh: return self.cached - self.next_refresh = now + self.refresh_seconds if not self._ensure_started(): + self.next_refresh = now + min(10.0, self.refresh_seconds) return self.cached request_id = self._send("account/rateLimits/read") if request_id is None: + self.next_refresh = now + min(10.0, self.refresh_seconds) return self.cached message = self._wait_for(request_id, 8.0) @@ -561,8 +562,10 @@ class CodexRateLimitReader: rate_limits = result.get("rateLimits") if isinstance(result, dict) else None if not isinstance(rate_limits, dict): self._stop() + self.next_refresh = now + min(10.0, self.refresh_seconds) return self.cached + self.next_refresh = now + self.refresh_seconds primary = rate_limits.get("primary") or {} secondary = rate_limits.get("secondary") or {} reset_credits = result.get("rateLimitResetCredits") or {} @@ -624,20 +627,23 @@ class CodexRateLimitReader: if now < self.next_usage_refresh: return self.usage_cached - self.next_usage_refresh = now + self.usage_refresh_seconds if not self._ensure_started(): + self.next_usage_refresh = now + min(15.0, self.usage_refresh_seconds) return self.usage_cached request_id = self._send("account/usage/read") if request_id is None: + self.next_usage_refresh = now + min(15.0, self.usage_refresh_seconds) return self.usage_cached message = self._wait_for(request_id, 8.0) result = message.get("result") if message else None buckets = result.get("dailyUsageBuckets") if isinstance(result, dict) else None if not isinstance(buckets, list) or not buckets: + self.next_usage_refresh = now + min(15.0, self.usage_refresh_seconds) return self.usage_cached + self.next_usage_refresh = now + self.usage_refresh_seconds self.usage_cached = self._daily_bars_from_buckets(buckets) return self.usage_cached