Files
PolyTraderSharp/src/PolyTrader.Core/Agents/AgentBudget.cs
T
RichardandClaude Opus 4.8 bb103a578a Agenten-Kostendeckel: LoopGuard + PermissionGate aus ClawdDotNet uebernommen
- 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>
2026-07-23 20:29:47 +02:00

25 lines
1.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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();
}
}