docs: tool_choice automatisch, System-Prompt-Blöcke reduziert, History-Limit + Reminder
ARCHITECTURE.md + ARCHITECTURE_QUICK.md: - tool_choice aus agents-Tabelle entfernt (nicht mehr konfigurierbar) - Tool-Choice automatisch: any wenn Workspace/Skills/Memory, sonst auto - System-Prompt-Blöcke 14 → 11 (Rules, Verhaltensregeln, Erinnerung entfernt) - History-Limit: max 120 Messages dokumentiert - System-Prompt-Reminder alle ~30 Messages dokumentiert (Lost-in-the-Middle) - SystemPromptBuilder: + Reminder-Generierung - ChatContext: PromptBlocks Property dokumentiert - buildAgentCard: toolChoice-Badge entfernt - Plan-Modus: übersprungene Blöcke aktualisiert
This commit is contained in:
1 parent
47d6f44e07
commit
9ce210ab0c
2 files changed
+42
-39
No files matched your search
+24
-22
@@ -285,7 +285,7 @@ TelegramBot (1) ─── (*) Session (via telegram_bot_id)
|
||||
|-------------------|-----------------------------------------------------|
|
||||
| `users` | Benutzer (username, password_hash, display_name, is_admin, persona, settings, default_path) |
|
||||
| `tokens` | Auth-Tokens (token → user_id) |
|
||||
| `agents` | AI-Agenten (model, tool_choice, custom_commands, auto_commit, use_soul/identity/user_info/memory, use_web_search, web_search_version, allow_user_choice, task_instruction, avatar_scale/offset, avatar_small, is_public) |
|
||||
| `agents` | AI-Agenten (model, custom_commands, auto_commit, use_soul/identity/user_info/memory, use_web_search, web_search_version, allow_user_choice, task_instruction, avatar_scale/offset, avatar_small, is_public) |
|
||||
| `sessions` | Chat-Sessions (description, image, image_small, workspace, context, custom_commands, telegram_bot_id, telegram_chat_id, avatar_scale/offset, preparer_agent_id, review_agent_id, max_review_iterations, finalizer_agent_id) |
|
||||
| `chains` | Request-Chains (model, tokens, iterations, timing, tool_choice, tool_names, stream_error_info, plan_mode, archive_id) |
|
||||
| `messages` | Einzelne Nachrichten (text, tool_use, tool_result, error, web_search_result), Tag für Sub-Agent-Markierung oder Import-Herkunft (`openclaw-import`), SortKey für korrekte Reihenfolge |
|
||||
@@ -307,7 +307,7 @@ TelegramBot (1) ─── (*) Session (via telegram_bot_id)
|
||||
- `InputTokens`, `OutputTokens`, `CacheCreationTokens`, `CacheReadTokens` – Token-Verbrauch
|
||||
- `Iterations` – Anzahl der Tool-Loop-Durchläufe
|
||||
- `StopReason` – `end_turn`, `tool_use`, `max_iterations`, `error`, `client_disconnected`, `awaiting_user_choice`, `preparer_query`
|
||||
- `ToolChoice` – Verwendete Tool-Choice-Strategie
|
||||
- `ToolChoice` – Verwendete Tool-Choice-Strategie (automatisch: `any` wenn Workspace/Skills/Memory, sonst `auto`)
|
||||
- `ToolNames` – Komma-separierte Liste der verwendeten Tools
|
||||
- `ArchiveId` – Zugehöriges Archiv (wenn archiviert)
|
||||
- `StreamErrorInfo` – Fehlerdetails bei Stream-Abbrüchen
|
||||
@@ -371,7 +371,7 @@ AuthService → DatabaseService → EnsureDefaultUser
|
||||
| `AnthropicService` | Singleton | Claude API Kommunikation (Streaming SSE + Non-Streaming) |
|
||||
| `ToolService` | Singleton | Tool-Definitionen bereitstellen, Tool-Aufrufe ausführen |
|
||||
| `WorkspaceHelper` | Static | Workspace-Pfad-Auflösung (relativ → absolut), Path-Traversal-Schutz |
|
||||
| `SystemPromptBuilder` | Static | Modularer System-Prompt aus konfigurierbaren Blöcken |
|
||||
| `SystemPromptBuilder` | Static | Modularer System-Prompt aus konfigurierbaren Blöcken + Reminder-Generierung |
|
||||
| `MemoryService` | Singleton | Agent-Gedächtnis auf Dateisystem (MEMORY.md, IDENTITY.md etc.) |
|
||||
| `SkillService` | Singleton | Skill-Discovery und -Management aus Dateisystem |
|
||||
| `TelegramService` | Singleton | Telegram Bot API, Webhook-Handling, Nachrichten senden |
|
||||
@@ -429,7 +429,8 @@ Die Models in `Models/` sind reine Daten-Records ohne Business-Logic (Ausnahme:
|
||||
**ChatContext** ist ein Runtime-Objekt das den vollständigen Kontext eines Chat-Requests hält:
|
||||
- Chain-ID, Session-ID, Model-ID
|
||||
- Aufgelöster System-Prompt (Text + strukturierte Blöcke)
|
||||
- Workspace-Pfad, Tool-Choice
|
||||
- Workspace-Pfad, Tool-Choice (automatisch bestimmt)
|
||||
- Prompt-Blöcke (`PromptBlocks`) – für Reminder-Generierung in der History
|
||||
- Referenzen auf Agent und Session Records
|
||||
|
||||
### Templates
|
||||
@@ -489,7 +490,7 @@ Das Frontend ist eine **Single-Page Application** ohne Build-Step, komplett in V
|
||||
|
||||
### Wiederverwendbare Card-Builder (cards.js)
|
||||
|
||||
- **`buildAgentCard(agent)`** – Erzeugt ein `.card` DOM-Element für einen Agent (Avatar, Name, Model-Badge, Feature-Badges: toolChoice, autoCommit, useSoul, useIdentity, useUserInfo, useMemory, webSearch, Skills, Public/Fremd). Skills werden inline vom API-Endpunkt mitgeliefert. Wird im Dashboard und im Agent-Picker-Modal (Session-Formular) verwendet.
|
||||
- **`buildAgentCard(agent)`** – Erzeugt ein `.card` DOM-Element für einen Agent (Avatar, Name, Model-Badge, Feature-Badges: autoCommit, useSoul, useIdentity, useUserInfo, useMemory, webSearch, Skills, Public/Fremd). Skills werden inline vom API-Endpunkt mitgeliefert. Wird im Dashboard und im Agent-Picker-Modal (Session-Formular) verwendet.
|
||||
- **`buildSessionCard(session, agent)`** – Erzeugt ein `.card` DOM-Element für eine Session (Avatar, Name, Badges: Agent, Kontext, Telegram, Meta: Nachrichten/Archiv/Workspace, Git-Status). Git-Status wird inline vom API-Endpunkt mitgeliefert. Wird im Dashboard und im Session-Picker-Modal (Cronjob-Formular) verwendet.
|
||||
- **`buildTelegramBotCard(bot)`** – Erzeugt ein `.card` DOM-Element für einen Telegram Bot (Name, maskierter Token, Session-Count, Public/Fremd-Badges). Wird im Dashboard und im Bot-Picker-Modal (Session-Formular) verwendet.
|
||||
- **Picker-Modals** – Agent- und Session-Auswahl in Formularen (Session-/Cronjob-Seiten) erfolgt über modale Dialoge mit den Card-Buildern statt über Dropdowns.
|
||||
@@ -595,10 +596,12 @@ Der Stop-Mechanismus arbeitet auf zwei Ebenen:
|
||||
|
||||
Die History-Rekonstruktion in `BuildHistoryFromDb()` ist optimiert:
|
||||
|
||||
- **Max 120 Messages**: Die History wird auf maximal 120 Messages begrenzt (älteste entfernt)
|
||||
- **Ältere Chains**: Nur `text`-Messages (user + assistant), keine Tool-Calls
|
||||
- **Letzte Chain**: Vollständig mit allen Tool-Use/Tool-Result Blöcken
|
||||
- **Attachments**: Nur für die letzte User-Message geladen (spart enorme Token)
|
||||
- **Tool-Results**: In der History auf 20.000 Zeichen gekürzt (vollständig in DB)
|
||||
- **System-Prompt-Reminder**: Alle ~30 Messages wird ein automatisch generierter Reminder als User/Assistant-Paar injiziert (z.B. `[System Reminder] Beachte weiterhin den System-Prompt (Identity, Workspace, Kontext, Memory, ...)`). Bekämpft das "Lost-in-the-Middle"-Problem bei langen Konversationen. Der Reminder-Text wird aus den aktiven Prompt-Block-Labels generiert (`SystemPromptBuilder.BuildReminder()`). Nur aktiv wenn ≥2 Blöcke vorhanden.
|
||||
|
||||
---
|
||||
|
||||
@@ -644,10 +647,13 @@ Nutzt Anthropics eingebaute Web-Suche als Server-Side-Tool.
|
||||
|
||||
Im Plan-Modus werden nur folgende Tools bereitgestellt: `read_file`, `list_files`, `glob`, `grep`, `execute`, `todo_write`, `memory_*`, `ask_user_choice`. Write-Tools (`write_file`, `edit_file`, `delete_file`) werden gefiltert.
|
||||
|
||||
### Tool-Choice Strategien
|
||||
### Tool-Choice (automatisch)
|
||||
|
||||
- **`any`**: Erste Iteration erzwingt Tool-Nutzung, danach `auto`. Verhindert dass der Agent nur Text antwortet wenn Tools benötigt werden.
|
||||
- **`auto`**: Claude entscheidet frei ob Tools nötig sind.
|
||||
Die Tool-Choice-Strategie wird automatisch bestimmt (nicht konfigurierbar pro Agent):
|
||||
|
||||
- **`any`**: Automatisch wenn Workspace, Skills oder Memory vorhanden. Erste Iteration erzwingt Tool-Nutzung, danach `auto`. Verhindert dass der Agent nur Text antwortet wenn Tools benötigt werden.
|
||||
- **`auto`**: Wenn keine Tools verfügbar. Claude entscheidet frei.
|
||||
- **`none`**: Im `/no-tools`-Modus.
|
||||
|
||||
### Pfad-Sicherheit
|
||||
|
||||
@@ -664,7 +670,6 @@ Ein **Agent** definiert die Persönlichkeit und Fähigkeiten der AI:
|
||||
| `Name` | Anzeigename |
|
||||
| `Avatar` | Base64 Data-URL (WebP, 512px) + `AvatarSmall` (WebP, 256px Thumbnail) |
|
||||
| `Model` | `sonnet`, `sonnet-4-5`, `sonnet-4-6`, `opus`, `opus-4-5`, `opus-4-6`, `haiku`, `haiku-4-5` |
|
||||
| `ToolChoice` | `any` oder `auto` |
|
||||
| `CustomCommands` | JSON-Array mit Slash-Commands (Label + Prompt) |
|
||||
| `AutoCommit` | `""` (nichts), `"mention"` (anmerken – nur auf User-Request), `"enforce"` (erzwingen – nach jeder Änderung), `"forbid"` (strikt verboten) |
|
||||
| `UseSoul` | SOUL.md in System-Prompt einbinden |
|
||||
@@ -702,17 +707,14 @@ Der `SystemPromptBuilder` erzeugt den System-Prompt modular aus konfigurierbaren
|
||||
│ 2. SOUL.md (UseSoul) │ → Persönlichkeit, Verhalten
|
||||
│ 3. Anweisungen (TaskInstruction) │ → Aufgaben-/Anweisungstext (optional)
|
||||
│ 4. User-Persona (UseUserInfo) │ → Infos über den User
|
||||
│ 5. Tool-Nutzung (Workspace + any) │ → "IMMER Tools benutzen"
|
||||
│ 6. Workspace-Info │ → Tools + Workspace-Pfad
|
||||
│ 7. Rückfragen (AllowUserChoice) │ → Hinweis zu ask_user_choice Tool
|
||||
│ 8. Session-Kontext │ → Freiformtext
|
||||
│ 9. Skills (Agent-Skills) │ → Skill-Prompts
|
||||
│10. Memory (UseMemory) │ → Memory-Regeln + MEMORY.md Inhalt
|
||||
│11. Git-Verhalten (AutoCommit) │ → Commit-Regeln
|
||||
│12. Verhaltensregeln (Workspace + any) │ → "IMMER Tools aufrufen"
|
||||
│13. Erinnerung (Workspace + any) │ → Höchste Priorität: Tool-Aufrufe!
|
||||
│14. Markierte Nachrichten │ → Vom User als wichtig markierte Messages
|
||||
│ [Plan-Modus-Block] │ → Nur wenn planMode=true (überspringt 5,11,12,13)
|
||||
│ 5. Workspace-Info │ → Tools + Workspace-Pfad
|
||||
│ 6. Rückfragen (AllowUserChoice) │ → Hinweis zu ask_user_choice Tool
|
||||
│ 7. Session-Kontext │ → Freiformtext
|
||||
│ 8. Skills (Agent-Skills) │ → Skill-Prompts
|
||||
│ 9. Memory (UseMemory) │ → Memory-Regeln + MEMORY.md Inhalt
|
||||
│10. Git-Verhalten (AutoCommit) │ → Commit-Regeln
|
||||
│11. Markierte Nachrichten │ → Vom User als wichtig markierte Messages
|
||||
│ [Plan-Modus-Block] │ → Nur wenn planMode=true (überspringt 10)
|
||||
│ [Preparer-Instruktionsblock] │ → Nur für Preparer-Agents
|
||||
└──────────────────────────────────────────┘
|
||||
```
|
||||
@@ -1278,12 +1280,12 @@ Der Plan-Modus ist ein **Read-only-Betriebsmodus**, in dem der Agent den Code an
|
||||
|--------|--------|-----------|
|
||||
| **Tools** | Alle (read_file, write_file, edit_file, delete_file, execute, ...) | Nur read-only: `read_file`, `list_files`, `glob`, `grep`, `execute`, `todo_write`, `memory_*`, `ask_user_choice` |
|
||||
| **System-Prompt** | Normal | + Plan-Modus-Block: "Du darfst NUR lesen und analysieren, KEINE Änderungen vornehmen" |
|
||||
| **toolChoice** | `"any"` (wenn Agent so konfiguriert) | Immer `"auto"` (Claude darf frei antworten) |
|
||||
| **toolChoice** | `"any"` (automatisch wenn Workspace/Skills/Memory) | Immer `"auto"` (Claude darf frei antworten) |
|
||||
| **Chain-Speicherung** | `plan_mode = 0` | `plan_mode = 1` |
|
||||
|
||||
### System-Prompt-Anpassungen im Plan-Modus
|
||||
|
||||
Folgende Blöcke werden **übersprungen**: KRITISCH (Tool-Nutzung erzwingen), Verhalten ("handle sofort"), Erinnerung ("MUSS Tool aufrufen"), Git-Commits. Der Tools-Block listet nur Read-only-Tools auf. Skills werden als "nur zur Kenntnis, nicht ausführbar" markiert.
|
||||
Folgende Blöcke werden **übersprungen**: Git-Commits. Der Tools-Block listet nur Read-only-Tools auf. Skills werden als "nur zur Kenntnis, nicht ausführbar" markiert.
|
||||
|
||||
### Frontend
|
||||
|
||||
|
||||
Reference in new issue
Block a user