NorthCinder排名算法深度解析:确定性打分如何让广告永远无法上位
【免费下载链接】northcinderBuyer-run, ad-neutral shopping-agent MCP software with deterministic ranking, signed purchase mandates, and a local audit trail.项目地址: https://gitcode.com/gh_mirrors/no/northcinder
NorthCinder 是一款买家主导、广告中立的开源购物代理(MCP)软件,它的核心能力是 NorthCinder排名算法:一套完全确定性的打分体系,让商家付费永远无法影响搜索结果。本文将从评分权重、分层机制、客户端复核、中立性审计四个层面完整拆解这套开源购物代理排名算法,并给出全部源码路径,看完你也能在自己的电脑上亲自验证每一个排序结论。
为什么购物搜索总是"恰好在最前面"?
传统电商搜索的本质是竞价排名:谁付费高,谁靠前。平台把"广告位"和"自然结果"混在一起,买家很难区分,商家则通过付费、刷单、美化标题来抢占前排。结果是:你搜到的,未必是最适合你的,而是最舍得花钱的。
NorthCinder 的立场完全不同:它定位为"买家运行(buyer-run)"的购物代理,排名只回答一个问题——哪个商品最符合你写的购物清单(brief),而不是哪个商家付了钱。
NorthCinder排名算法:13 个权重,全部来自买家诉求
排名打分的全部依据,都来自买家的搜索条件。在packages/protocol/src/ranking/rank.ts中,权重常量RANK_WEIGHTS明码标价,共 13 项:
| 权重项 | 分值 | 生效条件 |
|---|---|---|
priceBest | +40 | 同币种组内最便宜得满分,最贵得 0 分 |
overBudgetPenalty | −25 | 价格超出买家预算 |
specMatchFull | +30 | 匹配必须属性的比例 |
specMissPenaltyEach | −10 | 每缺失一个必须属性 |
deliveryMeets | +10 | 承诺送达日满足买家期限 |
deliveryMissesPenalty | −15 | 错过买家送达期限 |
inStock | +5 | 有货 |
preorderPenalty | −5 | 仅支持预售 |
outOfStockPenalty | −20 | 缺货 |
trustTrusted | +10 | 商家信任等级为 trusted |
trustKnown | +5 | 商家信任等级为 known |
flaggedPenalty | −40 | 商家被标记为 flagged |
ethicsMatchFull | +8 | 匹配买家伦理偏好(如公平贸易) |
这 13 项覆盖了价格、预算、规格匹配、物流、库存、商家信任、伦理偏好七个维度,没有任何一项可以被商家花钱购买。完整说明见官方规范文档 docs/RANKING.md,该文档由代码自动生成,权重一变、文档不同步,CI 就会失败。
广告永远无法上位的三大硬性机制
这是整个 NorthCinder排名算法最核心的设计,也是"广告永远无法上位"的底气所在:
1. 广告不是评分输入,得分恒为 0。在scoreOffer中,sponsored标志完全不参与打分——不加分、也不减分。逻辑见 rank.ts。
2. 严格分层,广告永远低一档。排序时先分梯队:所有非广告商品严格排在所有广告之上,广告之间再按分数排。即使广告商品更便宜、规格更好,也永远不可能排到任何自然结果前面。
3. 永久打标签。每个广告结果都会附上理由sponsored listing: labeled and ranked below all non-sponsored offers,用户一眼就能识别。
这三条被写成了可测试的属性:给任何商品打上"广告"标志,它的排名只可能下降,不可能上升。
完整执行流程:分层、打分、排序、给理由
打开 rank.ts 中的rankOffers,可以看到四步流水线:
- 打分:对每个候选商品按 13 项权重累计分数,同时生成机器可读的
reasons(每条理由标明对应哪个标准,如"比最便宜的贵 10000 EUR"); - 分层:非广告 > 广告(品牌承诺,第一优先级);可购买 > 缺货(第二优先级);
- 排序:层内按分数降序 → 价格升序 → 商品 ID 升序,形成全序;
- 输出:返回带分数和理由的排名结果。
关键特性是纯函数:不读时钟、不产生随机数、不做网络 I/O。相同的输入必然得到逐字节相同的输出,这就是"确定性"的含义。
当场抓包:客户端复核让作弊无所遁形
"确定性"要真正可信,必须让用户自己的电脑能验证。为此,协议包提供了客户端复核函数verifySearchRanking,见 packages/protocol/src/ranking/verify.ts。
它的做法很朴素却极有效:服务端返回结果时,必须同时交出它排名所用的全部输入(商品列表 + 信任信号 trustSignals)。客户端拿到后,用同一份开源代码在本机重新算一遍,再和服务端返回的顺序、分数、理由逐一比对:
- 顺序不符 →
order_mismatch; - 分数被篡改 →
score_mismatch; - 理由被改写 →
reasons_mismatch。
任何形式的"付费插队""分数注水""理由美化"都会立刻被标记,结果写入本地审计日志。在客户端 client/src/server.ts 中,每次搜索响应都会携带rankingVerified字段,忠实报告这次结果是否通过复核。
实测数据:250 次洗牌与 99 次广告注入
NorthCinder 还内置了一套 ACES 风格的中立性自审计,实现在 packages/protocol/src/ranking/neutrality-audit.ts,报告输出到 docs/NEUTRALITY-AUDIT.md。审计使用固定随机种子,跑多少次结果都逐字节一致,并作为 CI 测试的一部分:
- 位置洗牌测试:50 组合成商品 × 每次 5 种打乱顺序 = 250 次重新排名,0 次偏离基准顺序——输入顺序永远不影响结果;
- 广告注入测试:对 99 个自然商品打上广告标志,0 次排名上升、0 次分数变化、0 个广告越层、0 个缺失标签——付费永远只能有害;
- 属性权重探测:11 项单维度探测,实测分数增量与公布的权重全部一致,包括广告维度测得0。
这份报告是自动生成的,任何中立性回退都会让 CI 红灯,从机制上防止"悄悄改规则"。
如何亲自动手验证这套排名算法
想验证 NorthCinder排名算法的确定性,不需要信任任何宣传:
- 安装运行:需要 Node.js 20+,克隆仓库后执行
npx northcinder init完成初始化(仓库地址:https://gitcode.com/gh_mirrors/no/northcinder); - 读规范:打开 docs/RANKING.md 查看完整打分表;
- 看代码:对照 rank.ts 逐行核对权重;
- 本地复算:用
@northcinder/protocol导出rankOffers,把自己搜索请求的原始数据喂进去,再和返回结果比对; - 查阅审计:任何时刻都可以重新生成 NEUTRALITY-AUDIT.md 的中立性报告。
结语
NorthCinder排名算法的独特之处,不在于某个精妙的排序技巧,而在于把"公平"从一句口号变成了可验证的工程事实:权重公开、代码开源、分层硬性、复核就地。当购物代理开始替我们下单,一个"广告永远无法上位"的排名算法,就是最基础的信任底座。如果你也在做 AI 购物或 MCP 工具,这套"确定性 + 客户端复核 + 自动审计"的范式,非常值得参考。
【免费下载链接】northcinderBuyer-run, ad-neutral shopping-agent MCP software with deterministic ranking, signed purchase mandates, and a local audit trail.项目地址: https://gitcode.com/gh_mirrors/no/northcinder
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考