compaction-threshold changedbuild-with-claude/compaction-threshold
Nearest release: v2.1.307, published 4 hours after this site recorded the change. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Recorded here
Lines+51added
Lines−66removed
From line
152
where the diff opens
First seen
21 Sep 2026
this site's first read of the page
Recorded edits15to this page, all time
The whole hunk
from line 152, old and new numbered
/
from line 152
152152
153153 var messages = new List<BetaMessageParam>
154154 {
155 new() { Role = Role.User, Content = "Help me build a website" }
155 new BetaUserMessageParam { Content = "Help me build a website" }
156156 };
157157
158158 var parameters = new MessageCreateParams
from line 170
170170 var response = await client.Beta.Messages.Create(parameters);
171171
172172 // Append the response (including any compaction block) to continue the conversation
173 messages.Add(new BetaMessageParam
173 messages.Add(new BetaAssistantMessageParam
174174 {
175 Role = Role.Assistant,
176175 Content = response.Content.Select(block => new BetaContentBlockParam(block.Json)).ToList()
177176 });
178177
from line 383
384383
385384 ```csharp C#
386385 AnthropicClient client = new();
387 List<BetaMessageParam> messages = [new() { Role = Role.User, Content = "Hello" }];
386 List<BetaMessageParam> messages = [new BetaUserMessageParam { Content = "Hello" }];
388387
389388 var parameters = new MessageCreateParams
390389 {
from line 607
608607 MaxTokens = 4096,
609608 Messages =
610609 [
611 new BetaMessageParam { Role = Role.User, Content = "Help me build a Python web scraper" },
612 new BetaMessageParam { Role = Role.Assistant, Content = "I'll help you build a web scraper..." },
613 new BetaMessageParam { Role = Role.User, Content = "Add support for JavaScript-rendered pages" }
610 new BetaUserMessageParam { Content = "Help me build a Python web scraper" },
611 new BetaAssistantMessageParam { Content = "I'll help you build a web scraper..." },
612 new BetaUserMessageParam { Content = "Add support for JavaScript-rendered pages" }
614613 ],
615614 ContextManagement = new BetaContextManagementConfig
616615 {
from line 857
858857 var client = new AnthropicClient();
859858 var messages = new List<BetaMessageParam>
860859 {
861 new() { Role = Role.User, Content = "Hello, Claude" }
860 new BetaUserMessageParam { Content = "Hello, Claude" }
862861 };
863862
864863 var parameters = new MessageCreateParams
from line 879
880879
881880 if (response.StopReason == BetaStopReason.Compaction)
882881 {
883 messages.Add(new BetaMessageParam
882 messages.Add(new BetaAssistantMessageParam
884883 {
885 Role = Role.Assistant,
886884 Content = response.Content.Select(block => new BetaContentBlockParam(block.Json)).ToList()
887885 });
888886
from line 1153
11551153
11561154 ```csharp C#
11571155 AnthropicClient client = new();
1158 List<BetaMessageParam> messages = [new() { Role = Role.User, Content = "Hello, Claude" }];
1156 List<BetaMessageParam> messages = [new BetaUserMessageParam { Content = "Hello, Claude" }];
11591157
11601158 const int TriggerThreshold = 100_000;
11611159 const int TotalTokenBudget = 3_000_000;
from line 1178
11801178 if (response.StopReason == BetaStopReason.Compaction)
11811179 {
11821180 compactionCount += 1;
1183 messages.Add(new()
1181 messages.Add(new BetaAssistantMessageParam
11841182 {
1185 Role = Role.Assistant,
11861183 Content = response.Content.Select(b => new BetaContentBlockParam(b.Json)).ToList()
11871184 });
11881185
from line 1186
11891186 // Estimate total tokens consumed; prompt wrap-up if over budget
11901187 if (compactionCount * TriggerThreshold >= TotalTokenBudget)
11911188 {
1192 messages.Add(new()
1189 messages.Add(new BetaUserMessageParam
11931190 {
1194 Role = Role.User,
11951191 Content = "Please wrap up your current work and summarize the final state."
11961192 });
11971193 }
from line 1248
12521248 int compactionCount = 0;
12531249
12541250 List<BetaMessageParam> messages = new ArrayList<>();
1255 messages.add(BetaMessageParam.builder()
1256 .role(BetaMessageParam.Role.USER)
1257 .content("Hello, Claude")
1258 .build());
1251 messages.add(BetaMessageParam.ofUser("Hello, Claude"));
12591252
12601253 MessageCreateParams params = MessageCreateParams.builder()
12611254 .addBeta("compact-2026-01-12")
from line 1274
12811274
12821275 // Estimate total tokens consumed; prompt wrap-up if over budget
12831276 if (compactionCount * triggerThreshold >= totalTokenBudget) {
1284 messages.add(BetaMessageParam.builder()
1285 .role(BetaMessageParam.Role.USER)
1286 .content("Please wrap up your current work and summarize the final state.")
1287 .build());
1277 messages.add(BetaMessageParam.ofUser(
1278 "Please wrap up your current work and summarize the final state."));
12881279 }
12891280 }
12901281
from line 1459
14681459
14691460 var messages = new List<BetaMessageParam>
14701461 {
1471 new() { Role = Role.User, Content = "Help me build a web scraper" }
1462 new BetaUserMessageParam { Content = "Help me build a web scraper" }
14721463 };
14731464
14741465 var response = await client.Beta.Messages.Create(new()
from line 1474
14831474 }
14841475 });
14851476
1486 messages.Add(new BetaMessageParam
1477 messages.Add(new BetaAssistantMessageParam
14871478 {
1488 Role = Role.Assistant,
14891479 Content = response.Content.Select(block => new BetaContentBlockParam(block.Json)).ToList()
14901480 });
14911481
1492 messages.Add(new BetaMessageParam { Role = Role.User, Content = "Now add error handling" });
1482 messages.Add(new BetaUserMessageParam { Content = "Now add error handling" });
14931483
14941484 var nextResponse = await client.Beta.Messages.Create(new()
14951485 {
from line 1784
17941784
17951785 ```csharp C#
17961786 var client = new AnthropicClient();
1797 List<BetaMessageParam> messages = [new() { Role = Role.User, Content = "Hello" }];
1787 List<BetaMessageParam> messages = [new BetaUserMessageParam { Content = "Hello" }];
17981788
17991789 var parameters = new MessageCreateParams
18001790 {
from line 2133
21432133 CacheControl = new BetaCacheControlEphemeral()
21442134 }
21452135 },
2146 Messages = [new() { Role = Role.User, Content = "Hello, Claude" }],
2136 Messages = [new BetaUserMessageParam { Content = "Hello, Claude" }],
21472137 ContextManagement = new BetaContextManagementConfig
21482138 {
21492139 Edits = [new BetaCompact20260112Edit()]
from line 2367
23772367
23782368 ```csharp C#
23792369 AnthropicClient client = new();
2380 List<BetaMessageParam> messages = [new() { Role = Role.User, Content = "Hello" }];
2370 List<BetaMessageParam> messages = [new BetaUserMessageParam { Content = "Hello" }];
23812371
23822372 var countParams = new MessageCountTokensParams
23832373 {
from line 2565
25752565
25762566 static async Task<string> Chat(AnthropicClient client, List<BetaMessageParam> messages, string userMessage)
25772567 {
2578 messages.Add(new() { Role = Role.User, Content = userMessage });
2568 messages.Add(new BetaUserMessageParam { Content = userMessage });
25792569
25802570 var parameters = new MessageCreateParams
25812571 {
from line 2584
25942584
25952585 var response = await client.Beta.Messages.Create(parameters);
25962586
2597 messages.Add(new()
2587 messages.Add(new BetaAssistantMessageParam
25982588 {
2599 Role = Role.Assistant,
26002589 Content = response.Content.Select(block => new BetaContentBlockParam(block.Json)).ToList()
26012590 });
26022591
from line 2665
26762665 }
26772666
26782667 private static String chat(String userMessage) {
2679 messages.add(BetaMessageParam.builder()
2680 .role(BetaMessageParam.Role.USER)
2681 .content(userMessage)
2682 .build());
2668 messages.add(BetaMessageParam.ofUser(userMessage));
26832669
26842670 MessageCreateParams params = MessageCreateParams.builder()
26852671 .addBeta("compact-2026-01-12")
from line 2952
29662952
29672953 async Task<string> Chat(string userMessage)
29682954 {
2969 messages.Add(new() { Role = Role.User, Content = userMessage });
2955 messages.Add(new BetaUserMessageParam { Content = userMessage });
29702956
29712957 var response = await client.Beta.Messages.Create(new()
29722958 {
from line 2977
29912977
29922978 // Preserve the prior exchange + current user message (3 messages),
29932979 // without thinking blocks; an assistant turn left empty is dropped
2994 var preserved = messages
2995 .Skip(Math.Max(0, messages.Count - 3))
2996 .Select(message => message.Content.TryPickBetaContentBlockParams(out var blocks)
2997 ? new BetaMessageParam
2998 {
2999 Role = message.Role,
3000 Content = blocks
3001 .Where(block => block.Type.GetString() is not ("thinking" or "redacted_thinking"))
3002 .ToList()
3003 }
3004 : message)
3005 .Where(message => !message.Content.TryPickBetaContentBlockParams(out var blocks) || blocks.Count > 0)
3006 .ToList();
2980 var preserved = new List<BetaMessageParam>();
2981 foreach (var message in messages.Skip(Math.Max(0, messages.Count - 3)))
2982 {
2983 if (!message.TryPickAssistant(out var assistant)
2984 || !assistant.Content.TryPickBetaContentBlockParams(out var blocks))
2985 {
2986 preserved.Add(message);
2987 continue;
2988 }
30072989
2990 var kept = blocks
2991 .Where(block => block.Type.Raw() is not ("thinking" or "redacted_thinking"))
2992 .ToList();
2993 if (kept.Count > 0)
2994 {
2995 preserved.Add(assistant with { Content = kept });
2996 }
2997 }
2998
30082999 var messagesAfterCompaction = new List<BetaMessageParam>
30093000 {
3010 new()
3001 new BetaAssistantMessageParam
30113002 {
3012 Role = Role.Assistant,
30133003 Content = new List<BetaContentBlockParam> { new BetaContentBlockParam(response.Content[0].Json) }
30143004 }
30153005 };
from line 3020
30303020 messages = messagesAfterCompaction;
30313021 }
30323022
3033 messages.Add(new()
3023 messages.Add(new BetaAssistantMessageParam
30343024 {
3035 Role = Role.Assistant,
30363025 Content = response.Content.Select(block => new BetaContentBlockParam(block.Json)).ToList()
30373026 });
30383027
from line 3142
31533142 private static final List<BetaMessageParam> messages = new ArrayList<>();
31543143
31553144 public static String chat(String userMessage) {
3156 messages.add(BetaMessageParam.builder()
3157 .role(BetaMessageParam.Role.USER)
3158 .content(userMessage)
3159 .build());
3145 messages.add(BetaMessageParam.ofUser(userMessage));
31603146
31613147 MessageCreateParams params = MessageCreateParams.builder()
31623148 .addBeta("compact-2026-01-12")
from line 3168
31823168 // without thinking blocks; an assistant turn left empty is dropped
31833169 List<BetaMessageParam> preservedMessages = new ArrayList<>();
31843170 for (BetaMessageParam message : messages.subList(Math.max(0, messages.size() - 3), messages.size())) {
3185 if (message.content().isBetaContentBlockParams()) {
3186 message = message.toBuilder()
3187 .contentOfBetaContentBlockParams(message.content().asBetaContentBlockParams().stream()
3188 .filter(block -> !block.isThinking() && !block.isRedactedThinking())
3189 .toList())
3190 .build();
3191 if (message.content().asBetaContentBlockParams().isEmpty()) {
3171 if (message.isAssistant() && message.asAssistant().content().isContentBlockParams()) {
3172 var keptBlocks = message.asAssistant().content().asContentBlockParams().stream()
3173 .filter(block -> !block.isThinking() && !block.isRedactedThinking())
3174 .toList();
3175 if (keptBlocks.isEmpty()) {
31923176 continue;
31933177 }
3178 message = BetaMessageParam.ofAssistantOfContentBlockParams(keptBlocks);
31943179 }
31953180 preservedMessages.add(message);
31963181 }
No line in this hunk matches that.