Merge pull request #195 from AAEE86/keys

feat(pool): 新增账号配额展示并清理 Codex 旧限额字段
This commit is contained in:
fawney19
2026-03-01 00:59:49 +08:00
committed by GitHub
11 changed files with 349 additions and 68 deletions

View File

@@ -25,7 +25,6 @@ _COMPARE_IGNORE_FIELDS = frozenset(
"updated_at",
"primary_reset_seconds",
"secondary_reset_seconds",
"code_review_reset_seconds",
}
)
_CACHE_TTL_SECONDS = 30.0

View File

@@ -202,12 +202,10 @@ def parse_codex_wham_usage_response(data: dict[str, Any]) -> dict[str, Any] | No
Free 账号:
- rate_limit.primary_window: 周限额
- code_review_rate_limit.primary_window: 代码审查周限额
Team/Plus/Enterprise 账号:
- rate_limit.primary_window: 5H 限额
- rate_limit.secondary_window: 周限额
- code_review_rate_limit.primary_window: 代码审查周限额
"""
if data is None:
return None
@@ -261,18 +259,6 @@ def parse_codex_wham_usage_response(data: dict[str, Any]) -> dict[str, Any] | No
target_prefix="primary",
)
# 解析 code_review_rate_limit (代码审查限额)
code_review_limit = _as_dict(data.get("code_review_rate_limit"), "code_review_rate_limit")
code_review_primary = _as_dict(
code_review_limit.get("primary_window"), "code_review_rate_limit.primary_window"
)
_write_window(
result,
source=code_review_primary,
source_field="code_review_rate_limit.primary_window",
target_prefix="code_review",
)
# 解析 credits
credits = _as_dict(data.get("credits"), "credits")
has_credits = credits.get("has_credits")
@@ -333,16 +319,6 @@ def parse_codex_usage_headers(headers: Mapping[str, Any] | None) -> dict[str, An
window_minutes_key="x-codex-secondary-window-minutes",
source_field="headers.secondary_window",
)
# 兼容未来可能出现的 code review header当前反代可缺失
code_review_primary = _read_header_window(
headers=normalized_headers,
used_percent_key="x-codex-code-review-primary-used-percent",
reset_seconds_key="x-codex-code-review-primary-reset-after-seconds",
reset_at_key="x-codex-code-review-primary-reset-at",
window_minutes_key="x-codex-code-review-primary-window-minutes",
source_field="headers.code_review.primary_window",
)
# 与 wham/usage 解析保持一致:
# - metadata.primary_* 统一表示周限额
# - metadata.secondary_* 统一表示 5H 限额
@@ -368,13 +344,6 @@ def parse_codex_usage_headers(headers: Mapping[str, Any] | None) -> dict[str, An
target_prefix="primary",
)
_write_window(
result,
source=code_review_primary,
source_field="headers.code_review.primary_window",
target_prefix="code_review",
)
# 当前窗口挤占占比(有值才记录)
primary_over_secondary_limit = _coerce_optional_float(
normalized_headers.get("x-codex-primary-over-secondary-limit-percent"),

View File

@@ -33,7 +33,7 @@ def is_key_quota_exhausted(
Requirements:
- Kiro: account-level quota. When remaining == 0, skip this key; allow again when remaining > 0.
- Codex: only consider weekly quota + 5H quota (ignore code review quota).
- Codex: only consider weekly quota + 5H quota.
If either remaining is 0%, skip this key.
- Antigravity: quota is per-model; do not disable the account.
When the requested model's quota is 0%, skip this key.