Stufe 4c (#764): Bezeichner auf Englisch - Typen, Methoden, Felder, Parameter, Locals, Testnamen
Mit Roslyn umbenannt (Verweise folgen, Zeichenketten bleiben unberuehrt). Nicht umbenannt, weil gespeichert oder ueber die API gebunden (Stufe 4e): Properties, Record-Parameter, Enum-Member sowie die Parameter der Endpunkt-Handler (Routen-/Query-Bindung ueber den Namen). Die JSON-Felder anonymer Objekte bleiben ausdruecklich benannt (JsonFilter: pfad). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
837a634a22
commit
77062facc9
@@ -48,7 +48,7 @@ public sealed class ContextCompactorTests
|
||||
[InlineData(6)]
|
||||
[InlineData(7)]
|
||||
[InlineData(8)]
|
||||
public async Task Compaction_erhaelt_gueltige_Sequenz_bei_beliebiger_Toolzyklus_Laenge(int toolCallsPerCycle)
|
||||
public async Task Compaction_keeps_a_valid_sequence_for_any_tool_cycle_length(int toolCallsPerCycle)
|
||||
{
|
||||
// Depending on the number of tool calls the "last 6 messages" boundary falls
|
||||
// at a different place in the cycle. At least one variant hits right in the middle.
|
||||
@@ -65,7 +65,7 @@ public sealed class ContextCompactorTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Compaction_trennt_Toolantwort_nie_von_ihrem_Aufruf()
|
||||
public async Task Compaction_never_separates_a_tool_answer_from_its_call()
|
||||
{
|
||||
// Constructed on purpose: the tail of 6 messages begins exactly at a tool answer.
|
||||
var (compactor, _) = CreateCompactor();
|
||||
@@ -101,7 +101,7 @@ public sealed class ContextCompactorTests
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Compaction_behaelt_den_SystemPrompt_an_Position_0()
|
||||
public async Task Compaction_keeps_the_SystemPrompt_at_position_0()
|
||||
{
|
||||
const string systemPrompt = "Du bist ein sehr spezifischer Testagent.";
|
||||
var (compactor, _) = CreateCompactor();
|
||||
@@ -115,7 +115,7 @@ public sealed class ContextCompactorTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Compaction_erfindet_keinen_SystemPrompt_wenn_keiner_da_war()
|
||||
public async Task Compaction_does_not_invent_a_SystemPrompt_when_there_was_none()
|
||||
{
|
||||
var (compactor, _) = CreateCompactor();
|
||||
var messages = Conversation.Start(systemPrompt: null).Repeat(6).Build();
|
||||
@@ -130,7 +130,7 @@ public sealed class ContextCompactorTests
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Compaction_laesst_Nachrichten_unveraendert_wenn_die_Zusammenfassung_fehlschlaegt()
|
||||
public async Task Compaction_leaves_messages_unchanged_when_the_summary_fails()
|
||||
{
|
||||
var client = new FakeChatClient().Throws(new HttpRequestException("API nicht erreichbar"));
|
||||
var compactor = new ContextCompactor(client, TestLogging.Factory);
|
||||
@@ -144,7 +144,7 @@ public sealed class ContextCompactorTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Compaction_laesst_Nachrichten_unveraendert_wenn_die_Zusammenfassung_leer_ist()
|
||||
public async Task Compaction_leaves_messages_unchanged_when_the_summary_is_empty()
|
||||
{
|
||||
var client = new FakeChatClient().AlwaysRespondsWithText(" ");
|
||||
var compactor = new ContextCompactor(client, TestLogging.Factory);
|
||||
@@ -162,7 +162,7 @@ public sealed class ContextCompactorTests
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public async Task Pruning_kuerzt_lange_Toolergebnisse_ausserhalb_des_geschuetzten_Endes()
|
||||
public async Task Pruning_shortens_long_tool_results_outside_the_protected_end()
|
||||
{
|
||||
var (compactor, _) = CreateCompactor();
|
||||
var messages = Conversation.Start()
|
||||
@@ -178,7 +178,7 @@ public sealed class ContextCompactorTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Pruning_laesst_kurze_Toolergebnisse_unveraendert()
|
||||
public async Task Pruning_leaves_short_tool_results_unchanged()
|
||||
{
|
||||
var (compactor, _) = CreateCompactor();
|
||||
var messages = Conversation.Start()
|
||||
@@ -196,22 +196,22 @@ public sealed class ContextCompactorTests
|
||||
// ═══════════════════════════════════════════════════════════
|
||||
|
||||
[Fact]
|
||||
public void EstimateTokens_waechst_monoton_mit_dem_Inhalt()
|
||||
public void EstimateTokens_grows_monotonically_with_the_content()
|
||||
{
|
||||
var klein = Conversation.Start().Repeat(1).Build();
|
||||
var mittel = Conversation.Start().Repeat(5).Build();
|
||||
var gross = Conversation.Start().Repeat(20).Build();
|
||||
var small = Conversation.Start().Repeat(1).Build();
|
||||
var average = Conversation.Start().Repeat(5).Build();
|
||||
var large = Conversation.Start().Repeat(20).Build();
|
||||
|
||||
var a = ContextCompactor.EstimateTokens(klein);
|
||||
var b = ContextCompactor.EstimateTokens(mittel);
|
||||
var c = ContextCompactor.EstimateTokens(gross);
|
||||
var a = ContextCompactor.EstimateTokens(small);
|
||||
var b = ContextCompactor.EstimateTokens(average);
|
||||
var c = ContextCompactor.EstimateTokens(large);
|
||||
|
||||
a.ShouldBeLessThan(b);
|
||||
b.ShouldBeLessThan(c);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Unterhalb_der_Schwelle_wird_kein_ApiCall_ausgeloest()
|
||||
public async Task Below_the_threshold_no_ApiCall_is_triggered()
|
||||
{
|
||||
// Important for the budget: compaction must not fire up a model unnecessarily.
|
||||
var (compactor, client) = CreateCompactor();
|
||||
@@ -224,7 +224,7 @@ public sealed class ContextCompactorTests
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Compaction_reduziert_die_Nachrichtenzahl_deutlich()
|
||||
public async Task Compaction_reduces_the_message_count_clearly()
|
||||
{
|
||||
var (compactor, _) = CreateCompactor();
|
||||
var messages = Conversation.Start().Repeat(15).Build();
|
||||
|
||||
Reference in New Issue
Block a user