新功能 (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")
action 為 open / 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——放在
無人值守腳本最前面,讓它清楚地失敗,而非送出幽靈點擊。