Rueckmeldung nach Vertrauensstufe: drei Wege nach oben (#715)

- IAgentTool.ReadsForeignContent: Werkzeuge mit Aussenkontakt erklaeren sich selbst
  (WebFetch, WebMonitor, DirectAPI, Mail, RocketChat, Telegram, TelegramClient,
  SocialMediaManager, FTP, Database); AgentConfig.TreatAsForeignReader kann nur verschaerfen
- ReportingLine: Stufe aus den Werkzeugen, "wer steht darueber", Pruefung des Wegs nach oben
  (nie Aenderungen an Aufgaben darueber, nur eine Ebene hoch, Fremdinhalt-Stufe gar kein
  Freitext) und Rahmung als untrusted_content
- Engine: Nachricht und Spawn nach oben geprueft, Text der Fremdinhalt-Stufe kommt gerahmt an
- Taskboard: task_create/update/comment, reopen und die Dubletten-Notiz folgen dem Berichtsweg
- Dispatcher: Aufgaben von Agenten der Fremdinhalt-Stufe gehen gerahmt in den Lauf
- TaskReports: Erledigt-Signal und Systemmeldung (in Pruefung, blockiert, abgebrochen) an den
  Auftraggeber, je Zustand einmal, gesammelt in einer offenen Aufgabe je Empfaenger
- OrgBriefing nennt den Berichtsweg; WebUI zeigt Stufe und Schalter am Agenten

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-09-25 09:16:29 +02:00
co-authored by Claude Opus 5.5
parent e2ffe4b380
commit 3857a7cab2
33 changed files with 1234 additions and 30 deletions
+15 -7
View File
@@ -762,13 +762,21 @@ public sealed class AppHost : IAsyncDisposable
// day the budget will not last is named while there is still time to act.
lateRunGate: headroom,
budgetOutlook: headroom,
// #714: A task tree that has come to rest is reviewed by the lead of its unit.
treeWatch: new TaskTreeWatch(
taskRepository,
(task, ct) => board.CreateAsync(task, ct),
stateStore,
() => engine.OrganisationProvider?.Invoke(),
loggerFactory.CreateLogger("ClawdDotNet.Core.Tasks.TreeWatch")));
treeWatch: new TaskWatches(
// #714: A task tree that has come to rest is reviewed by the lead of its unit.
new TaskTreeWatch(
taskRepository,
(task, ct) => board.CreateAsync(task, ct),
stateStore,
() => engine.OrganisationProvider?.Invoke(),
loggerFactory.CreateLogger("ClawdDotNet.Core.Tasks.TreeWatch")),
// #715: Whoever handed out a task hears when it is done or stopped — from the code.
new TaskReports(
board,
stateStore,
() => instance.Agents,
tools.Get,
loggerFactory.CreateLogger("ClawdDotNet.Core.Tasks.Reports"))));
// Reconciliation nicht blockierend: Der Start soll nicht auf das Dateisystem warten.
_ = Task.Run(async () =>