新功能 (2026-06-19) — 無人值守可靠性

三個針對無人值守與登入自動化的社群痛點修復:產生 2FA 驗證碼、操作原生 檔案對話框、以及拒絕在鎖定畫面上動作。每項都走完整五層(facade、 AC_* 執行器指令、MCP 工具、Script Builder),且完全 headless——外部 步驟皆為決定性或可注入,因此不需 2FA、真實對話框或鎖定工作階段即可單元 測試。

2FA 登入的 OTP / TOTP

2FA 會擋住自動登入。把 base32 secret 存好(最好放進 secrets store),在 流程中即時產生當前驗證碼:

from je_auto_control import generate_totp, verify_totp

code = generate_totp(secret)          # 當下的 6 碼 TOTP
type_text(code)

AC_otp_to_var 會把驗證碼寫進流程變數供下一步使用:

["AC_otp_to_var", {"secret": "JBSWY3DPEHPK3PXP", "var": "otp"}]
["AC_type_keyboard", {"keycode": "${otp}"}]

重用支撐遠端桌面驗證的 TOTP 引擎。執行器指令:AC_otp_to_var; MCP 工具:ac_generate_otp

原生檔案對話框

錄製器抓不到 OS 的檔案開啟/儲存/資料夾對話框,大家只好手刻「輸入路徑 + Enter」。handle_file_dialog 一次搞定:

from je_auto_control import handle_file_dialog

handle_file_dialog("C:/reports/out.csv", action="save")

actionopen / save / folder``(自動選預設對話框標題), 或傳明確的 ``window_title;它會等對話框、輸入路徑、按 confirm_key (預設 Enter)。等視窗/輸入/確認三步透過可注入的 FileDialogDriver。 執行器指令:AC_handle_file_dialog

鎖定工作階段守衛

無人值守在工作站鎖定或 RDP 斷線時會默默失敗——輸入會 no-op 或拋例外。 先檢查:

from je_auto_control import ensure_interactive_session, is_session_locked

ensure_interactive_session()          # 鎖定時拋例外
if is_session_locked():
    ...

Windows 上以開啟 input desktop 偵測(鎖定時會失敗);其他平台除非提供自訂 probe,否則回報「未鎖定」。執行器指令:AC_assert_session_active——放在 無人值守腳本最前面,讓它清楚地失敗,而非送出幽靈點擊。