feat(agent): promote minimax m3 to full tier
A 3x2 A/B run (multi-screen mobile, dashboard, landing) at the production thinking configuration showed the full-tier pipeline beating the basic tier across the board for M3: geometry issues 5 to 1, total wall clock 30 percent faster, fewer LLM calls, and the one permanent subtask loss shifting from two core data elements to a single sidebar. Scoped to the M3 generation like the kimi and glm entries; older MiniMax models keep the basic profile. Thinking stays enabled through the existing adapter exemption.
This commit is contained in:
parent
8518bac0d7
commit
3828215741
|
|
@ -292,7 +292,7 @@ mod tests {
|
|||
fn screenshot_budget_uses_model_tier_and_never_returns_invalid_truncation() {
|
||||
assert!(
|
||||
inline_screenshot_char_budget("claude-opus-4.8", 6_144)
|
||||
> inline_screenshot_char_budget("minimax-m3", 6_144)
|
||||
> inline_screenshot_char_budget("minimax-m2.7", 6_144)
|
||||
);
|
||||
let tiny = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==";
|
||||
assert_eq!(
|
||||
|
|
|
|||
|
|
@ -148,6 +148,12 @@ const MODEL_PROFILES: &[Entry] = &[
|
|||
// Standard。与 GLM 同理是推理模型,关思考防烧 content;时长无实测数据,先 ×1,
|
||||
// 慢再调。未来 K4 等更高代际届时各加一条 matcher。
|
||||
e(Match::Sub("kimi-k3"), ModelTier::Full, true, "Kimi K3"),
|
||||
// MiniMax M3(及以后)—— 2026-07-18 3×2 A/B 实测(mobile 多屏/dashboard/
|
||||
// landing):Full 档几何 issue 5→1、总耗时快 30%、调用数更少、完整性更优,
|
||||
// 全维度非边际胜出 → 升 Full。仅 M3 起算强(老 M 系/abab 落后面的泛 minimax
|
||||
// Basic 条目)。thinking 由 ChatProviderLlmClient 的 m3_keeps_thinking 特判
|
||||
// 保留(Adaptive),此处 thinking_disabled 对 M3 实际不生效,仅作族内一致。
|
||||
e(Match::Sub("minimax-m3"), ModelTier::Full, true, "MiniMax M3"),
|
||||
e(
|
||||
Match::Sub("deepseek-v4-flash"),
|
||||
ModelTier::Standard,
|
||||
|
|
@ -253,6 +259,12 @@ mod tests {
|
|||
resolve_model_profile("kimi-k2.5").tier,
|
||||
ModelTier::Standard
|
||||
);
|
||||
// M3 measured full-tier (2026-07-18 A/B); older MiniMax stays Basic.
|
||||
assert_eq!(resolve_model_profile("MiniMax-M3").tier, ModelTier::Full);
|
||||
assert_eq!(
|
||||
resolve_model_profile("MiniMax-M2.7").tier,
|
||||
ModelTier::Basic
|
||||
);
|
||||
assert_eq!(
|
||||
resolve_model_profile("claude-opus-4-1").tier,
|
||||
ModelTier::Full
|
||||
|
|
|
|||
|
|
@ -1473,14 +1473,14 @@ fn components_manifest_instruction_matches_active_protocol() {
|
|||
/// `ALLOWED` allow-set (DropReason::TierFiltered) even with budget room
|
||||
/// (`budget_used < budget_max`) — so a weak model saw the component list with
|
||||
/// no instruction on how to emit a `ref` node and built everything from
|
||||
/// scratch (0 component instances). Reproduces the real smoke path: a MiniMax
|
||||
/// (Basic-tier) mobile screen, whose 9200-token budget has room to spare.
|
||||
/// scratch (0 component instances). Reproduces the real smoke path: a Basic-tier
|
||||
/// MiniMax (M2.x; M3 is Full since 2026-07-18) mobile screen, whose 9200-token budget has room to spare.
|
||||
#[test]
|
||||
fn basic_tier_components_prompt_keeps_both_manifest_and_teaching() {
|
||||
// Sanity: the model classifies as Basic, the path that drops non-allowed
|
||||
// skills via the allow-set (the bug surface).
|
||||
assert_eq!(
|
||||
resolve_model_profile("minimax-m3").tier,
|
||||
resolve_model_profile("minimax-m2.7").tier,
|
||||
ModelTier::Basic,
|
||||
"test fixture must exercise the Basic tier"
|
||||
);
|
||||
|
|
@ -1492,7 +1492,7 @@ fn basic_tier_components_prompt_keeps_both_manifest_and_teaching() {
|
|||
prompt: "Design a 402x874 mobile shop home screen with product cards, \
|
||||
search, and bottom navigation using the available components"
|
||||
.into(),
|
||||
model: Some("minimax-m3".into()),
|
||||
model: Some("minimax-m2.7".into()),
|
||||
..req()
|
||||
};
|
||||
let mut mobile_plan = plan();
|
||||
|
|
@ -1597,7 +1597,7 @@ fn tight_budget_dashboard_keeps_component_composition() {
|
|||
// Basic tier is the path that overrides the budget down to 5200 when the
|
||||
// plan is NOT a mobile full screen (the bug surface).
|
||||
assert_eq!(
|
||||
resolve_model_profile("minimax-m3").tier,
|
||||
resolve_model_profile("minimax-m2.7").tier,
|
||||
ModelTier::Basic,
|
||||
"fixture must exercise the Basic tier (5200 budget on non-mobile)"
|
||||
);
|
||||
|
|
@ -1608,7 +1608,7 @@ fn tight_budget_dashboard_keeps_component_composition() {
|
|||
prompt: "Design a 1280x800 analytics dashboard with metric cards, \
|
||||
a chart panel, and a data table using the available components"
|
||||
.into(),
|
||||
model: Some("minimax-m3".into()),
|
||||
model: Some("minimax-m2.7".into()),
|
||||
..req()
|
||||
};
|
||||
let mut dash_plan = plan();
|
||||
|
|
@ -1709,7 +1709,7 @@ fn tight_budget_dashboard_without_library_does_not_pin_component_composition() {
|
|||
prompt: "Design a 1280x800 analytics dashboard with metric cards, \
|
||||
a chart panel, and a data table"
|
||||
.into(),
|
||||
model: Some("minimax-m3".into()),
|
||||
model: Some("minimax-m2.7".into()),
|
||||
..req()
|
||||
};
|
||||
let mut dash_plan = plan();
|
||||
|
|
|
|||
Loading…
Reference in a new issue