docs: Architektur-Doku auf aktuellen Stand bringen

Aktualisiert ARCHITECTURE.md, ARCHITECTURE_QUICK.md und README.md
für die letzten Feature-Commits:

- Auto-Context: SSE-Event, DB-Persistierung (auto_context-Message),
  History-Filter, Implementierung in Streaming + CLI
- Model-Auflösung: Opus 4.7 + [1m]-Varianten (1M Context)
- Krea: 5 neue Bildmodelle + MINIMAL_MODELS-Hinweis
- Remote: remote.sh (Linux/macOS, embedded Python),
  OS-aware Tool-Description (PowerShell vs. Bash),
  Hinweis dass Cronjobs/Telegram remoteOs aktuell nicht durchreichen
- CLI-Integration: Sub-Agent-Fallback (Preparer/Review/Finalizer),
  Python-Detection (python3 -> python -> py)
- Workspace: native Pfade (Windows \\, Linux /), Drives-Übersicht
- Frontend: addAutoContextBubble() in stream-ui.js
- MaxHistory Default 220 (statt 120)
- 🪟 -> 🗂️ in QUICK (Unicode-Kompatibilität)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
MelekiandClaude Opus 4.7 committed 2026-04-25 17:02:58 +02:00
1 parent 52ab6ff00c
commit ac1c730f07
3 files changed
+97 -27

No files matched your search

