Files
gott/TODO.md
T
MelekiandClaude Opus 4.8 47557c9724 Include panel member tokens in the chain cost badge
Panel member token usage was tracked but discarded, so the cost badge only
ever showed the worker's tokens — misleading for MoA where the real cost is
roughly rounds x agents. Collect each member's usage and add it to the badge.

Each member fills its own TokenUsage in parallel (Anthropic loop via the
existing memberUsage, CLI via the now-captured CliChatResult return value;
OpenAI members stay null, nachruestbar). RunPanel sums them after the
Task.WhenAll barrier — single-threaded, so no lock or Interlocked needed —
across all MoA rounds and emits a panel_usage SSE event before panel_done.
The frontend adds those tokens onto the worker totals in the done handler so
the badge reflects the full chain cost.

- SseHelper: add TokenUsage.Add()
- AnthropicService.Panel.cs: PanelMemberResult.Usage, accumulate per round
  after the barrier, emit panel_usage; RunPanelMemberViaCli returns usage
- chat.js: _panelUsage state, panel_usage case, add to worker tokens on done,
  reset on stream start
- TODO.md: check off the member-token item

v1 limit: live badge only — FinalizeChain still persists worker tokens, so a
reload shows worker-only cost.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 18:08:55 +02:00

6.1 KiB
Raw Blame History

TODOs

Features

  • Skills: In Datenbank anlegen können, mit Pfad zu Skill-Dateien; im Frontend am Dashboard dargestellt. Zuweisung an Agent und/oder Session.
  • System-Prompt: Nachrichten einer Session als Referenz und somit in den System-Prompt aufnehmen
  • Im Chat: Menüpunkt "Datenbank sichern" entfernen und stattdessen in den Einstellungen platzieren. Außerdem soll nun nicht mehr nur die Datenbank gesichert werden, sondern der gesamte data-Ordner (der Unterordner backup muss natürlich exkludiert werden)
  • Agents-Formular (nur beim Bearbeiten von vorhandenen Agent): Button der das File-Explorer Modal öffnet bei dem ich den Agent-Ordner sehe.
  • Chat: Maximal 500 Nachrichten laden. Dauert sonst zu lange und der Browser wird langsam
  • User-Management: Tabelle in Datenbank mit username / password. Wenn kein User vorhanden: dann admin mit password "admin" anlegen
  • Websearch Tool
  • Anfrage/Stream abbrechen
  • Telegram-Intergration
  • Refactoring: Agent/Session-Einstellungen, die den System-Prompt bzw. das Tool Use bearbeiten
  • Cronjobs: Planung, ob cron von Debian/Linux verwendet werden soll, oder ein eigener Worker/Service in der App selbst, der das übernimmt
  • Weiteres Modell hinzufügen: "Haiku 4.5"
  • Weitere Tools: Glob? Search? Todo List?
  • Settings in Datenbank speichern (users table) anstelle von localStorage
  • Einzelne Nachicht als Link teilen
  • Geteilte Links verwalten (löschen)

Bugs

  • Wenn gerade gestreamt wird und man refreshed die Seite, dann verliert das Frontend den Status "Streaming..." und ich kann eine Nachricht schreiben, obwohl das nicht möglich sein sollte
  • Größere Tasks brechen irgendwann ab, könnte an der Limitierung von Antrophic/Claude liegen. Jedoch sollte wird es scheinbar nicht behandelt: Der Status bleibt auf "Streaming..." aber es passiert nichts mehr
  • Session -> Chat öffnen im Frontend soll nicht möglich sein, wenn kein Agent gesetzt ist
  • Falsche Nachrichtenanzahl im Dashboard (tool uses werden fälschicherweise mitgezählt) - dasselbe bei "Ältere Nachrichten laden" im Chat
  • Beim Benutzen vom Tool "todo_write": beim streamen ist der text abgeschnitten (limitiert), nach dem poll (history laden) passt es wieder. es soll beim stream auch vollständig angezeigt werden und nicht mit "..." enden
  • Manchmal passiert es wenn ein Agent die Memory-Funktion hat, dass er sich selbst Memories einträgt - das ist auch ok so, aber, manchmal werden "dumme" erinnerungen gesetzt, die nur session-bezogen sind (und nicht agent-bezogen) und diese sind dann fast immer einfach nur copy&paste aus dem session system-prompt. Woran kann das liegen bzw. wie kann man das optimieren?
  • File Explorer im Frontend, Klick auf .fe-item ignoriert das padding, sprich man muss genau auf den Text klicken, damit der Klick genommen wird

