@@ -831,7 +831,28 @@ def _format_status_reset_time(self, value: object) -> str:
831831 parsed = datetime .fromtimestamp (value , tz = timezone .utc )
832832 except (OverflowError , OSError , ValueError ):
833833 return "未知"
834- return parsed .astimezone ().strftime ("%Y-%m-%d %H:%M:%S" )
834+ return parsed .astimezone ().strftime ("%m-%d %H:%M:%S" )
835+
836+ def _format_status_bucket_label (self , bucket : object , fallback : str ) -> str :
837+ if not isinstance (bucket , dict ):
838+ return fallback
839+ window_minutes = bucket .get ("windowDurationMins" )
840+ if window_minutes == 300 :
841+ return "5小时"
842+ if window_minutes == 10080 :
843+ return "1周"
844+ if isinstance (window_minutes , int ) and window_minutes > 0 :
845+ if window_minutes % (60 * 24 * 7 ) == 0 :
846+ weeks = window_minutes // (60 * 24 * 7 )
847+ return f"{ weeks } 周"
848+ if window_minutes % (60 * 24 ) == 0 :
849+ days = window_minutes // (60 * 24 )
850+ return f"{ days } 天"
851+ if window_minutes % 60 == 0 :
852+ hours = window_minutes // 60
853+ return f"{ hours } 小时"
854+ return f"{ window_minutes } 分钟"
855+ return fallback
835856
836857 def _is_noise_history_text (self , text : str ) -> bool :
837858 lowered = text .strip ().lower ()
@@ -2132,9 +2153,10 @@ def _format_status_context_line(self, session: ChatSession | None) -> str:
21322153
21332154 def _format_status_rate_limit_bucket (
21342155 self ,
2135- label : str ,
21362156 bucket : object ,
2157+ fallback_label : str ,
21372158 ) -> list [str ]:
2159+ label = self ._format_status_bucket_label (bucket , fallback_label )
21382160 if not isinstance (bucket , dict ):
21392161 return [f"{ label } :暂不可用" , f"{ label } 刷新时间:未知" ]
21402162
@@ -2145,8 +2167,8 @@ def _format_status_rate_limit_bucket(
21452167 used_percent = max (0 , min (used_percent , 100 ))
21462168 remaining_percent = max (0 , 100 - used_percent )
21472169 return [
2148- f"{ label } :{ used_percent } % 已用, { remaining_percent } % 剩余 " ,
2149- f"{ label } 刷新时间:{ self ._format_status_reset_time (bucket .get ('resetsAt' ))} " ,
2170+ f"{ label } :剩余 { remaining_percent } %" ,
2171+ f"{ label } 刷新时间:{ self ._format_status_reset_time (bucket .get ('resetsAt' ))} " ,
21502172 ]
21512173
21522174 async def render_status_panel (
@@ -2164,10 +2186,16 @@ async def render_status_panel(
21642186 raise RuntimeError ("当前环境未启用 Codex app-server 额度查询。" )
21652187 limits = await runner .read_rate_limits ()
21662188 lines .extend (
2167- self ._format_status_rate_limit_bucket ("额度 1" , limits .get ("primary" ))
2189+ self ._format_status_rate_limit_bucket (
2190+ limits .get ("primary" ),
2191+ "额度 1" ,
2192+ )
21682193 )
21692194 lines .extend (
2170- self ._format_status_rate_limit_bucket ("额度 2" , limits .get ("secondary" ))
2195+ self ._format_status_rate_limit_bucket (
2196+ limits .get ("secondary" ),
2197+ "额度 2" ,
2198+ )
21712199 )
21722200 except Exception as exc :
21732201 lines .extend (["额度状态:暂不可用" , str (exc ) or "未知错误。" ])
0 commit comments