- Neu PolyTrader.Core/Agents: AgentBudget (Steps/Tokens/Timeout), LoopGuard (thread-safe, AgentBudgetExceededException mit Kind), PermissionGate (Tool-Allow-List, null = alle erlaubt). Aus ClawdDotNet portiert, NICHT als Abhaengigkeit (.NET 10 vs 8). - SupervisorAgent nutzt LoopGuard (Default-Steps = MaxIterations=8, rueckwaerts- kompatibel) + PermissionGate (Allow-List = angebotene Tools; nicht freigegebene Calls liefern Fehlertext statt Ausfuehrung). SupervisorProfile.Budget ueber- schreibt den Deckel. Abbruch graceful mit Grund (Steps/Tokens/Zeit). - Tests: AgentGuardTests (LoopGuard/PermissionGate) + Token-Abbruch am Agenten. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
25 lines
1.0 KiB
C#
25 lines
1.0 KiB
C#
using System;
|
||
|
||
namespace PolyTrader.Core.Agents
|
||
{
|
||
/// <summary>
|
||
/// Kostendeckel für einen einzelnen Agenten-Lauf (aus ClawdDotNet übernommen und erweitert): begrenzt
|
||
/// Schritte, Gesamt-Tokens und Wanduhr-Zeit. Wird pro Lauf mit einem frischen <see cref="LoopGuard"/>
|
||
/// erzwungen – so kann ein LLM-Agent nicht in eine teure Endlosschleife laufen.
|
||
/// </summary>
|
||
public sealed record AgentBudget
|
||
{
|
||
/// <summary>Maximale Anzahl Modell-Runden (Function-Calling-Iterationen).</summary>
|
||
public int MaxSteps { get; init; } = 8;
|
||
|
||
/// <summary>Maximale Summe aus Prompt- und Completion-Tokens über den gesamten Lauf.</summary>
|
||
public int MaxTokens { get; init; } = 120_000;
|
||
|
||
/// <summary>Maximale Wanduhr-Dauer des gesamten Laufs.</summary>
|
||
public TimeSpan Timeout { get; init; } = TimeSpan.FromMinutes(3);
|
||
|
||
/// <summary>Voreinstellung (moderat: 8 Schritte, 120k Tokens, 3 Minuten).</summary>
|
||
public static AgentBudget Default { get; } = new();
|
||
}
|
||
}
|