依觀測時長自適應逾時
寫死的等待是長年的不穩定來源:太短則慢機器與 UI 競速;太長則每次失敗都得付滿整個逾時。可長久的修法是
從某步驟*實際*花了多久來*學習*逾時。adaptive_timeout 把一組觀測時長轉為穩健的逾時——取高百分位
(慢但真實的情況)乘上安全 factor,再夾到合理的 [min_s, max_s] 區間。
recommend_timeout()——餵給等待或GateConfig的單一數值。timeout_stats()——同上,但額外暴露百分位與夾值旗標以利記錄 / 調校。
兩者皆為純函式並重用 stats.percentile();沒有樣本時退回 default_s``(或 ``min_s)。
不匯入 PySide6。
無頭 API
from je_auto_control import recommend_timeout, timeout_stats
# 對話框歷來出現所花的秒數:
seen = [0.8, 1.1, 0.9, 3.2, 1.0, 1.3]
recommend_timeout(seen) # 約 p95 * 1.5,夾到 [1, 60]
recommend_timeout(seen, percentile_q=99.0, factor=2.0, max_s=30.0)
timeout_stats(seen)
# {'n': 6, 'p50': 1.05, 'p_high': 2.7..., 'percentile_q': 95.0,
# 'recommended': 4.1..., 'floored': False, 'capped': False}
把建議值當作下一個 wait_for_* / actionability 閘的 timeout_s,並隨樣本增長重新計算。
尚無樣本時,以 default_s 作為冷啟動值。
執行器指令
AC_adaptive_timeout``(``durations 加上 percentile_q / factor /
min_s / max_s → {timeout_s})與 AC_timeout_stats``(同樣輸入 →
``{n, p50, p_high, percentile_q, recommended, floored, capped})。durations
接受 JSON 清單。皆以對應的唯讀 ac_* MCP 工具及 Script Builder 指令(位於 Flow 分類下)形式提供。