Skip to content

Commit 0f2c07d

Browse files
committed
Restore legacy prefix matching for context window patterns
Commit 3694c44 switched CONTEXT_WINDOWS matching from substring to fnmatch, which broke suffixed model names (deepseek-v4-flash, gpt-5-pro, qwen3.5-32b, kimi-k2.7-0613 ...) by falling through to the wildcard fallback (128k). Restore legacy behavior by adding a trailing '*' to explicit entries so first-match-wins still hits the specific size before general fallbacks.
1 parent 3694c44 commit 0f2c07d

2 files changed

Lines changed: 23 additions & 15 deletions

File tree

‎python_agent_harness/config.py‎

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,25 @@
1717
CONTEXT_TRIGGER = 0.70
1818

1919
# Entries are matched in order (first match wins): put more specific
20-
# patterns before general ones. Supports wildcards (*).
20+
# patterns before general ones. Supports wildcards (*). Trailing `*`
21+
# on explicit entries preserves prefix matching for suffixed model
22+
# names (e.g. "deepseek-v4-flash" -> deepseek-v4*), matching the
23+
# legacy substring behavior.
2124
CONTEXT_WINDOWS: list[tuple[str, int]] = [
22-
("gpt-5-mini", 128_000),
23-
("gpt-5", 400_000),
24-
("gpt-oss-120b", 128_000),
25-
("claude", 200_000),
26-
("deepseek-v3", 128_000),
27-
("deepseek-v4", 1_000_000),
28-
("qwen3.5", 131_072),
29-
("qwen3.6", 262_144),
30-
("qwen3.8", 262_144),
31-
("qwen3", 131_072),
32-
("glm-5.2", 1_000_000),
33-
("glm-5.1", 128_000),
34-
("kimi-k2.7", 256_000),
35-
("kimi", 128_000),
25+
("gpt-5-mini*", 128_000),
26+
("gpt-5*", 400_000),
27+
("gpt-oss-120b*", 128_000),
28+
("claude*", 200_000),
29+
("deepseek-v3*", 128_000),
30+
("deepseek-v4*", 1_000_000),
31+
("qwen3.5*", 131_072),
32+
("qwen3.6*", 262_144),
33+
("qwen3.8*", 262_144),
34+
("qwen3*", 131_072),
35+
("glm-5.2*", 1_000_000),
36+
("glm-5.1*", 128_000),
37+
("kimi-k2.7*", 256_000),
38+
("kimi*", 128_000),
3639
# Wildcard fallbacks for unknown models
3740
("gpt-*", 128_000),
3841
("claude-*", 200_000),

‎tests/test_token_estimator.py‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,13 @@ def test_cjk_estimate(self):
2626

2727
def test_context_window_matching(self):
2828
self.assertEqual(context_window_for("deepseek-v4"), 1_000_000)
29+
self.assertEqual(context_window_for("deepseek-v4-flash"), 1_000_000)
30+
self.assertEqual(context_window_for("deepseek-v4-pro"), 1_000_000)
2931
self.assertEqual(context_window_for("gpt-5-mini"), 128_000)
32+
self.assertEqual(context_window_for("gpt-5-pro"), 400_000)
3033
self.assertEqual(context_window_for("claude-sonnet"), 200_000)
34+
self.assertEqual(context_window_for("qwen3.5-32b"), 131_072)
35+
self.assertEqual(context_window_for("kimi-k2.7-0613"), 256_000)
3136
self.assertEqual(context_window_for("unknown-model"), 128_000)
3237

3338
def test_calibrator(self):

0 commit comments

Comments
 (0)