新功能 (2026-06-19) — Plugin SDK

第三方 pip 套件現在可透過 setuptools **entry point**(je_auto_control.commands 群組)宣告式地註冊新的 AC_* 執行器指令——把單體變成生態系(pytest / Playwright 的成長方式)。AutoControl 於執行期探索它們;探索到的指令立即可 用於 JSON action 檔、socket server、排程器與 MCP。純標準庫 (importlib.metadata);走完整五層。

撰寫外掛

外掛套件提供一個 entry point,其目標為回傳 {command_name: handler} 對應的工廠函式:

# 外掛的 pyproject.toml
[project.entry-points."je_auto_control.commands"]
my_pack = "my_pack.commands:provide"

# my_pack/commands.py
def provide():
    return {"AC_my_command": lambda **kw: {"ok": True}}

探索與載入

from je_auto_control import discover_plugins, load_plugins

discover_plugins()      # 來自所有外掛的 {command_name: handler}
load_plugins()          # 探索 + 註冊到執行器

壞掉的外掛會被略過(記錄),不致命。對應 AC_list_plugins``(探索名稱) / ``AC_load_plugins``(探索 + 註冊)以及 ``ac_list_plugins / ac_load_plugins。entry-point 來源可注入,因此探索能在不安裝真實外掛 的情況下單元測試。這是既有執行期路徑載入器的宣告式、具命名空間的對應物。