完全指南:從界面配置到源碼實現)
MaaAssistantArknights 自動公招Auto Recruitment完全指南從界面配置到源碼實現【免費下載鏈接】MaaAssistantArknights《明日方舟》小助手全日常一鍵長草| A one-click tool for the daily tasks of Arknights, supporting all clients.項目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights本文圍繞 MaaAssistantArknightsMAA《明日方舟》小助手中的“自動公招”功能展開系統講解其功能定位、界面配置項含義、底層執行流程與參數接口。讀完本文你將能夠獨立配置自動公招任務包括加急許可、最大招募次數、3 星 Tag 傾向、保留指定詞條與數據上報并能結合源碼理解 MAA 是如何完成“識別標簽 → 組合計算 → 刷新/確認 → 數據上報”這一完整鏈路的。本文以 docs/en-us/manual/introduction/recruit.md 為核心依據并輔以 MaaCore 與 MaaWpfGui 的實際實現代碼進行印證。一、功能定位自動公招 ≠ 公招識別在使用該功能前必須明確一個關鍵區分自動公招Auto Recruitment與公招識別Recruitment Recognition是兩個完全不同的功能。自動公招作為任務隊列中的一個“日常任務”運行它會真實地在游戲內自動打開公開招募界面、識別標簽、計算組合、設置時限、選擇/確認標簽并完成招募甚至可以配合加急許可批量消耗招募券。公招識別屬于工具箱類功能僅對用戶手動提供或截取的公招界面圖片進行“計算器”式的識別與分析返回可能的干員組合與星級結論不會在游戲內進行任何點擊操作。從源碼也能印證這一點AutoRecruitTask::_run()中首先判斷is_calc_only_task()如果是純計算任務小工具中的公招計算則只返回recruit_calc_task().success的計算結果而不執行點擊確認見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。也就是說兩條功能路徑共用同一套標簽識別與組合計算邏輯只是“是否真正操作游戲”不同。二、自動公招的核心能力根據官方手冊docs/en-us/manual/introduction/recruit.md自動公招具備以下核心能力支持自動使用加急許可開啟后 MAA 會在識別到“開始招募”按鈕后調用RecruitNow流程立即結束當前招募對應recruit_now()調用的RecruitNow任務見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。支持設置單次任務最大招募次數默認值為 4見 src/MaaWpfGui/Configuration/Single/MaaTask/RecruitTask.cs主循環while (m_cur_times m_max_times)會嚴格按照該上限控制本輪招募次數。可配合加急許可一次性刷光招募券加急許可開啟后每次招募完成后會立即點擊RecruitNow再次開始下一輪直到招募次數用盡或招募券不足。關鍵標簽彈窗通知當識別到保留詞條preserved tags、5 星標簽或 6 星標簽時MAA 會彈出通知提示用戶。這在源碼中表現為回調消息RecruitSpecialTag識別到“高級資深干員/資深干員”時發出與RecruitPreservedTag識別到保留詞條時發出WPF 客戶端據此觸發 Toast 通知。公招數據自動上報刷新招募標簽時自動將標簽數據上報至企鵝物流數據統計Penguin Statistics與一圖流Yituliu兩個數據站點用于反哺社區大數據統計。三、界面配置與高級設置詳解3.1 基礎配置項自動使用加急許可Use Expedited Plans對應RecruitTask.UseExpedited配置項。開啟后 MAA 會在每次“開始招募”后立即點擊加急縮短單輪耗時。單輪最大招募次數Max Times對應MaxTimes默認 4。該值同時會作為ExpeditedTimes加急許可使用次數上限傳入任務參數見 src/MaaWpfGui/ViewModels/UserControl/TaskQueue/RecruitSettingsUserControlModel.cs。3.2 高級設置官方手冊將高級設置劃分為兩組核心語義自動確認 / 手動確認自動確認Auto confirm意味著 MAA 會自動選擇標簽并執行招募手動確認Manual confirm意味著 MAA 只完成識別與計算不自動選標簽、不確認招募。 在源碼層面這一語義由兩個參數共同實現select會去點擊標簽的干員等級列表與confirm會去點擊確認的干員等級列表。WPF 端序列化時勾選“自動確認 3 星”會向ConfirmList加入3勾選“自動確認 4 星”會同時向SelectList與ConfirmList加入45/6 星同理見 src/MaaWpfGui/ViewModels/UserControl/TaskQueue/RecruitSettingsUserControlModel.cs。3 星 Tag 時的 Tag 傾向Preference for 3★ Tags開啟后可在預設列表中挑選首選的 3 星 Tag如“近戰位”“遠程位”“先鋒干員”“費用回復”“輸出”“生存”等完整列表見 src/MaaWpfGui/ViewModels/UserControl/TaskQueue/RecruitSettingsUserControlModel.cs。這些首選 Tag 通過first_tags參數傳給核心層僅在組合星級為 3 星時參與標簽選擇見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。匹配采用“子串包含”方式只要識別出的 Tag 名稱包含首選 Tag 文本即命中。保留指定詞條Preserve selected tags開啟后可選擇一個或多個需要保留的 Tag默認預置“支援機械”見 src/MaaWpfGui/Configuration/Single/MaaTask/RecruitTask.cs。3.3 保留詞條的槽位跳過機制官方手冊特別強調當識別到任一保留詞條時MAA 會跳過當前公招槽位并保留該欄位不會繼續確認本次招募。源碼中這一邏輯的實現路徑非常清晰識別出的標簽集合與m_preserve_tags保留詞條列表做交集判斷命中則置has_skip_tag true并記錄preserved_tag見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。在recruit_calc_task的返回值中體現為preserved_tag_skip見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。recruit_one收到for_preserved_tags_skip后將該槽位加入m_force_skipped集合點擊“返回”按鈕不消耗招募次數地跳過該槽位見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。“高級資深干員”與“資深干員”兩個特殊標簽同樣受保留詞條邏輯約束若它們被列入保留詞條即使出現也不會自動確認否則會觸發RecruitSpecialTag通知見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。另外需要注意的是舊版參數skip_robot已在 6.11.0 版本中棄用請改用preserve_tags等價寫法為preserve_tags [支援機械]見 src/MaaCore/Task/Interface/RecruitTask.cpp。四、多 Tag 策略Extra Tags Mode界面中的“多 Tag 策略”對應核心參數extra_tags_mode可選值如下定義于 src/MaaWpfGui/Models/AsstTasks/AsstRecruitTask.cs取值語義實現邏輯0默認不選擇額外 TagDefault No Extra Tags只選擇最優組合所需的 Tag見get_select_tags中的NoExtra分支src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp1選滿至 3 個 TagSelect Extra Tags依次遍歷所有組合的 Tag 去重填充直到選中 3 個src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp2只選 4 星以上稀有 Tag能選多少選多少Select Extra Only Rare Tags僅當最優組合星級大于 3 時生效從高到低按組合整體取舍避免湊出低價值 Tagsrc/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp核心層在解析參數時會校驗取值合法性遇到未知值自動回退為NoExtra見 src/MaaCore/Task/Interface/RecruitTask.cpp。五、各星級招募時限Recruitment Time3 星 / 4 星可在界面中獨立設置小時與分鐘底層存儲為分鐘數取值范圍被限制在60 ~ 540即 1 小時到 9 小時并以 10 分鐘為粒度取整非法輸入會自動糾正見 src/MaaWpfGui/ViewModels/UserControl/TaskQueue/RecruitSettingsUserControlModel.cs。核心層默認值為 9 小時540 分鐘并用std::clamp限定在 60540 分鐘區間見 src/MaaCore/Task/Interface/RecruitTask.cpp。5 星 / 6 星招募時間固定為 9:00540 分鐘界面不可修改僅作為配置文件項存在見 src/MaaWpfGui/Models/AsstTasks/AsstRecruitTask.cs。設置時限時MAA 會依據目標時間計算“時/分遞減按鈕”的點擊次數先點小時遞減再點分鐘遞減見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp隨后通過check_timer()用 OCR 校驗倒計時文本是否符合預期防止因點擊失敗導致時限設置錯誤見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。六、3 星標簽的刷新策略無傾向 Tag 時刷新 3 星Refresh Level 3對應refresh參數。當識別結果中最優組合星級為 3 時MAA 會點擊刷新按鈕重新抽取標簽刷新存在上限refresh_limit 3分析重試上限為 5 次達到上限后停止本輪見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。無招聘許可仍然刷新Force Refresh對應force_refresh參數默認開啟。當招聘許可耗盡m_has_permit false時只要界面上還有刷新按鈕就繼續嘗試刷新否則提前結束任務見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。刷新觸發的嚴格條件是m_need_refresh m_has_refresh !has_special_tag !has_skip_tag final_combination.min_level 3——即必須沒有 5 星以上特殊標簽、沒有保留詞條、且最優組合僅為 3 星見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。七、數據上報企鵝物流與一圖流官方手冊說明公招刷新時會自動將公招標簽數據上傳至企鵝物流與一圖流兩個數據統計站點。從源碼看該行為由upload_result()統一分發見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp企鵝物流上報僅對“干凈槽位”本任務開始后尚未上報過的槽位執行避免重復上報污染數據m_dirty_slots機制見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。請求體包含server、stageId recruit及每個標簽作為NORMAL_DROP的掉落條目并攜帶authorization: PenguinID id請求頭與User-Agent: MaaAssistantArknights/版本見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。一圖流上報請求體包含server、uuid一圖流回報 ID以及完整的組合計算結果result、level等通過ReportDataTask發送見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。服務器參數server默認CN可選CN / US / JP / KR直接影響上報數據歸屬的服務器見 src/MaaWpfGui/Models/AsstTasks/AsstRecruitTask.cs。八、源碼級執行流程自動公招的完整執行鏈路由 RecruitTask.cpp接口層與 AutoRecruitTask.cpp實現層構成。接口層負責解析 JSON 參數并裝配到AutoRecruitTask含重試次數 3見 src/MaaCore/Task/Interface/RecruitTask.cpp實現層按以下流程運行進入公招界面執行RecruitBegin任務recruit_begin()。領取已完成招募hire_all()用MultiMatcher查找藍色“招聘”按鈕并逐一領取同時將這些槽位標記為“干凈槽位”m_dirty_slots.erase(...)為后續上報做準備見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。循環處理每個可招募槽位通過 OCR 任務StartRecruit識別“開始招募”按鈕start_recruit_analyze跳過已強制跳過的槽位進入recruit_one見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。單槽位處理recruit_one見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp點擊“開始招募”打開槽位調用recruit_calc_task完成識別與計算按結果分流保留詞條/特殊標簽 →skipped記入m_force_skipped不消耗次數識別失敗 →failed計數m_slot_fail連續失敗 3 次終止本輪正常 → 校驗時限后確認招募。確認與加急confirm()執行RecruitConfirm重試上限 5 次見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp開啟加急時每次確認后執行recruit_now()RecruitNow任務立即開下一輪并處理“加急許可耗盡”“誤觸右下角槽位”等邊界情況見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。循環結束條件達到m_max_times、無可用開始按鈕、招募許可耗盡且不允許繼續刷新、或槽位失敗超限任一滿足即結束。8.1 標簽組合計算recruit_calcrecruit_calc::get_all_combs()實現了全組合枚舉src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp對每個標簽求單標簽組合再兩兩、三三組合得到所有可行組合每個組合記錄可覆蓋干員列表opers、最低星級min_level、最高星級max_level與平均星級avg_level若組合中不含“高級資深干員”標簽則剔除其中的 6 星干員防止無鎖船詞條卻點出 6 星預期。排序策略按優先級依次為含特殊標簽的組合優先 → 最低星級高者優先 → 最高星級高者優先 → 平均星級高者優先 → Tag 數量少者優先見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。最終取排序后的第一個組合作為最優解并將完整結果列表通過RecruitResult回調消息輸出含每個組合的標簽、干員與星級。8.2 圖像識別輸入標簽識別由 RecruitImageAnalyzer 完成它一次性輸出四類信息get_tags_result()識別的中文標簽文本列表get_hour_decrement_rect()/get_minute_decrement_rect()時限設置中的“小時/分鐘遞減按鈕”位置get_refresh_rect()刷新按鈕位置get_permit_rect()招聘許可區域用于判斷許可是否耗盡。該分析器不允許外部設置 ROI標簽數必須等于配置中的標準數量RecruitConfig::CorrectNumberOfTags才會繼續處理見 src/MaaCore/Task/Miscellaneous/AutoRecruitTask.cpp。九、接口參數速查AsstRecruitTask對希望以編程方式集成該功能的開發者WPF 端通過 AsstRecruitTask.cs 序列化為如下 JSON 參數Serialize()輸出見該文件 L143-L186{ refresh: false, force_refresh: true, select: [4, 5, 6], confirm: [3, 4, 5, 6], times: 4, set_time: true, expedite: true, expedite_times: 4, extra_tags_mode: 0, first_tags: [], preserve_tags: [支援機械], recruitment_time: { 3: 540, 4: 540, 5: 540, 6: 540 }, report_to_penguin: true, penguin_id: , report_to_yituliu: true, yituliu_id: , server: CN }關鍵參數說明select/confirm必選整數數組。select表示會點擊標簽的星級confirm表示會點擊確認的星級若僅做公招計算可傳空數組。times招募次數默認00 表示不限制/僅計算。set_time是否設置招募時限默認true。expedite是否使用加急許可默認false開啟時需一并提供expedite_times。preserve_tags保留詞條列表命中即跳過槽位。first_tags3 星首選 Tag 列表。recruitment_time按星級區分的時限分鐘。report_to_penguin/report_to_yituliu是否上報兩個數據站點開啟時才需要對應的penguin_id/yituliu_id。server服務器標識可選CN / US / JP / KR默認CN。參數解析的權威實現位于 src/MaaCore/Task/Interface/RecruitTask.cpp其嚴格要求select與confirm必須存在且為數字數組否則任務參數設置失敗。十、使用建議與注意事項保留詞條與手動確認組合使用將“支援機械”等稀有詞條加入保留列表MAA 會跳過對應槽位并彈窗提醒適合不想錯過特殊詞條的玩家若希望完全由自己決定可同時關閉 3/4/5 星的自動確認。加急許可與次數上限配合設置合理的times上限并開啟加急可在一次任務中快速清空招募券同時避免誤用過多加急許可。數據上報隱私企鵝物流與一圖流上報默認可在設置中開關上報會攜帶server、標簽及回報 ID無需回報 ID 也能匿名上報但建議按需填寫以獲得更完整的個人統計。保留詞條參數遷移舊參數skip_robot已棄用若你基于舊版接口開發請遷移為preserve_tags: [支援機械]。與公招識別的區別如需“只看結果不動游戲”請使用工具箱中的公招識別功能而非自動公招任務。綜上MAA 的自動公招是一個“視覺識別 組合算法 自動化操作 數據上報”四位一體的完整功能其核心價值在于將繁瑣的公開招募日常完全托管同時通過保留詞條與通知機制把關鍵決策權保留給玩家。【免費下載鏈接】MaaAssistantArknights《明日方舟》小助手全日常一鍵長草| A one-click tool for the daily tasks of Arknights, supporting all clients.項目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考