Backend

  • System-Prompt anpassen. Explizit auf Workspace-Pfad hinweisen, weil Model halluziniert oft und will in den nicht vorhandenen Pfad /workspace wechseln

Frontend

  • Chat: Es scrollt beim Laden nicht ganz nach unten, ich denke weil im DOM noch etwas nachgeladen wird (ich denke es ist die Schriftart), und die Höhe sich beim Laden nochmal verändert
  • Chat: User-Nachrichten mit dem Tag [Datei: pfad/zur/datei.xyz:1-10] wird nicht als HTML geparsed
  • Chat: Wird zwar erkannt und ist klickbar, aber es öffnet sich einfach nur der File Explorer, ohne dass sich die Datei öffnet und die Darstellung in Monospace ist auch nicht schön
  • Chat: Es werden momentan alle Tool-Calls angezeigt - die Anzeige soll individuell in den Einstellungen gemacht werden können. Auswahl aus drei Stufen: "Alle anzeigen" / "Nur Modifikationen" (file änderungen, memory änderungen, etc.) / "Verstecken"
  • Browser: "Zurück"-Taste soll auf den vorherigen location.hash wechseln
  • File Explorer: CodeMirror lässt sich horizontal nicht scroll
  • Chat: Datum und Uhrzeit bei den Nachrichten anzeigen (Format: dd.MM.yyyy HH:mm:ss)
  • Dashboard: Menu-Dropdown bei Cards sind abgeschnitten wenn die Card-Höhe nicht ausreicht (logisch, weil das Menu-Dropdown ein Child von der Card ist)
  • Auto-scrolling deaktivieren, wenn man weiterhoch gescrollt hat, und er wieder fortsetzen wenn man ganz nach unten gescrollt hat
  • Anstelle von [Bild: ...]-Platzhalter direkt das gesendete Bild anzeigen

Ideas / Backlog

  • Memory: Embedding-Modell für semantische Suche über Memory-Dateien (Vektor-basiert + BM25 Hybrid Search)
  • Claude (Sub-)Agents – Nicht umsetzbar: Claude Code Sub-Agents sind ein CLI-Feature, nicht über die Messages API verfügbar. Eigenes Sub-Agent-System (Preparer/Review/Finalizer) deckt den Use-Case bereits ab.

Features aus Devy übernehmen

  • 💬 Typing-Indicator - Animierter Indikator statt statischem "Streaming..."
  • 🎨 Chat-Hintergründe - Benutzerdefinierte Hintergründe pro Session
  • 👤 User-Management - Admin-only: Benutzer CRUD, Login-as-User, Default-Pfade
  • 🖥️ Windows Desktop App - WPF + WebView2 Wrapper mit konfigurierbarer URL
  • 🎨 Canvas - HTML/CSS/JS inline rendern in sandboxed iframes mit Resize und Source-View (Message-Tag: [canvas:<title>:<height (optional)>]...[/canvas])

Multi-Modell-Panel (Fusion/MoA)

  • 🔄 MoA-Zwischenrunden persistieren (F5 überleben) - RunPanelMember (Services/AnthropicService.Panel.cs) persistiert jetzt JEDE Proposer-Runde (statt nur der finalen) mit layer/totalLayers im JSON-Transkript; wwwroot/js/history.js gruppiert die Panel-Bubbles nach Layer und rendert die "Runde k/N"-Divider beim Reload.
  • 💰 Member-Token in die Chain-Kosten - Jeder Panel-Member sammelt seine eigene TokenUsage (Anthropic-Loop via memberUsage, CLI via CliChatResult; OpenAI=null/nachrüstbar); RunPanel summiert sie NACH der Task.WhenAll-Barrier (single-threaded → kein Lock) über alle Runden und sendet ein panel_usage-SSE-Event. Das Frontend (wwwroot/js/chat.js) addiert die Panel-Tokens im done-Event auf die Worker-Tokens → Badge = Gesamtkosten. v1-Grenze: nur Live-Badge (DB/Reload zeigt weiter nur Worker-Tokens, da FinalizeChain unverändert).