#631: Derselbe Vorschlag (gleicher Agent, gleiches Werkzeug, gleiche Argumente unabhaengig von Schluesselreihenfolge) wird nicht erneut angelegt - der Agent erfaehrt die bestehende Nummer. Offene Vorschlaege verfallen nach 24 h (Status Expired). #609: Werkzeuge koennen den Freigabeschluessel aus dem Inhalt bestimmen (IAgentTool.StagingAktion). Database: SELECT/SHOW/DESCRIBE -> query, INSERT/UPDATE/DELETE -> write, DDL -> schema; write und schema sind freigabepflichtig. Ausgefuehrt wird nach Statement-Art, schreibende Statements melden die Zeilenzahl. #579: Database-Vorpruefung (Zugriffsebene, Tabellenfreigabe, SqlGuard) - was das Werkzeug ablehnen wuerde, kommt nicht mehr in die Freigabeliste. #610: SqlGuard ueberspringt IF [NOT] EXISTS und erkennt DESCRIBE/DESC <tabelle>. #632: WebFetch fetch mit filter liefert aus JSON/JSONP nur passende Eintraege; beim Blaettern durch grosses JSON empfiehlt der Hinweis den filter. Version 0.1.10. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -57,7 +57,7 @@ public static class WebInhalt
|
||||
|
||||
public static AufbereiteterInhalt Aufbereiten(
|
||||
string body, string? mediaType, Uri quelle, AbrufModus modus, string? selector,
|
||||
int offset = 0, int maxZeichen = StandardMaxZeichen, bool mitLinks = false)
|
||||
int offset = 0, int maxZeichen = StandardMaxZeichen, bool mitLinks = false, string? filter = null)
|
||||
{
|
||||
var art = Art(mediaType, body);
|
||||
|
||||
@@ -66,7 +66,12 @@ public static class WebInhalt
|
||||
string? titel = null, sprache = null, kanonisch = null, hinweis = null;
|
||||
DateTimeOffset? datum = null;
|
||||
|
||||
if (art != "html")
|
||||
if (art != "html" && !string.IsNullOrWhiteSpace(filter))
|
||||
{
|
||||
(text, bereich, hinweis) = JsonFilter.Anwenden(body, filter.Trim());
|
||||
if (bereich == "gefiltert") art = "json";
|
||||
}
|
||||
else if (art != "html")
|
||||
{
|
||||
text = body.Trim();
|
||||
}
|
||||
@@ -95,10 +100,23 @@ public static class WebInhalt
|
||||
}
|
||||
}
|
||||
|
||||
if (art == "html" && !string.IsNullOrWhiteSpace(filter))
|
||||
{
|
||||
const string nurJson = "filter gilt nur fuer JSON - fuer HTML nimm selector.";
|
||||
hinweis = hinweis is null ? nurJson : $"{hinweis} {nurJson}";
|
||||
}
|
||||
|
||||
var (teil, start, naechster) = Abschnitt(text, offset, maxZeichen);
|
||||
if (naechster is not null)
|
||||
{
|
||||
var fortsetzung = $"Inhalt gekuerzt ({teil.Length} von {text.Length} Zeichen) - mit offset={naechster} weiterlesen, nur falls noetig.";
|
||||
|
||||
// #632: Jeder weitere Abschnitt bleibt im Kontext und wird bei jedem folgenden Schritt
|
||||
// erneut bezahlt. Fuer die DWD-Warnungen las ein Agent fuenf Abschnitte - 160.000 Tokens
|
||||
// fuer eine Frage nach einer einzigen Stadt.
|
||||
if (art == "json" && bereich != "gefiltert")
|
||||
fortsetzung += " Suchst du bestimmte Eintraege, hole sie mit 'filter' (z.B. filter=\"Berlin\") statt weiterzublaettern.";
|
||||
|
||||
hinweis = hinweis is null ? fortsetzung : $"{hinweis} {fortsetzung}";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user