# 傳說對決首抽程式：Mac mini 移機交接說明

## 要複製到 Mac mini 的檔案

必要：

1. `automate-aov-reroll.zip`：完整 Codex skill，內含程式、workflow、OCR helper、畫面模板、普通獎基準圖及流程文件。
2. 傳說對決 XAPK：目前使用的 `Garena...1.63.1.4_APKPure.xapk`。
3. 本文件。

建議一併複製：

- `AOV連續首抽使用說明.md`
- `AOV連續首抽驗證報告.md`
- 若要讓新電腦上的 Codex 研究舊錯誤，可額外複製舊電腦的 `aov-reroll-batch/logs/`、失敗輪次資料夾及 archive；只能當診斷資料，不能當新電腦的執行狀態。

不要搬移或沿用：

- `active_rounds.json`
- `active_round.json`
- `batch.lock`
- 舊電腦的 BlueStacks Engine/訪客帳號資料
- 舊電腦的 Python venv
- 舊的 `state.json`、`rounds.jsonl`、`events.jsonl`（若希望 Mac mini 從第 1 輪重新統計）

跨機沿用 active state 可能使主管把舊電腦的引擎名稱誤認為待恢復輪次。Mac mini 應使用全新的空白 batch 目錄。

## Mac mini 必要環境

- Apple Silicon Mac。Intel Mac 不適用目前的 BlueStacks Air 路徑。
- BlueStacks Air 與多開管理器。
- `adb`，建議 Homebrew Android Platform Tools。
- Xcode Command Line Tools，供 Apple Vision OCR helper 編譯。
- Python 3 venv，安裝 `numpy` 與 `opencv-python-headless`。
- 建議至少 16 GB RAM；第一次只跑單開一輪驗證，再考慮雙開。

不要直接沿用舊 launcher，因為其中的使用者名稱、工作目錄、Python、XAPK 和輸出路徑都寫死為舊 Mac 的位置。請讓新電腦的 Codex 按 Mac mini 的實際路徑重新產生 launcher。

## 在 Mac mini 上交給 Codex 的第一段提示詞

把 `automate-aov-reroll.zip`、XAPK 和本文件放在同一資料夾，開啟新的 Codex task，貼上以下文字：

> 這是從另一台 Mac 移來的「傳說對決遊客帳號首抽自動化」。聊天記錄不在這台電腦，但附件 `automate-aov-reroll.zip` 是最新交接版本。請先完整解壓並安裝為 `~/.codex/skills/automate-aov-reroll`，然後完整閱讀 `SKILL.md` 與 `references/recording-notes.md`，再檢查 `references/workflow.json`、`scripts/aov_runner.py`、`scripts/aov_batch.py` 和 `scripts/jackpot_detector.py`。不要從舊電腦匯入 `active_rounds.json`、batch lock 或 BlueStacks Engine。請檢查這台 Mac 的 Apple Silicon、BlueStacks Air、ADB、Xcode Command Line Tools、Python 套件、磁碟與記憶體，依本機實際路徑建立新的 workspace、空白 batch 目錄及本機 launcher。先執行 Python compile、JSON/workflow 引用驗證與一輪單開 `--max-rounds 1`；確認能建立新引擎、安裝 XAPK、完成流程、判獎及安全刪除後，再建立雙開 launcher。不要擅自簡化或重新設計既有遊戲流程；遇到錯誤先看該輪 log、run.json、progress.json 和診斷截圖。

## 另一台 Codex 必須理解的核心背景

- 輸入全部使用各引擎自己的 ADB framebuffer `2560x1440`，不依賴 Mac 螢幕座標或視窗大小。
- 每輪建立全新 BlueStacks 引擎並安裝 XAPK，不能複製已有訪客帳號的引擎。
- 新手英雄選擇不操作，等待系統自動選角；新手對局本身掛機。
- 結算頁數可變；要持續處理「請點擊繼續」，直到看到「返回大廳」。
- 新手對局後必須先完成「新手福利中心」強制導引，再去活動中心；不能把大廳常駐的「活動中心」誤判為新手福利已完成。
- 活動目標是 `7/25至尊次元突破`；列表位置可變，使用 OCR 與有界滾動。
- 共抽 41 次：免費單抽、三次十連抽，以及系統追加十抽。
- 抽獎中途的「這是送給您的禮物」彈窗要先留存事件截圖、按右側確定，再回到尚未完成的抽獎次數。
- 中獎為兩個條件的 OR：第一張活動領獎截圖出現普通三項以外的物品名稱，或第三張主頁左上稀有獎圖與普通頭像／下載 placeholder 均明顯不同。
- 普通或失敗輪次刪除引擎，但永遠保留截圖、decision 與 log；中獎候選引擎關閉並保留。
- BlueStacks 偶爾會卡在 Store、直屏或黑屏；目前 runner 會保存證據、只重啟該輪精確引擎一次並重試已安裝遊戲。仍失敗才交由 batch 刪除並建立下一輪。
- 雙開由單一主管管理，最多兩個 worker；生命週期操作序列化，遊戲與 ADB/OCR 可平行。

## 建議驗收順序

1. 新 batch 目錄確認不存在任何舊 active state。
2. 單開 `--max-rounds 1`。
3. 核對 dashboard、逐輪 log、run.json、三張 checkpoint 和 decision.json。
4. 確認普通結果的引擎確實刪除，截圖仍保留。
5. 再以 3 vCPU／3072 MB 啟用雙開；第二台錯開 120 秒。
6. 前 3～6 輪人工留意配對準備、橫屏、福利中心、活動列表及抽獎中斷彈窗。

