团队默认模型和路由规则不是同一个开关。通常的层级关系是:默认模型只决定“没有规则命中时用哪个”,路由规则按列表顺序逐条判断,第一条匹配的规则先接管;匹配不上才回落到默认模型。所以成员看到模型不一致,先不要改默认模型,而是确认这次请求命中了规则列表里的哪一条,以及成员范围和仓库设置有没有提前改写请求。判断依据可以按这个顺序核对:规则是否启用、条件是否匹配、规则在列表中的位置、成员属性是否落在规则范围内、仓库级设置是否覆盖了团队设置。
团队默认模型是兜底项,路由规则优先命中;命中顺序通常由规则列表位置决定。遇到成员模型不一致,先确认请求是否被某条规则截走,再查成员范围和仓库级覆盖。可用一条带固定标记的验证请求,观察调用记录里的模型标识和规则痕迹;改配置时只动一条规则并留回滚点。以上判断以实际界面字段和日志为准,不同版本入口位置可能不同。
在模型设置页确认默认模型与路由规则分属哪一层
进入团队管理里的模型或路由配置页,通常能看到两个区域:一个区域的字段名为“默认模型”或“Default Model”,只提供一个模型选择项;另一个区域是规则列表,字段名可能叫“路由规则”“Router Rules”或“模型规则”,每条规则包含条件、目标模型、启用开关和排序位置。字段名以你实际看到的界面为准,不要照搬这里的叫法。
判断谁覆盖谁,看两点。第一,规则列表是否带有顺序序号或拖拽排序,并且页面说明里是否写了“按顺序匹配”之类的话;如果有,规则一般优先于默认模型。第二,规则条件里是否包含成员、仓库、请求类型等维度;如果包含,说明请求在到达默认模型前会先被这些条件筛选一遍。
实际操作时,把默认模型当成兜底配置,把规则列表当成按顺序判断的前置条件。如果怀疑默认模型没生效,先看规则列表里是否存在一条条件过宽的规则,例如只写了“所有成员”却没限制仓库,这条规则会先接走大部分请求。反过来,如果规则看起来没命中,先确认默认模型是不是填了一个与预期相同的模型,造成“看起来没变”的错觉。
用一条真实请求观察实际落到的模型
验证请求要具备可识别的特征:在提问开头或末尾加一段固定标记,例如“验证标记ROUTE-CHECK-01”,再配一个短问题,保证请求容易在调用记录里检索。请求内容本身不需要复杂,关键是标记唯一,方便把这次请求和后续几次对照区分开。
可观察的位置通常有三处:会话或响应里的模型标识、调用记录或请求日志中的模型字段、用量或计费条目里的模型名称。三处不一定同时存在,优先看调用记录,因为它一般会记录请求时间、成员、命中模型,有的还会记录规则的名称或编号。
记录时做前后对比,建议留这几个字段:
- 请求标记:ROUTE-CHECK-01
- 发起成员:哪个账号发出
- 所在仓库:请求从哪个仓库或项目发出
- 实际模型标识:响应或日志里显示的模型名
- 规则痕迹:日志里是否出现规则名称或规则序号
- 时间:用于和改配置前后的记录对齐
把改动前的这条记录先存下来,改完配置后再发一条带不同标记的请求,例如 ROUTE-CHECK-02,两相对比,就能看出模型是否改变、规则痕迹是否变化。如果两次记录完全一致,说明改动没有落到这个成员、这个仓库或这条规则上。
按规则顺序改写一条最小配置
只动一个地方:把目标规则移到列表靠前的位置,或者给它的条件加一个更具体的限制,让它只匹配你要验证的成员或仓库。不要同时修改默认模型、成员范围和仓库设置,否则无法判断是哪一处改动起了作用。
下面是一个通用骨架,字段名以实际界面为准,不虚构具体接口:
规则列表(按从上到下匹配)
1. 条件:成员属于 team-core
目标模型:model-a
启用:是
2. 条件:全部成员
目标模型:model-b
启用:是
默认模型:model-c
改动前后的差异对照可以写成两行:改动前,目标成员命中的是第 2 条“全部成员”规则,实际模型为 model-b;改动后,把“成员属于 team-core”这条规则上移到第 1 条并保持启用,目标成员的请求应先命中它,实际模型变为 model-a。默认模型 model-c 在这两种情况下都不参与,除非两条规则都未命中。
回滚方式也要提前写清楚:记录改动前规则的顺序和条件原文,必要时截图;改回时把规则顺序恢复,或把新增条件删除,再用同样带标记的请求验证一次,确认模型回到改动前的值。不要把回滚依赖在记忆上。
成员范围与仓库设置对命中结果的干扰
规则之外还有第二重覆盖。成员属性里可能影响路由的项包括:所属团队或用户组、角色权限、个人是否单独设置了偏好模型、是否在某个实验或灰度分组里。这些属性如果参与规则条件,会让同一个默认模型对不同成员表现不同。
仓库级设置的检查点包括:仓库是否继承团队设置、是否有独立的模型配置、是否指定了不同的路由规则、是否限制了可用模型列表。仓库级配置一旦存在,可能先于团队规则生效,或者在团队规则之后再覆盖一次。
复验时用一个对照账号:选一个与问题成员属性不同的账号,例如不属于同一个用户组,用同样的请求标记发一次请求,比较两边命中模型和日志里的规则痕迹。如果对照账号命中了预期规则,而问题成员没有,问题更可能在成员属性或成员所在分组上,而不在规则顺序上。这一步能把“规则顺序”和“成员范围”两类原因分开。
把核对过程固化成可重复的检查清单
检查项按从外到内的顺序排列,每次调整都走一遍:
- 确认默认模型的值,以及规则列表是否启用、是否有顺序说明
- 确认目标成员属于哪些团队或分组,是否有个人偏好设置
- 确认请求所在仓库是否继承了团队设置,是否有独立配置
- 发一条带固定标记的请求,记录实际模型标识和规则痕迹
- 只改一条规则,再发一条不同标记的请求做前后对比
- 用对照账号复验一次,排除成员范围干扰
- 确认结果符合预期后,把改动前的顺序和条件留档
每次需要留档的内容包括:模型设置页的截图、规则列表顺序和条件的截图、成员属性页截图、仓库设置页截图、两条带标记请求的调用记录。截图里尽量带上时间和账号信息,避免后续对不上。
判定“配置已生效”的通过条件建议写成可观察的结果:目标成员发出的请求,调用记录里的模型标识与规则目标模型一致;日志或记录里能看到对应规则名称或序号;对照账号的行为与预期一致;把规则顺序临时调回后,模型标识随之变化,说明顺序确实在起作用。四项都对上,再认为这条路由配置已经按预期生效;只对上其中一两项时,继续按清单从上往下查,不要直接改默认模型。