Files
gott/README.md
T
Meleki 122000487c Refactor: Server-Settings von appsettings.json in DB-Tabelle (server_settings)
- Neuer ServerSettingsService: zentrale Settings in SQLite mit In-Memory-Cache
- Auto-Migration: bestehende appsettings.Production.json wird einmalig in DB übernommen
- Alle Services umgestellt: IConfiguration → ServerSettingsService (dynamisch, kein Neustart)
- Port bleibt als einziges Setting in appsettings.Production.json (erfordert Neustart)
- ServerSettingsEndpoint: liest/schreibt DB statt JSON-Datei, Port als Sonder-Setting
- IConfiguration komplett entfernt aus allen Services (ChatService, ToolService, AnthropicService,
  OpenAiService, KreaService, TelegramService, KeyScannerService, GitHubEventScannerService)
- AuthMiddleware: KreaApiKey dynamisch aus DB
- appsettings.json bereinigt: nur noch Port und Logging
- Dokumentation aktualisiert (ARCHITECTURE.md, ARCHITECTURE_QUICK.md, README.md)
2026-03-14 13:06:44 +01:00

174 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
![](Screenshot.png)
# // gott
Self-hosted AI-Coding-Agent mit **Anthropic Claude API** als Haupt-Provider sowie **OpenAI-kompatiblen Providern** (Nvidia, Pollinations, Google Gemini). Stellt eine Web-UI bereit, über die man in Sessions mit konfigurierbaren Agenten chatten kann. Die Agenten haben Tool-Zugriff (Dateien lesen/schreiben/bearbeiten, Shell-Befehle ausführen, Suchen, Todos, Memory) auf ein definiertes Workspace-Verzeichnis.
---
## Features
- **Multi-Agent-System** – Bis zu 4 Agenten pro Session: Worker, Vorbereiter (Preparer), Reviewer, Finalizer
- **Vorbereiter-Agent** – Optionaler Preparer, der User-Anfragen analysiert, Vorarbeit leistet und aufbereitete Prompts an den Worker weitergibt
- **Multi-Agent Review** – Optionaler Review-Agent, der die Arbeit des Worker-Agents prüft und Feedback gibt
- **Finalizer-Agent** – Optionaler Agent, der nach dem Review abschließende Arbeiten durchführt (z.B. Git-Commit, Deployment)
- **Interaktive Rückfragen** – `ask_user_choice`-Tool: Agent stellt dem User klickbare Auswahlmöglichkeiten
- **Plan-Modus** – Read-only-Modus zum Analysieren und Planen ohne Änderungen (Toggle im Chat)
- **Web-Search** – Integrierte Web-Suche mit Quellenangaben (URLs + Titel) in Chat und geteilten Nachrichten
- **Multi-Provider** – Anthropic Claude (Haupt-Provider), Nvidia (g4f.space), Pollinations (kostenlos), Google Gemini (kostenloser Free Tier)
- **17 Tools** – `read_file`, `write_file`, `edit_file`, `list_files`, `delete_file`, `execute`, `background_execute`, `glob`, `grep`, `todo_write`, `memory_read`, `memory_write`, `memory_list`, `memory_search`, `remote_execute`, `send_to_session`, `ask_user_choice`
- **Streaming** – Echtzeit-Antworten via Server-Sent Events (SSE)
- **Stop-Button** – Laufende Requests zuverlässig abbrechen (inkl. laufender Shell-Befehle)
- **Skill-System** – Wiederverwendbare Prompt-Bausteine, zuordenbar pro Agent
- **Memory** – Persistentes Gedächtnis pro Agent (Dateisystem-basiert)
- **Workspace-Browser** – Integrierter Datei-Explorer mit Editor
- **Telegram-Integration** – Bots als eigenständige Entität, mehrere Sessions pro Bot, Public-Bots
- **Cronjobs** – Zeitgesteuerte Prompts mit Cron-Expressions
- **Bildgenerierung** – Krea AI Integration für Bildgenerierung
- **Semantische Suche** – Lokale Sentence-Embeddings (all-MiniLM-L6-v2 ONNX) für `memory_search` über vergangene Nachrichten und Memory-Dateien
- **Remote-Verbindungen** – WebSocket-basierte Remote-Clients (PowerShell), AI-Agent kann Befehle auf entfernten Rechnern ausführen
- **API-Key-Verwaltung** – Admin-UI zum Verwalten von API-Keys (Anthropic) inkl. Key-Check, GitHub-Scanner (geleakte Keys finden + übernehmen), passive Usage-Aktualisierung bei jeder Chat-Nachricht, Usage-Badge im Chat mit Key-Switch-Modal
- **Nachrichten teilen** – Einzelne Nachrichten per öffentlichem Link teilen
- **Archivierung** – Chat-Verläufe archivieren und durchsuchen
- **OpenClaw Import** – Chatverlauf aus OpenClaw-Instanzen importieren
- **Benutzerverwaltung** – Multi-User mit Admin-Rollen, Impersonate, Login-Links
- **Servereinstellungen** – Admin-UI für `appsettings.Production.json`
- **Desktop-Client** – WPF + WebView2 Windows-App
- **Dark Theme** – CSS-Variables basiertes Theming
## Tech-Stack
| Bereich | Technologie |
|---------|-------------|
| **Backend** | .NET 10 Minimal API, C# |
| **Datenbank** | SQLite + Dapper |
| **AI** | Anthropic Claude API + OpenAI-kompatible APIs (Nvidia, Pollinations, Gemini) |
| **Embeddings** | Microsoft.ML.OnnxRuntime + all-MiniLM-L6-v2 (Sentence-Embeddings) |
| **Frontend** | Vanilla JS SPA (kein Framework), CSS Variables |
| **Mathe** | KaTeX (LaTeX-Rendering) |
| **Bilder** | SixLabors.ImageSharp |
| **Cron** | Cronos |
| **Desktop** | WPF + WebView2 (optional) |
---
## Voraussetzungen
- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0)
- Anthropic API Key ([console.anthropic.com](https://console.anthropic.com/)) – wird über Admin-UI verwaltet
- Optional: Gemini API Key ([aistudio.google.com](https://aistudio.google.com/apikey)) – kostenlos, kein Billing nötig
- Optional: ONNX-Modell `all-MiniLM-L6-v2` für semantische Suche (`data/models/all-MiniLM-L6-v2/`)
- Linux/macOS/Windows (Produktiv: Linux empfohlen)
## Konfiguration
Beim ersten Start wird `appsettings.json` mit Standardwerten verwendet. Für eigene Einstellungen eine `appsettings.Production.json` im `Build/Linux/publish/`-Verzeichnis anlegen (oder über die Admin-UI verwalten):
```json
{
"Port": 19000
}
```
| Setting | Beschreibung | Default |
|---------|-------------|---------|
| `Port` | Server-Port (erfordert Neustart) | `19000` |
| `MaxIterations` | Max Tool-Loop Iterationen pro Chat | `100` |
| `MaxHistory` | Max Messages in Chat-History | `120` |
| `ReminderInterval` | System-Prompt-Reminder alle N Messages | `30` |
| `ExecuteTimeout` | Timeout für Shell-Befehle in Sekunden | `180` |
| `PayloadLogging` | API-Payloads in Konsole loggen | `false` |
| `PayloadLoggingGzip` | Payload-Logs als .gz komprimieren | `false` |
| `KreaToken` | Krea AI API Token (optional) | – |
| `KreaApiKey` | API-Key für Krea-Endpoints ohne User-Auth (optional) | – |
| `GeminiApiKey` | Google Gemini API Key (kostenlos via [aistudio.google.com](https://aistudio.google.com/apikey)) | – |
> **Hinweis:** `AnthropicToken` wird über die **API-Key-Verwaltung** im Admin-Bereich verwaltet (DB-Tabelle `api_keys`), nicht mehr über `appsettings.json`. Bestehende Tokens werden beim ersten Start automatisch migriert.
> **Hinweis:** Die `appsettings.Production.json` wird **nicht** beim `dotnet publish` mitkopiert. Sie lebt ausschließlich im `Build/Linux/publish/`-Verzeichnis und kann über die Admin-UI (`#/server-settings`) verwaltet werden.
## Starten
```bash
dotnet run
```
Die Web-UI ist dann unter `http://localhost:19000` erreichbar.
Beim ersten Start wird automatisch ein Admin-Account erstellt:
- Benutzername: `admin`
- Passwort: `admin`
## Deployment (Linux)
Empfohlen als systemd-Service hinter einem Reverse Proxy (Nginx, Caddy):
```bash
# deploy.sh (Beispiel)
#!/bin/bash
set -e
cd /app/gott
systemctl stop gott
dotnet publish -c Release -o publish
systemctl start gott
```
Beispiel systemd-Unit (`/etc/systemd/system/gott.service`):
```ini
[Unit]
Description=Gott
After=network.target
[Service]
Type=exec
WorkingDirectory=/app/gott
ExecStart=/app/gott/Build/Linux/publish/gott
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
```
---
## Projektstruktur
```
gott/
├── Program.cs # Startup, DI, Middleware, Routing
├── appsettings.json # Standard-Konfiguration
├── Models/ # Records (reine Daten)
├── Services/ # Business-Logic (Singletons)
├── Endpoints/ # HTTP API (Minimal API)
├── Middleware/ # Auth-Middleware
├── Templates/ # Vorlagen (IDENTITY.md, SOUL.md, USER.md)
├── wwwroot/ # Frontend (Vanilla JS SPA)
│ ├── js/ # App, Router, API, Chat, UI-Module (modular aufgeteilt), Pages
│ └── css/ # Styles (theme.css = CSS Variables)
├── WindowsApp/ # WPF + WebView2 Desktop Client
└── Build/ # Build-Output + Laufzeit-Daten
├── Linux/
│ ├── bin/
│ ├── obj/
│ └── publish/
└── Windows/
├── bin/
├── obj/
└── publish/
└── data/
├── gott.db # SQLite Datenbank
├── agents/{id}/ # Memory-Dateien pro Agent
├── skills/{slug}/ # Skill-Dateien
└── images/ # Krea-generierte Bilder
```
Ausführliche Dokumentation: [ARCHITECTURE.md](ARCHITECTURE.md) · Kurzreferenz: [ARCHITECTURE_QUICK.md](ARCHITECTURE_QUICK.md)
---
## Lizenz
Proprietär – Alle Rechte vorbehalten.