项目
Regmark工作代号
让 AI 购物代理读到的商品事实,和结账时实际收的对得上。
这是什么
Regmark 是一个开源的命令行测试工具。一家店会从好几个出口向机器报价:商品页、结构化数据、商品 feed、代理协议端点。Regmark 把这些出口上的价格、库存、运费逐项拿去和结账实算的结果比对,对不上就报出来,并且可以让 CI 失败。
它要回答三个问题:
- 各处说的是不是同一个数? 这是套准,也是首期的重点。
- 照着读到的信息去买,买不买得成? 这是探店,让一个代理真的走一遍。
- 商品内容里有没有会带偏代理的东西? 这是内容卫生。
一个例子
下面是同一件 T 恤在四个出口上的样子。价格、库存、运费各有一处对不上,单看任何一个出口都发现不了。
没套准四个出口各说各的
套准后都和结账一致
- C商品页
- M商品 feed
- Y协议端点
- K结账,基准
| 版 | 出口 | 价格 | 库存 | 运费 |
|---|---|---|---|---|
| C | 商品页的 JSON-LD | 35.00 | 有货 | 没提 |
| M | 商品 feed | 39.00 | 有货 | 包邮 |
| Y | UCP 目录接口 | 39.00 | 缺货 | 没提 |
| K | 结账实算 | 39.00 | 可下单 | 6.20 |
Regmark 对这件商品会报三条:JSON-LD 的价格是促销结束后没改回来的旧值,UCP 的库存状态是错的,feed 里的「包邮」在结账时并不成立。每一条都带着两边的原始取值和出处。
$ npx regmark audit https://shop.example --datum checkout
shop.example 48 variants 4 surfaces 2m 41s
✗ price.mismatch 1 variant
TEE-BLU-M jsonld 35.00 USD ≠ checkout 39.00 USD
/p/tee-blue → offers[2].price
✗ availability.mismatch 1 variant
TEE-BLU-M ucp out_of_stock ≠ checkout purchasable
✗ shipping.mismatch 1 variant
TEE-BLU-M feed "free" ≠ checkout 6.20 USD (ship to US 94103)
! shipping.undisclosed 31 variants
✓ 13 rules passed
3 errors, 1 warning. Budget exceeded: price.mismatch 1 > 0
exit 1
上面这段输出是设计稿。工具还没写出来,字段和措辞以后可能会变。
名字的来历
印刷时各色版要逐张对齐,纸边印的那个十字圆圈叫套准标,英文是 registration mark,行话叫 reg mark。黑版是其余色版对齐的基准,所以它的代号是 K,取自 key。
在这个项目里,结账就是那块黑版。商品页、feed、协议端点都得向它对齐,因为用户最后付的是结账算出来的那个数。
Regmark 目前是工作代号。npm 上这个包名还空着,GitHub 上的同名账号已经被人注册,正式定名之前还要查商标。
现在的状态
| 项 | 内容 |
|---|---|
| 阶段 | 方案起草,还没有代码 |
| 首期目标 | 从 2026 年 10 月 12 日起算,12 周内发布 v0.1 |
| 实现语言 | TypeScript,要求 Node 22 及以上 |
| 许可证 | 代码 Apache-2.0,文档 CC BY 4.0 |
| 方案更新 | 2026 年 10 月 9 日 |