AI 來寫規則,Ordo 來保證
AI 讓程式碼寫得越來越快,業務規則也散得越來越快。我們為什麼把 Ordo 做成業務規則層,以及 ordo impact 解決了什麼問題。
規則一直在程式碼裡
做業務系統的團隊都有一堆這樣的程式碼:會員打幾折,額度給多少,風險分超過多少就攔截。一開始是幾個 if,後來散到幾十個檔案裡。政策改一次,研發就改一次、發一次版。沒有人能一眼說清楚線上現在執行的是什麼規則。
現在又多了一個變數:越來越多的程式碼是 AI 寫的。寫得快,也寫得多。一條“滿 300 減 30,會員價不疊加”的需求,AI 幾秒鐘就能塞進結賬邏輯,測試也能順手補上。問題是下一次需求變了,它很可能在另一個地方再寫一遍。
把規則拿出來
Ordo 的做法是把這類判斷從業務程式碼裡拿出來,放進單獨的規則檔案。
- 規則是 JSON 或 YAML,和程式碼一起進 git,可以 review,可以 diff。
- 表示式語言有邊界:沒有迴圈,不能改外部狀態。人寫的規則和 AI 寫的規則都能被校驗。
- 金額用 decimal 精確計算。輸入欄位先宣告型別,傳錯了直接拒絕。
- 每個規則集帶自己的測試,
ordo test在本地和 CI 裡都能跑。
呼叫方只需要問一句“這筆訂單打幾折”。規則怎麼變,呼叫方的程式碼都不用動。
測試通過,還不夠
規則拿出來以後,下一個問題是:改了一個數字,到底影響了誰?
舉個例子。支付風控規則裡,風險分 70 以上直接攔截。風控同事想改成 65。改完跑測試,9 個用例全部通過。
ordo impact 會把這次改動和上一個提交放在一起跑:已有的測試用例、你提供的真實輸入,再加上在每個閾值兩側自動生成的探測值。這一次它跑了 130 個輸入,列出 5 個結果變了的,都是從“加一道驗證”變成了“直接攔截”。其中一個是老客戶在國外用新手機付 5000 元。
測試沒有覆蓋這種情況,impact 把它找了出來。如果這正是想要的效果,就把它補成一條測試;如果不是,在合併之前就能發現。
這個檢查對人和 AI 一樣有效。編碼 Agent 透過 ordo mcp 可以呼叫同樣的命令,改完規則先自己看一遍影響,再交給人 review。
從規則包開始
為了上手更快,我們寫了三個規則包:信貸審批、優惠疊加、支付風控評分。每個都是完整的 Ordo 專案,有規則、有測試,還有一份演示 impact 的 README。拷過去,把數字改成你們自己的政策就能用。
規則包就是普通的 Ordo 專案。我們希望以後有更多團隊把寫好的規則也這樣分享出來。我們會繼續把引擎做好,保證規則算得對。周邊的工具、規則包和整合,希望和大家一起來做。
試一下
npm i -g @ordo-engine/cli
git clone https://github.com/Ordo-Engine/Ordo
cd Ordo/examples/rule-packs/fraud-scoring
ordo test
然後把 rulesets/fraud-scoring.json 裡的 $score >= 70 改成 $score >= 65,執行 ordo impact fraud-scoring 看看。ordo impact 需要命令列 0.7.0 或更新的版本。