Open source
English機械的那一層不歸模型管
語言模型讀完一張反應牌,會告訴你可以在對決結束前插進去加戰力——因為那句話讀起來很順,但它不是一個合法的動作。本站判斷一副牌能不能打,靠的不是更會講話的模型,而是把機械的那一層交給程式:時機與權限的核心有 21 個可執行案例,效果 IR 涵蓋 12 種操作,碰到沒有建模的卡牌行為就直接回報「未支援」。模型只在這個被界定過的空間裡推論。
這套東西以 AGPL-3.0 授權公開在 GitHub 上,任何人都能取用、執行它的驗證套件、或指出它哪裡錯了。
在 GitHub 上查看 ↗程式擁有的部分
不是把規則翻譯成一段提示詞讓模型讀,而是把規則執行起來,讓模型有一個講不過去的空間。三個部分,每一個都只宣稱它的驗證套件真的跑得過的東西:
時機與權限
四種回合狀態、迅捷與反應的時機、優先權與焦點、連鎖上待處理與已定案的項目。21 個可執行案例,每一個都附上它所依據的官方條號。
類型化效果 IR
12 種操作,加上序列、目標、連動效果、致死清理與觸發發射。直譯器裡沒有任何以卡名寫死的分支:一張卡要嘛能用這些操作組出來,要嘛就是沒有被建模,而後者會講出來。
原子橋接
一個時機判斷與它所授權的效果,要嘛一起提交、要嘛一起回滾。不存在「時機通過了但效果只做了一半」的狀態。
完整合法性仍然由真人確認。合法動作的列舉是規劃中的版本,卡在驗證覆蓋率過不過得了,而不是卡在要先蒐集多少對局紀錄;自動規則裁決在 Riot 現行政策下本來也還沒被核准。
說不知道,也是一種結果
引擎的每一份結果都透過同一種封裝交給使用它的體系,共有五種結局:已支援、不合法、未支援、需要決定、輸入無效。它們彼此不可互換,而且正是後面三種讓前面兩種有意義。
「未支援」的意思是這個元件對這件事沒有語義,它不會現編一個——使用它的體系必須改用有出處的說明並降低信心,而不是把缺口補平。「需要決定」代表要有人先做出選擇引擎才能往下走,封裝會把選項列出來,但不替任何人排序。「輸入無效」是資料有問題,不是遊戲裁定。每一份封裝也都自己帶著涵蓋範圍的上限,並在檔案裡寫明它是非官方的、不改變任何遊戲狀態。
四個體系,權限刻意不同
組牌教練分析一副牌並教它怎麼打,不發布勝率或 Tier。規則諮詢用帶日期的來源與明講的假設解釋互動,不取代主審。二號玩家代理在實體對練時提出決策,隱藏資訊、合法性、結算與每一次狀態更新都由真人掌握。第四個體系對局分析規格已經寫完,但在它的啟用條件全部通過之前刻意不接上路由。
規則諮詢與二號玩家代理目前都已經接上這套封裝,各自通過六項條件:產物接受它、執行器產得出來、驗證器會拒絕超額宣稱、介面呈現得出每一種結局、回歸測試同時涵蓋支援與棄權的案例、消費之後權限邊界依然成立。組牌教練有卡牌行為涵蓋率的契約,但還沒有接上封裝。
在二號玩家代理裡,引擎結果改變的只有一件事:真人在確認之前要自己查核多少。引擎沒能放行的結果會提高這個負擔;完全不附引擎檢查也會提高,因為那代表什麼都沒有被縮小。就算引擎明確判定不合法,真人仍然可以依官方來源覆核它,前提是把查了什麼寫下來。
推導撐不住的地方
核心之上還有一層是推導出來的,不是執行出來的:組牌方法論、對戰操作,以及 46 位傳奇的完整名冊——每位一則獨立寫,從卡面文字與遊戲機制推導,而不是從別人的攻略摘要而來。這讓它容易重新生成,也讓它本身只是假說,所以 46 則全部拿去對照真實的成熟打法。這份稽核做在規則核心存在之前,當時整個專案就只有這一層。
結果是 46 則裡只有 3 則完全不用改;其餘至少各有一處要修,最常見的是漏掉了實戰上真正的預設英雄,或是原型標籤跟玩家實際使用的說法對不上。
那份紀錄裡最有用的一列不是傳奇,而是禁卡替換流程的一次失敗。它的做法是先讀被禁的卡在那副牌裡做什麼工作,再回合法卡池找做同一件工作的卡。一副易大師牌組的力量方尖碑被禁,流程給出的替代是星芒峰——同領域、同樣給符文、完全合法。漏掉的是條件:力量方尖碑無條件發給每一位玩家,星芒峰要先據守那個戰場才給,而那副牌前期刻意不去搶戰場,換上去等於資助對手。同一張星芒峰放進另一副結構相反的易大師牌組裡是對的。抓到這件事的是一位台灣玩家的實戰回饋,不是內部檢查。
稽核抽取流程本身,還發現只要兩張英雄印刷共用同一個領域,程式就會默默漏掉第三張——這個問題影響了至少 8 位傳奇,其中只有 3 位是在一般研究時浮出來的,另外 5 位要把抽取程式拿去對照卡片資料才看得到。兩處都改在流程本身,不只改那幾則:錯誤重複出現時,出問題的是方法。
46 則的結論形狀一致:從卡面推導站得住,但問題一旦變成「這副牌實際上在做什麼」或「現在這個動作機械上到底合不合法」,推導就撐不住了。上面那個規則核心,就是這份稽核的結論直接換來的——機械的那一段不能靠推導,也不能靠讀起來合理,只能真的把規則執行起來。
它不宣稱的部分
沒有完整的卡牌效果引擎、沒有完整狀態機、沒有自我對弈資料、也沒有訓練出來的策略模型。核心涵蓋的是時機與權限加上一組有界的效果,其餘一律回報「未支援」而不是猜。會過期的東西(禁卡表、勘誤)一律走即時查詢,不寫死進提示詞;附帶的卡片資料是 2026-08-16 的時間點快照,不保證能從零重現。
四個體系全部落在賽前準備這一側:構築、理解、練習、複盤,沒有一個會替你打牌。所以一套權威的規則引擎——包括官方之後真的推出數位客戶端——會讓這些更有用,而不是取代它們:那種引擎服務的是對局,這裡服務的是準備。它為研究與教育用途而做,在賽事進行中使用違反賽事規則。
與本站的關係
本站是它的實際使用者,也是它的第一個生產環境:這套系統是本站評估牌組、判斷牌表能不能玩的依據,牌組指南裡 7 篇的打法分析就是依它生成的——每一篇都掛著標明未經真人覆核的徽章,牌表本身仍是海外來源;其餘是海外攻略的翻譯與站內人工原創,徽章上寫得清楚。全站的標註規則寫在AI 方法論。反過來,寫攻略時撞到的問題也會回頭修正它。
repo 裡另附三個免安裝的示範頁(各對應一個已接上路由的體系)與一支 Rift Atlas 牌組連結的轉接器;本站的牌組頁也能一鍵複製 Rift Atlas 匯入格式,直接把牌拿去線上練。
為什麼是這種「讀卡面文字、給引用出處」的 agent 形式,不是訓練出來的強化學習模型——這篇沒有要重複交代,MTG 與遊戲王那邊做過的 AI 研究、跟這個選擇怎麼推出來的,寫在另一篇專欄裡。
授權為 AGPL-3.0。它與 Riot Games 無關,本站亦未受 Riot Games 認可或贊助。
github.com/Zaious/riftbound-chronicle ↗