加權候選評分

anchor_locator 以單一空間關係過濾、依距離排序,``ab_locator`` 競賽*整個策略*並依耗時挑選——兩者都不是把角色 匹配、模糊名稱相似度、對錨點的鄰近度與啟用狀態合成單一信心的*加權多訊號評分器*。當多個框都可能是目標時, 自我修復 / grounding 正需要這個。名稱相似度可注入(預設為專案的 fuzzy_ratio),因此不新增字串距離程式。

純標準函式庫,作用於純元素字典(role / name / x / y / width / height / 選用 enabled), 完全可單元測試。不匯入 PySide6

無頭 API

from je_auto_control import score_candidates, best_candidate

ranked = score_candidates(candidates, want_role="button", want_name="Save",
                          anchor=(960, 540))
for c in ranked:
    print(round(c.score, 3), c.element["name"], c.matched_on)

pick = best_candidate(candidates, want_role="button", want_name="Save")
if pick:
    click(*[pick.element["x"], pick.element["y"]])

score_candidates 回傳 ScoredCandidate 清單(element / score / matched_on 明細),最佳優先;每個 啟用的訊號貢獻 0..1,分數為其平均。want_role 在角色精確匹配時得 1、want_name 執行 name_similarity (預設 fuzzy_ratio)、anchor 加入鄰近項、prefer_enabled 獎勵啟用元素。best_candidate 回傳最佳者 (或 None)。

執行器命令

AC_score_candidates``(``candidates / want_role / want_name / anchor{count, scored})與 AC_best_candidate``(相同輸入 ``{found, best})。它們以 MCP 工具 ac_score_candidates / ac_best_candidate 以及 Script Builder 中 Native UI 分類下的命令提供。