From 5adf4c1ca6a43ac4c3479c8980b350c4ee65af69 Mon Sep 17 00:00:00 2001 From: Richard Date: Sat, 19 Sep 2026 15:33:09 +0200 Subject: [PATCH] Prompt History und Verbrauchsauswertung (#660), englische Hauptsprache (#661) Prompt history: every run records its transcript (task, each model step with tokens and cost, tool calls and results, engine follow-ups) - bounded in size, scrubbed of recognisable secrets, system prompts stored once per text. Retention in days per instance (default 14) and per agent (0 = never, -1 = forever); an hourly janitor deletes what is past it, "never" also purges. Usage analysis over run receipts: filter by period, agent, model, event, status, cost and free text; sort by every column; totals over the whole filter; hourly or daily series grouped by agent, model or event; markers for budget denials and model changes; run detail with receipt, transcript, tool calls and approvals. WebUI: Analysis > Token usage > Runs / Timeline, run detail, Prompt History with retention settings. New code, comments and texts in English; texts come from language packs (i18n/en.json, de.json) via modules/i18n.js. CLAUDE.md records English as the main language. Version 0.1.12. Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 9 + Directory.Build.props | 2 +- src/ClawdDotNet.App/AppHost.cs | 24 ++ .../Services/AgentAdministration.cs | 31 ++ src/ClawdDotNet.App/Services/RunInsights.cs | 71 ++++ .../Analytics/UsageAnalytics.cs | 224 +++++++++++++ .../Audit/IAuditRepository.cs | 6 + .../Audit/SqliteAuditRepository.cs | 18 ++ src/ClawdDotNet.Core/Config/AgentConfig.cs | 6 + src/ClawdDotNet.Core/Config/InstanceConfig.cs | 7 + src/ClawdDotNet.Core/Engine/AgentEngine.cs | 70 +++- .../Staging/SqliteStagingRepository.cs | 14 + src/ClawdDotNet.Core/Staging/StagingModels.cs | 3 + .../Staging/StagingService.cs | 1 + src/ClawdDotNet.Core/Storage/SqliteStorage.cs | 31 ++ .../Transcripts/PromptHistorySettings.cs | 49 +++ .../Transcripts/RunTranscript.cs | 103 ++++++ .../Transcripts/RunTranscriptRecorder.cs | 212 ++++++++++++ .../Transcripts/SqliteRunTranscriptStore.cs | 211 ++++++++++++ .../Transcripts/TranscriptJanitor.cs | 58 ++++ src/ClawdDotNet.Manager.Web/wwwroot/app.css | 306 ++++++++++++++++++ src/ClawdDotNet.Manager.Web/wwwroot/app.js | 15 + .../wwwroot/i18n/de.json | 141 ++++++++ .../wwwroot/i18n/en.json | 141 ++++++++ .../wwwroot/index.html | 14 +- .../wwwroot/modules/i18n.js | 63 ++++ .../wwwroot/modules/router.js | 26 +- .../wwwroot/modules/usage-filters.js | 156 +++++++++ .../wwwroot/views/prompt-history.js | 202 ++++++++++++ .../wwwroot/views/run-detail.js | 195 +++++++++++ .../wwwroot/views/usage-runs.js | 187 +++++++++++ .../wwwroot/views/usage-timeline.js | 234 ++++++++++++++ .../Endpoints/AnalyticsEndpoints.cs | 279 ++++++++++++++++ src/ClawdDotNet.Web/Endpoints/ApiEndpoints.cs | 1 + .../Services/AdministrationTests.cs | 19 ++ .../Analytics/UsageAnalyticsTests.cs | 143 ++++++++ .../Infrastructure/EngineFixture.cs | 7 +- .../Infrastructure/InMemoryAuditRepository.cs | 5 + .../InMemoryStagingRepository.cs | 3 + .../Transcripts/PromptHistoryTests.cs | 244 ++++++++++++++ 40 files changed, 3521 insertions(+), 10 deletions(-) create mode 100644 src/ClawdDotNet.App/Services/RunInsights.cs create mode 100644 src/ClawdDotNet.Core/Analytics/UsageAnalytics.cs create mode 100644 src/ClawdDotNet.Core/Transcripts/PromptHistorySettings.cs create mode 100644 src/ClawdDotNet.Core/Transcripts/RunTranscript.cs create mode 100644 src/ClawdDotNet.Core/Transcripts/RunTranscriptRecorder.cs create mode 100644 src/ClawdDotNet.Core/Transcripts/SqliteRunTranscriptStore.cs create mode 100644 src/ClawdDotNet.Core/Transcripts/TranscriptJanitor.cs create mode 100644 src/ClawdDotNet.Manager.Web/wwwroot/i18n/de.json create mode 100644 src/ClawdDotNet.Manager.Web/wwwroot/i18n/en.json create mode 100644 src/ClawdDotNet.Manager.Web/wwwroot/modules/i18n.js create mode 100644 src/ClawdDotNet.Manager.Web/wwwroot/modules/usage-filters.js create mode 100644 src/ClawdDotNet.Manager.Web/wwwroot/views/prompt-history.js create mode 100644 src/ClawdDotNet.Manager.Web/wwwroot/views/run-detail.js create mode 100644 src/ClawdDotNet.Manager.Web/wwwroot/views/usage-runs.js create mode 100644 src/ClawdDotNet.Manager.Web/wwwroot/views/usage-timeline.js create mode 100644 src/ClawdDotNet.Web/Endpoints/AnalyticsEndpoints.cs create mode 100644 tests/ClawdDotNet.Core.Tests/Analytics/UsageAnalyticsTests.cs create mode 100644 tests/ClawdDotNet.Core.Tests/Transcripts/PromptHistoryTests.cs diff --git a/CLAUDE.md b/CLAUDE.md index c172580..0ebb884 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -140,6 +140,15 @@ wenn keines dransteht. Anwendung ruft `observe` und `status` nicht auf. Wer den Instanzmanager baut (#528, Stufe 3), liest den Befundzustand von Anfang an aus diesem Feld. +## Sprache: Englisch ist die Hauptsprache (seit 2026-09-19, #661) + +Neue Module, Klassen, Ansichten und Menüeinträge entstehen **auf Englisch** — +Bezeichner, Kommentare und Oberflächentexte. Texte stehen nicht fest im Code, +sondern kommen über Sprachschlüssel aus getrennten Sprachpaketen (WebUI: +`modules/i18n.js`, Pakete unter `wwwroot/i18n/`). Deutsch ist die erste +Zusatzsprache. Bestehenden deutschen Code nicht nebenbei umschreiben — die +Umstellung des Bestands ist ein eigenes Vorhaben mit niedriger Priorität. + ## Weitere Handbücher | Dokument | Wofür | diff --git a/Directory.Build.props b/Directory.Build.props index 87075d5..380b219 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -18,7 +18,7 @@ ClawdDotNet.Core.BuildInfo bleibt daneben bestehen: das ist ein von Hand gefuehrter Zaehler mit Aenderungstext, keine Versionsangabe. --> - 0.1.11 + 0.1.12