返回博客
产品 AI 规则引擎

AI 来写规则,Ordo 来保证

AI 让代码写得越来越快,业务规则也散得越来越快。我们为什么把 Ordo 做成业务规则层,以及 ordo impact 解决了什么问题。

Pama Lee ·

规则一直在代码里

做业务系统的团队都有一堆这样的代码:会员打几折,额度给多少,风险分超过多少就拦截。一开始是几个 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 或更新的版本。

有问题或想法,欢迎到 GitHub 或 Discord 找我们。