+8 -3
View File
@@ -90,7 +90,7 @@ User 1──* TelegramBot 1──* Session (via telegram_bot_id)
| `agents` | AI-Agenten (Model – z.B. `claude-sonnet-4-6` oder `nvidia:model-id`, CustomCommands, AutoCommit, UseSoul/Identity/UserInfo/Memory/AutoContext, UseGitHubSearch, UseSerperSearch, WebSearch, AllowUserChoice, TaskInstruction, AvatarScale/Offset, AvatarSmall, IsPublic) |
| `sessions` | Chat-Sessions (Description, Image, ImageSmall, Workspace, Context, CustomCommands, TelegramBotId, TelegramChatId, AvatarScale/Offset, PreparerAgentId, ReviewAgentId, MaxReviewIterations, FinalizerAgentId) |
| `chains` | Ein Request-Response-Zyklus (Tokens, Timing, Iterations, PlanMode, ToolChoice, ToolNames, StreamErrorInfo, ArchiveId) |
| `messages` | Einzelne Nachrichten (text / tool_use / tool_result / error / web_search_result), Tag für Sub-Agent-Markierung oder Import-Herkunft (`openclaw-import`), thought_signature (Gemini) |
| `messages` | Einzelne Nachrichten (text / tool_use / tool_result / error / web_search_result / auto_context), Tag für Sub-Agent-Markierung oder Import-Herkunft (`openclaw-import`), thought_signature (Gemini) |
| `attachments` | Base64-Anhänge (Bilder, Dokumente) |
| `archives` | Archivierte Chain-Gruppen |
| `cronjobs` | Geplante Tasks (Cron-Expression + Prompt) |
@@ -129,7 +129,7 @@ User 1──* TelegramBot 1──* Session (via telegram_bot_id)
| Shared | `/api/shared/`, `/api/messages/{id}/share` | Share erstellen, öffentlich abrufen, löschen |
| Models | `/api/models/` | `GET nvidia`, `GET pollinations`, `GET gemini`, `GET openai`, `POST refresh` |
| API Keys | `/api/admin/api-keys/` | CRUD + check, check-all, scan, event-scanner, scanned (recheck/adopt/delete), scanner-logs (Admin) + `/api/api-keys/` available, select, selected (User) |
| Remote | `/api/remote` | WebSocket für Remote-Clients, `GET connections`, `POST assign/unassign` |
| Remote | `/api/remote` | WebSocket für Remote-Clients, `GET connections`, `POST assign/unassign`, `GET /remote.ps1` (Windows), `GET /remote.sh` (Linux/macOS) |
| Internal | `/api/internal/` | MCP-Server: remote-execute, ask-user-choice, memory-read/write/list (Token-gesichert) + `POST /api/chat/choice-respond` (normale Auth) |
| DB Explorer | `/api/admin/db/` | tables, table-data (Admin-only) |
| Info | `/api/info` | GET → Build-Zeitstempel + Embedding-Verfügbarkeit |
@@ -208,7 +208,9 @@ User-Input → POST /api/chat (SSE)
**Passive Usage-Aktualisierung:** Nach jedem API-Request (Streaming, Sub-Agent, NonStreaming) werden die Response-Header ausgelesen und Plan/Usage des aktiven API-Keys in der DB aktualisiert – kein separater Check nötig.
**History-Optimierung:** Max 120 Messages. Ältere Chains nur Text-Messages (keine Tool-Calls). Letzte Chain vollständig. Tool-Results auf 20.000 Zeichen gekürzt. Attachments nur für letzte User-Message. System-Prompt-Reminder alle ~30 Messages.
**History-Optimierung:** Max 220 Messages (`MaxHistory`-Setting). Ältere Chains nur Text-Messages (keine Tool-Calls). Letzte Chain vollständig. Tool-Results auf 20.000 Zeichen gekürzt. Attachments nur für letzte User-Message. System-Prompt-Reminder alle ~30 Messages.
**Auto-Context (Vector-Search):** Wenn `UseAutoContext` aktiv, wird vor jedem Request via `VectorSearchService` semantisch passender Kontext aus früheren Messages + Memory-Files gesucht und als `<recalled_context>`-Block in den System-Prompt injiziert. Wird im Frontend als aufklappbare **Auto-Context-Box** angezeigt (Live via SSE-Event `auto_context` + History via `messages`-Eintrag mit `Role="system"`, `Type="auto_context"`). Wird aus der API-History gefiltert (kein Doppel-Send).
**Rendering:** Markdown via marked.js + LaTeX via KaTeX (`$$...$$` Block, `$...$` Inline). Timestamps im Format `dd.MM.yyyy HH:mm:ss` on hover.
@@ -333,6 +335,8 @@ Eine Session kann bis zu **vier Agents** haben: Worker (Pflicht), Preparer (opti
**Backend:** `ChatService` baut `SubAgentContext` für Preparer, Review und Finalizer. `RunPreparer()` im ChatEndpoint (vor StreamChat). `RunReview()` + `RunFinalizer()` in AnthropicService. Alle nutzen Provider-Weiche: Anthropic → `RunAgentChat()`, OpenAI → `ChatNonStreaming()` (mit `Tag`-Markierung, Sub-Agent-Messages aus API-History gefiltert).
**CLI-Fallback für Sub-Agents:** Wenn ein Sub-Agent (Preparer, Review, Finalizer) keinem API-Key zugewiesen ist und die Claude CLI verfügbar ist, wird automatisch `RunSubAgentViaCli()` genutzt. Erst wenn weder Key noch CLI verfügbar sind, wird der Sub-Agent übersprungen (kein Hard-Error mehr).
**SSE-Events:**
- Preparer: `preparer_start`, `preparer_text`, `preparer_tool_use`, `preparer_done`
- Review: `review_start`, `review_text`, `review_tool_use`, `review_feedback`, `review_approved`
@@ -357,3 +361,4 @@ Eine Session kann bis zu **vier Agents** haben: Worker (Pflicht), Preparer (opti
- ⛔ **`Build/`** generell nicht anfassen
- 🔧 **.NET 10** ohne Nullable, ohne Implicit Usings
- 📦 DB-Migrationen sind idempotent (IF NOT EXISTS Pattern in `DatabaseService`)
- 🗂️ Native Pfade (Windows: `\`, Linux/macOS: `/`) – Backend liefert OS-Pfade, Frontend matcht beide via `[\\/]`