opensquilla--opensquilla
811 行
34 KiB
Markdown
811 行
34 KiB
Markdown
<!-- Übersetzt aus README.md @ 8794ffbe. Maßgeblich ist das englische README. -->
|
|
<!-- Aktualität prüfen: git log 8794ffbe..HEAD -- README.md -->
|
|
|
|
# OpenSquilla — Token-effizienter AI Agent
|
|
|
|
<p align="center">
|
|
<img src="assets/opensquilla-long-logo.png" alt="OpenSquilla logo" width="500">
|
|
</p>
|
|
|
|
<p align="center">
|
|
<b>Gleiches Budget – lass deinen Agent mehr und Besseres leisten.</b><br>
|
|
Mikrokernel-AI-Agent – intelligentes Routing, persistentes Gedächtnis, sichere Sandbox, integrierte Suche und lokale Embeddings.
|
|
</p>
|
|
|
|
<p align="center">
|
|
<a href="https://github.com/opensquilla/opensquilla/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/opensquilla/opensquilla/ci.yml?style=for-the-badge" alt="CI"></a>
|
|
<a href="https://opensquilla.ai/"><img src="https://img.shields.io/badge/website-opensquilla.ai-blue?style=for-the-badge" alt="Website"></a>
|
|
<a href="https://github.com/opensquilla/opensquilla/releases"><img src="https://img.shields.io/github/v/release/opensquilla/opensquilla?include_prereleases&style=for-the-badge" alt="GitHub release"></a>
|
|
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.12%2B-blue?style=for-the-badge" alt="Python 3.12+"></a>
|
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-blue?style=for-the-badge" alt="Apache 2.0 License"></a>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<a href="README.md">English</a> · <a href="README.zh-Hans.md">中文</a> · <a href="README.ja.md">日本語</a> · <a href="README.fr.md">Français</a> · <b>Deutsch</b> · <a href="README.es.md">Español</a>
|
|
</p>
|
|
|
|
> Dieses Dokument wurde aus dem englischen [`README.md`](README.md) übersetzt; bei Abweichungen ist die englische Fassung maßgeblich.
|
|
|
|
---
|
|
|
|
## Neuigkeiten
|
|
|
|
- 📢 **2026-07-03** — Unser technischer Bericht **[Agentic Routing: The Harness-Native Data Flywheel](docs/releases/agentic_routing_v0.pdf)** (Vorschau) ist erschienen und wurde zusammen mit OpenSquilla **0.5.0 Preview 1** veröffentlicht. Er beschreibt, wie der harness-native Router alltäglichen Agent-Traffic in ein sich selbst verbesserndes Daten-Schwungrad verwandelt.
|
|
|
|
---
|
|
|
|
## Überblick
|
|
|
|
OpenSquilla ist ein Token-effizienter Mikrokernel-AI-Agent. Ein lokaler
|
|
Modell-Router schickt jeden Turn an das günstigste Modell, das ihn
|
|
bewältigen kann; dauerhaftes Gedächtnis, eine geschichtete Sandbox,
|
|
integrierte Websuche und Embeddings auf dem Gerät ergänzen eine einzige
|
|
gemeinsame Turn-Schleife.
|
|
|
|
Jeder Einstiegspunkt — Web UI, CLI und Chat-Kanäle — läuft durch
|
|
dieselbe Schleife, sodass sich Tool-Dispatch, Wiederholungsversuche und
|
|
Entscheidungs-Logging überall identisch verhalten. Eine modulare
|
|
Provider-Schicht spricht mit TokenRhythm, OpenRouter, OpenAI, Anthropic, Ollama,
|
|
DeepSeek, Gemini, Qwen/DashScope und über 20 weiteren LLM-Providern —
|
|
ohne Änderung an deinem Code oder deinem Konfigurationsschema.
|
|
|
|
OpenSquilla 0.5.0 Preview 3 ist die aktuelle Preview-Version.
|
|
|
|
Für aufgabenorientierte Produktdokumentation beginnst du am besten mit
|
|
dem [OpenSquilla-Produktleitfaden](README.product.md) oder dem
|
|
[Dokumentationsindex](docs/README.md).
|
|
|
|
---
|
|
|
|
## Installation
|
|
|
|
OpenSquilla läuft unter Windows, macOS und Linux. Wähle den Weg, der zu
|
|
deinem Einsatzzweck passt.
|
|
|
|
Desktop-Installationsprogramme und die schnelle Terminal-Installation liefern dir
|
|
ein vorgefertigtes **Release** — kein
|
|
Git erforderlich. Die beiden anderen — Aus Quellcode installieren und
|
|
Aus Quellcode entwickeln — bauen **aus einem Git-Checkout** (`git clone`
|
|
+ Git LFS).
|
|
|
|
Release-Installationsbefehle verwenden veröffentlichte GitHub-Release-Assets.
|
|
Python-Wheel-Installationen verwenden versionsbehaftete Wheel-Dateinamen,
|
|
weil die Installationsprogramme die im Wheel-Dateinamen eingebettete
|
|
Version prüfen.
|
|
|
|
Für den Desktop-Einsatz von 0.5.0 Preview 3 bevorzugst du die gepackten
|
|
Desktop-Installationsprogramme aus dem GitHub-Release:
|
|
`OpenSquilla-0.5.0-rc3-mac-arm64.dmg` unter macOS und
|
|
`OpenSquilla-0.5.0-rc3-win-x64.exe` unter Windows.
|
|
|
|
| Weg | Zielgruppe | Wann verwenden |
|
|
| --- | --- | --- |
|
|
| [Desktop-Installationsprogramme](#desktop-installers) **(empfohlen für Desktop)** | macOS- und Windows-Nutzer | Gepackte Desktop-App |
|
|
| [Schnelle Terminal-Installation](#quick-terminal-install) **(empfohlen)** | Endnutzer auf jedem Betriebssystem | Release-Wheel aus dem Terminal |
|
|
| [Aus Quellcode installieren](#install-from-source) | Nutzer, die `main` verfolgen | Aus einem Checkout ausführen, nicht bearbeiten |
|
|
| [Aus Quellcode entwickeln](#develop-from-source) | Mitwirkende | Quellcode bearbeiten, testen oder debuggen |
|
|
|
|
### Voraussetzungen
|
|
|
|
| Anforderung | Schnelle Terminal-Installation | Aus Quellcode installieren | Aus Quellcode entwickeln |
|
|
| --- | :---: | :---: | :---: |
|
|
| Python 3.12+ | über `uv` | über `uv` oder System | über `uv` |
|
|
| Git + Git LFS | — | erforderlich | erforderlich |
|
|
| `uv` | wird bei Bedarf installiert | empfohlen | erforderlich |
|
|
|
|
Das Standardprofil `recommended` installiert **SquillaRouter** —
|
|
OpenSquillas Modell-Router auf dem Gerät — und seine Modell-Assets;
|
|
`OPENSQUILLA_INSTALL_PROFILE=core` lässt diese Abhängigkeiten weg. Das
|
|
separate Onboarding-Flag `--router disabled` behält die installierten
|
|
Abhängigkeiten bei, schaltet den Router aber zur Laufzeit ab.
|
|
|
|
Unter Windows benötigt die mit SquillaRouter gebündelte ONNX-Runtime
|
|
zusätzlich die Visual-C++-Runtime. Das PowerShell-Installationsprogramm für die
|
|
Quellcode-Installation installiert sie automatisch über `winget`; der Weg über die
|
|
**schnelle Terminal-Installation** (`uv tool install`) tut das nicht —
|
|
falls beim Start ein `DLL load failed`-Fehler protokolliert wird,
|
|
installiere sie manuell (siehe [Fehlerbehebung](#troubleshooting)).
|
|
OpenSquilla läuft mit direktem Single-Model-Routing weiter, bis sie
|
|
installiert ist.
|
|
|
|
Bei Terminal-Installationen unter macOS benötigt die LightGBM-Runtime
|
|
von SquillaRouter möglicherweise zusätzlich die OpenMP-Systembibliothek.
|
|
Die Desktop-App bringt die benötigte Runtime mit, aber die
|
|
**schnelle Terminal-Installation** installiert keine
|
|
Homebrew-/Systembibliotheken. Falls beim Start `Library not loaded:
|
|
@rpath/libomp.dylib` protokolliert wird, führe `brew install libomp` aus
|
|
und starte dann das Gateway neu. OpenSquilla läuft mit direktem
|
|
Single-Model-Routing weiter, bis sie installiert ist.
|
|
|
|
Installationslinks: [Git](https://git-scm.com/downloads) ·
|
|
[Git LFS](https://git-lfs.com/) ·
|
|
[uv](https://docs.astral.sh/uv/getting-started/installation/).
|
|
|
|
<a id="desktop-installers"></a>
|
|
|
|
### Desktop-Installationsprogramme
|
|
|
|
Die 0.5.0-Preview-3-Desktop-Installationsprogramme bündeln die Vue-Steuerkonsole
|
|
und die Gateway-Runtime in einer Electron-Hülle.
|
|
|
|
- macOS Apple Silicon: <https://github.com/opensquilla/opensquilla/releases/download/v0.5.0rc3/OpenSquilla-0.5.0-rc3-mac-arm64.dmg>
|
|
- Windows x64: <https://github.com/opensquilla/opensquilla/releases/download/v0.5.0rc3/OpenSquilla-0.5.0-rc3-win-x64.exe>
|
|
|
|
Beende vor dem Upgrade jede laufende OpenSquilla-Desktop-App.
|
|
Vorhandene `~/.opensquilla/config.toml` und Sitzungsdaten werden
|
|
weiterverwendet.
|
|
|
|
Führe beim Upgrade der Windows-Desktop-App von RC3 auf RC4 oder neuer das neue
|
|
Installationsprogramm direkt über der vorhandenen Installation aus. Deinstalliere
|
|
RC3 nicht zuerst: Das RC3-Deinstallationsprogramm kann Desktop-Benutzerdaten löschen.
|
|
Sichere vor dem Upgrade `%APPDATA%\OpenSquilla`. Installationsprogramme ab RC4
|
|
behalten Profildaten bei einer normalen Deinstallation bei.
|
|
|
|
<a id="quick-terminal-install"></a>
|
|
|
|
### Schnelle Terminal-Installation
|
|
|
|
Der empfohlene Weg unter Windows, macOS und Linux. `uv` installiert
|
|
OpenSquilla in eine eigene, isolierte Umgebung und verwaltet sein
|
|
eigenes Python — kein System-Python erforderlich. Dieser Weg
|
|
installiert nur veröffentlichte Releases; für `main`,
|
|
Entwicklungs-Branches oder lokale Checkouts nutze
|
|
[Aus Quellcode installieren](#install-from-source).
|
|
|
|
**1. `uv` installieren** — überspringen, falls `uv --version` bereits
|
|
funktioniert.
|
|
|
|
Linux / macOS:
|
|
|
|
```sh
|
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
. "$HOME/.local/bin/env"
|
|
```
|
|
|
|
Windows PowerShell:
|
|
|
|
```powershell
|
|
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
$env:Path = "$env:USERPROFILE\.local\bin;" + $env:Path
|
|
```
|
|
|
|
**2. OpenSquilla installieren** — derselbe Befehl auf jeder Plattform.
|
|
|
|
```sh
|
|
uv tool install --python 3.12 "opensquilla[recommended] @ https://github.com/opensquilla/opensquilla/releases/download/v0.5.0rc3/opensquilla-0.5.0rc3-py3-none-any.whl"
|
|
```
|
|
|
|
Damit wird das OpenSquilla-Wheel von der Release-URL installiert;
|
|
anschließend lässt `uv` die von den gewählten Extras deklarierten
|
|
Abhängigkeiten herunterladen. Das Standard-Extra `recommended` enthält
|
|
SquillaRouter-Runtime-Abhängigkeiten wie ONNX Runtime, LightGBM, NumPy
|
|
und tokenizers, sodass eine Erstinstallation Netzwerkzugriff benötigt,
|
|
sofern diese Wheels nicht bereits zwischengespeichert sind. `uv`
|
|
installiert keine nativen Systemruntimes wie macOS `libomp` oder das
|
|
Windows Visual C++ Redistributable; siehe
|
|
[Fehlerbehebung](#troubleshooting), falls die Router-Runtime einen
|
|
Ladefehler einer nativen Bibliothek meldet.
|
|
|
|
**3. Konfigurieren und ausführen.**
|
|
|
|
```sh
|
|
opensquilla onboard
|
|
opensquilla gateway run
|
|
```
|
|
|
|
> [!NOTE]
|
|
> Wird `opensquilla` direkt nach einer frischen `uv`-Installation nicht
|
|
> gefunden, öffne ein neues Terminal oder führe die PATH-Zeile aus
|
|
> Schritt 1 erneut aus.
|
|
|
|
Für eine vollständig festgelegte Installation verwende die
|
|
versionsbehaftete Wheel-URL:
|
|
`https://github.com/opensquilla/opensquilla/releases/download/v0.5.0rc3/opensquilla-0.5.0rc3-py3-none-any.whl`.
|
|
|
|
<a id="install-from-source"></a>
|
|
|
|
### Aus Quellcode installieren
|
|
|
|
Nutze diesen Weg, um OpenSquilla aus einem Checkout auszuführen, ohne
|
|
ihn zu bearbeiten. Der Klon dient dem Installationsprogramm nur als
|
|
Paketquelle; verwende nach der Installation den `opensquilla`-Befehl —
|
|
führe nicht `uv run` aus. Wähle stattdessen
|
|
[Aus Quellcode entwickeln](#develop-from-source), wenn du den Code
|
|
ändern möchtest.
|
|
|
|
1. **Mit LFS-Assets klonen**
|
|
|
|
```sh
|
|
git lfs install
|
|
git clone https://github.com/opensquilla/opensquilla.git
|
|
cd opensquilla
|
|
git lfs pull --include="src/opensquilla/squilla_router/models/**"
|
|
```
|
|
|
|
2. **Installationsprogramm ausführen**
|
|
|
|
**macOS / Linux**
|
|
|
|
```sh
|
|
bash scripts/install_source.sh
|
|
```
|
|
|
|
**Windows PowerShell**
|
|
|
|
```powershell
|
|
powershell -ExecutionPolicy Bypass -File ./scripts/install_source.ps1
|
|
```
|
|
|
|
Das Skript installiert `.[recommended]` (SquillaRouter + Gedächtnis +
|
|
lokale Modelle) über `uv tool install` in eine dedizierte
|
|
Benutzerumgebung und fällt auf `python -m pip install --user` zurück,
|
|
wenn `uv` nicht verfügbar ist. Öffne ein neues Terminal, falls
|
|
`opensquilla` nach der Installation nicht im `PATH` liegt.
|
|
|
|
3. **(optional) Fortgeschrittene Extras installieren.** Die meisten
|
|
Kanäle — Feishu, Telegram, DingTalk, QQ, WeCom, Slack und Discord —
|
|
funktionieren mit der Basisinstallation. Die optionalen Extras sind:
|
|
|
|
- `matrix` — Matrix-Kanal (zieht `matrix-nio` mit ein)
|
|
- `matrix-e2e` — Matrix-Kanal mit Ende-zu-Ende-Verschlüsselung
|
|
(erfordert libolm)
|
|
- `document-extras` — PDF-Erzeugung über WeasyPrint
|
|
|
|
```sh
|
|
OPENSQUILLA_INSTALL_EXTRAS=matrix bash scripts/install_source.sh # macOS / Linux
|
|
```
|
|
|
|
```powershell
|
|
powershell -ExecutionPolicy Bypass -File ./scripts/install_source.ps1 -Extras matrix # Windows
|
|
```
|
|
|
|
4. **Konfigurieren und ausführen** — siehe [Konfiguration](#configuration).
|
|
|
|
<details>
|
|
<summary>Aus Quellcode installieren — Terminal-Voraussetzungen und Installationsoptionen</summary>
|
|
|
|
**Voraussetzungen (Git, Git LFS, uv) aus einem Terminal installieren**
|
|
|
|
Windows PowerShell:
|
|
|
|
```powershell
|
|
winget install --id Git.Git -e
|
|
winget install --id GitHub.GitLFS -e
|
|
powershell -ExecutionPolicy Bypass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
|
git lfs install
|
|
```
|
|
|
|
macOS (Homebrew):
|
|
|
|
```sh
|
|
brew install git git-lfs uv
|
|
git lfs install
|
|
```
|
|
|
|
Debian / Ubuntu:
|
|
|
|
```sh
|
|
sudo apt update && sudo apt install -y git git-lfs
|
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
git lfs install
|
|
```
|
|
|
|
Unter Fedora verwende `sudo dnf install -y git git-lfs`; unter Arch
|
|
`sudo pacman -S --needed git git-lfs`; installiere `uv` anschließend mit
|
|
dem obigen `curl`-Befehl. PATH-Änderungen dieser Installationsprogramme
|
|
gelten für neue Terminal-Sitzungen.
|
|
|
|
**Umgebungsvariablen des Installationsprogramms und PATH-Prüfungen**
|
|
|
|
```sh
|
|
OPENSQUILLA_INSTALL_PROFILE=core bash scripts/install_source.sh # minimale Runtime, kein SquillaRouter
|
|
OPENSQUILLA_INSTALL_DRY_RUN=1 bash scripts/install_source.sh # nur den Plan ausgeben
|
|
```
|
|
|
|
Prüfe mit `command -v opensquilla` (macOS/Linux) oder
|
|
`where.exe opensquilla` (Windows), welches `opensquilla` deine Shell
|
|
tatsächlich ausführt. Liegt es nicht im `PATH`, führe
|
|
`uv tool update-shell` aus. Starte das Gateway nach einer
|
|
Neuinstallation aus einem lokalen Checkout neu, damit es das
|
|
aktualisierte Paket lädt.
|
|
|
|
</details>
|
|
|
|
<a id="develop-from-source"></a>
|
|
|
|
### Aus Quellcode entwickeln
|
|
|
|
Nutze diesen Weg, wenn du am Quellcode von OpenSquilla arbeitest:
|
|
Änderungen vornehmen, Tests ausführen oder Verhalten gegen diesen
|
|
Checkout debuggen. Es ist nicht der normale Installationsweg. Anders als
|
|
[Aus Quellcode installieren](#install-from-source) erfordert dieser Weg
|
|
`uv`: `uv sync` legt ein repository-lokales `.venv` an, und `uv run`
|
|
führt Befehle gegen die Dateien in diesem Checkout aus.
|
|
|
|
```sh
|
|
uv sync --extra recommended --extra dev
|
|
uv run opensquilla --help
|
|
```
|
|
|
|
Das Extra `recommended` enthält SquillaRouter auch für die Entwicklung;
|
|
das Extra `dev` installiert die Test-, Lint- und Typecheck-Werkzeuge.
|
|
Installiere zusätzliche Extras in dieselbe Umgebung, die du ausführst:
|
|
|
|
```sh
|
|
uv sync --extra recommended --extra dev --extra matrix
|
|
uv run opensquilla channels status matrix --json
|
|
```
|
|
|
|
Setze in diesem Modus jedem `opensquilla`-Befehl in der
|
|
[Konfiguration](#configuration) ein `uv run` voran. Debugge einen
|
|
Entwicklungs-Checkout nicht über einen benutzerlokalen
|
|
`opensquilla`-Befehl — dieser Befehl läuft in einer anderen
|
|
Python-Umgebung.
|
|
|
|
### Deinstallieren
|
|
|
|
Entferne OpenSquilla mit `opensquilla uninstall`. Standardmäßig bleiben
|
|
deine Daten erhalten und nur das Programm wird entfernt:
|
|
|
|
```sh
|
|
opensquilla uninstall --dry-run # vorab anzeigen, was entfernt und behalten würde
|
|
opensquilla uninstall # Programm entfernen, Daten behalten
|
|
```
|
|
|
|
Um auch Daten zu löschen, entscheide dich ausdrücklich dafür:
|
|
|
|
```sh
|
|
opensquilla uninstall --purge-state # Sitzungen, Logs, Cache, Scheduler, Gedächtnis
|
|
opensquilla uninstall --purge-config # config.toml und Geheimnisse (.env)
|
|
opensquilla uninstall --purge-all # alles (verlangt eine Eingabe zur Bestätigung)
|
|
```
|
|
|
|
Das laufende Gateway wird zuerst geleert und gestoppt, das Löschen
|
|
bleibt innerhalb des OpenSquilla-Stammverzeichnisses, und für
|
|
Docker-/Desktop-Installationen werden stattdessen geführte
|
|
Entfernungsschritte angeboten. Die vollständige Referenz findest du in
|
|
[`docs/cli.md`](docs/cli.md#uninstall).
|
|
|
|
---
|
|
|
|
## Installationsdatenschutz
|
|
|
|
OpenSquilla verwendet anonyme Installationstelemetrie, um
|
|
Installationszahlen, Versionsverbreitung und Laufzeitkompatibilität
|
|
abzuschätzen. Die Daten werden beim ersten Gateway-Start und einmal pro
|
|
OpenSquilla-Version gesendet. Uploads verwenden ein kurzes Timeout und
|
|
blockieren den Start nie.
|
|
|
|
Was gesendet wird:
|
|
|
|
- Schemaversion
|
|
- lokal erzeugter, stabiler `install_id`-Digest
|
|
- OpenSquilla-Version
|
|
- Ereignistyp (`install` oder `version_seen`)
|
|
- Installationsmethode (`pip`, `source`, `docker`, `desktop` oder
|
|
`unknown`)
|
|
- Betriebssystem, Betriebssystemversion, CPU-Architektur sowie
|
|
Python-Haupt-/Nebenversion
|
|
- Zeitstempel des ersten Auftretens und des Versands
|
|
- CI-/Testumgebungs-Marker (`ci_environment`)
|
|
|
|
Die `install_id` ist ein lokaler, einseitiger SHA-256-Digest, abgeleitet
|
|
aus nutzbaren MAC-Adressen, dann aus lokalen IP-Adressen, wenn keine MAC
|
|
verfügbar ist, mit einem zufälligen, dauerhaft gespeicherten Fallback.
|
|
Rohe MAC-/IP-Werte werden nicht hochgeladen.
|
|
|
|
Was nicht gesendet wird: Benutzernamen, Hostnamen, Pfade, API-Keys,
|
|
Provider-Konfiguration, Chat-/Sitzungs-/Gedächtnis-/Agent-Inhalte,
|
|
Dateinamen oder Dateiinhalte. Die Quell-IP kann für HTTP-Server auf der
|
|
Transportschicht sichtbar sein, ist aber nicht Teil der Nutzlast.
|
|
|
|
Zum Deaktivieren:
|
|
|
|
```sh
|
|
OPENSQUILLA_TELEMETRY_DISABLED=true
|
|
```
|
|
|
|
Fortgeschrittene Deployments können einen eigenen Endpunkt verwenden:
|
|
|
|
```sh
|
|
OPENSQUILLA_TELEMETRY_ENDPOINT=https://example.com/v1/install
|
|
```
|
|
|
|
---
|
|
|
|
<a id="configuration"></a>
|
|
|
|
## Konfiguration
|
|
|
|
### Ersteinrichtung
|
|
|
|
`opensquilla onboard` ist der interaktive Assistent für die
|
|
Ersteinrichtung. Er schreibt die aktive Konfigurationsdatei und behält
|
|
Provider-Geheimnisse in Umgebungsvariablen, wenn du `--api-key-env`
|
|
angibst. Der Router ist standardmäßig auf `recommended` gesetzt
|
|
(SquillaRouter auf unterstützten Providern); gib `--router disabled` an
|
|
für direktes Single-Model-Routing.
|
|
|
|
```sh
|
|
opensquilla onboard # vollständiger interaktiver Assistent
|
|
opensquilla onboard --if-needed # idempotent: sicher für Skripte und Neuinstallationen
|
|
opensquilla onboard --minimal # nur Provider; Kanäle und Suche überspringen
|
|
opensquilla onboard status # jeden Einrichtungsabschnitt prüfen, ohne zu schreiben
|
|
```
|
|
|
|
Verwende in SSH, CI oder jeder Umgebung ohne TTY die nicht-interaktive
|
|
Form — behalte das Geheimnis in der Umgebung und übergib seinen
|
|
**Namen**, nicht seinen Wert:
|
|
|
|
**Linux / macOS**
|
|
|
|
```sh
|
|
export OPENROUTER_API_KEY="sk-..."
|
|
opensquilla onboard --provider openrouter --api-key-env OPENROUTER_API_KEY
|
|
```
|
|
|
|
**Windows PowerShell**
|
|
|
|
```powershell
|
|
$env:OPENROUTER_API_KEY="sk-..."
|
|
opensquilla onboard --provider openrouter --api-key-env OPENROUTER_API_KEY
|
|
```
|
|
|
|
OpenRouter ist nur ein Beispiel — ersetze es durch einen beliebigen
|
|
unterstützten Provider und dessen API-Key-Variable.
|
|
|
|
Konfiguriere später einen einzelnen Abschnitt neu, ohne den gesamten
|
|
Assistenten zu wiederholen (diese Beispiele setzen voraus, dass der
|
|
betreffende API-Key bereits in der Umgebung vorhanden ist):
|
|
|
|
```sh
|
|
opensquilla configure provider --provider openai --model gpt-4o --api-key-env OPENAI_API_KEY
|
|
opensquilla configure router --router recommended
|
|
opensquilla configure search --search-provider duckduckgo
|
|
opensquilla configure search --search-provider exa --api-key-env EXA_API_KEY
|
|
opensquilla configure channels
|
|
```
|
|
|
|
Abschnitte: `provider`, `router`, `channels`, `search`,
|
|
`image-generation`, `memory-embedding`. Die Web UI stellt denselben
|
|
Katalog und dasselbe Statusmodell unter `/control/setup` bereit:
|
|
Provider und Router sind der schnelle Weg, während Channels, Search,
|
|
Image generation und Memory embedding im Capability Center liegen und
|
|
später konfiguriert werden können. Leere Kanäle gelten als bewusstes
|
|
Auslassen, nicht als fehlgeschlagene Einrichtung.
|
|
|
|
**Ladereihenfolge der Konfiguration:** `OPENSQUILLA_GATEWAY_CONFIG_PATH`
|
|
→ `./opensquilla.toml` → `~/.opensquilla/config.toml` → eingebaute
|
|
Standardwerte. Umgebungswerte einzelner Geheimnisse haben stets Vorrang
|
|
vor Dateiwerten.
|
|
|
|
### Von OpenClaw oder Hermes Agent migrieren
|
|
|
|
Falls du bereits Zustandsdaten unter `~/.openclaw` oder `~/.hermes`
|
|
hast, führe zuerst einen Probelauf aus, um den Migrationsbericht zu
|
|
prüfen, und wende ihn dann ausdrücklich an:
|
|
|
|
```sh
|
|
opensquilla migrate openclaw --json
|
|
opensquilla migrate openclaw --apply
|
|
|
|
opensquilla migrate hermes --json
|
|
opensquilla migrate hermes --apply
|
|
```
|
|
|
|
Verwende `opensquilla migrate --source openclaw,hermes --apply`, um
|
|
beide Standard-Stammverzeichnisse zu importieren. Füge
|
|
`--migrate-secrets` erst hinzu, nachdem du den Probelaufbericht geprüft
|
|
hast. Für benutzerdefinierte Pfade und Konfliktbehandlung siehe
|
|
[`MIGRATION.md`](MIGRATION.md).
|
|
|
|
### Ausführen
|
|
|
|
```sh
|
|
opensquilla gateway run # Vordergrund, 127.0.0.1:18791
|
|
opensquilla gateway start --json # Hintergrund + Warten auf Health
|
|
opensquilla chat # interaktive REPL
|
|
opensquilla agent -m "dein Prompt" # einmalig, automatisierungsfreundlich
|
|
```
|
|
|
|
Öffne die Web UI unter <http://127.0.0.1:18791/control/>. Die Ansicht
|
|
**Health** zeigt, ob OpenSquilla bereit ist, was nicht bereit ist und
|
|
die nächsten Schritte zur Wiederherstellung. Führe in der CLI aus:
|
|
|
|
```sh
|
|
opensquilla doctor
|
|
opensquilla doctor --json
|
|
opensquilla doctor --config ./opensquilla.toml --json
|
|
```
|
|
|
|
`/health` und `/healthz` sind leichtgewichtige Liveness-Endpunkte für
|
|
Prozessprüfungen. `opensquilla doctor` und die Health-Ansicht der Web UI
|
|
sind die Readiness-Oberflächen für Provider-Konfiguration, Gedächtnis,
|
|
Logs, Suche, Kanäle, Sandbox-Haltung, Router, Bildgenerierung und
|
|
Wiederherstellungshinweise. Drücke `Ctrl+C`, um ein Vordergrund-Gateway
|
|
zu stoppen.
|
|
|
|
Weitere Befehlsgruppen sind unter anderem `sessions`, `skills`,
|
|
`memory`, `migrate`, `cron`, `channels`, `providers`, `models` und
|
|
`cost`. Führe `opensquilla --help` oder `opensquilla <gruppe> --help`
|
|
für Details aus.
|
|
|
|
<details>
|
|
<summary>Fortgeschrittene Konfiguration — einen Kanal verifizieren, Bindung ans öffentliche Netz, Docker</summary>
|
|
|
|
**Einen Messaging-Kanal verbinden und verifizieren**
|
|
|
|
Das Speichern eines Kanals ist eine Konfigurationsänderung, kein Beleg
|
|
für die Konnektivität zur Laufzeit. Starte das Gateway nach
|
|
Kanal-Änderungen neu und verifiziere dann den aktiven Kanal:
|
|
|
|
```sh
|
|
opensquilla gateway restart
|
|
opensquilla channels status <name> --json
|
|
```
|
|
|
|
Betrachte einen Kanal nur dann als verbunden, wenn die Status-Nutzlast
|
|
`enabled=true`, `configured=true` und `connected=true` meldet. Feishu
|
|
verwendet standardmäßig den Websocket-Modus, Telegram Polling, und Slack
|
|
kann den Socket Mode nutzen — keiner dieser Modi benötigt eine
|
|
öffentliche URL. Der Feishu-Webhook-Modus, der Telegram-Webhook-Modus,
|
|
der Slack-Webhook-Modus und WeCom erfordern eine öffentliche, vom
|
|
Provider erreichbare URL.
|
|
|
|
**Bindung ans öffentliche Netz**
|
|
|
|
Um die Web UI von einer anderen Maschine zu erreichen, binde das Gateway
|
|
an alle Schnittstellen und verwende die öffentliche IP des Hosts:
|
|
|
|
```sh
|
|
opensquilla gateway run --listen 0.0.0.0 --port 18791
|
|
```
|
|
|
|
Öffentlicher Zugriff erfordert außerdem, dass die Host-Firewall oder die
|
|
Cloud-Sicherheitsgruppe eingehendes TCP auf diesem Port erlaubt. Mache
|
|
das Gateway nicht mit `[auth] mode = "none"` öffentlich zugänglich —
|
|
konfiguriere Token-Authentifizierung, bevor du an `0.0.0.0` bindest.
|
|
|
|
**Docker**
|
|
|
|
Vorgebaute Multi-Arch-Images (`amd64`/`arm64`) werden mit jedem
|
|
Release-Tag auf `ghcr.io/opensquilla/opensquilla` veröffentlicht —
|
|
[`docs/docker.md`](docs/docker.md) ist der vollständige
|
|
Container-Leitfaden (Heimserver und NAS, LAN-Zugriff mit
|
|
Token-Authentifizierung, Upgrades):
|
|
|
|
```sh
|
|
OPENSQUILLA_GATEWAY_IMAGE=ghcr.io/opensquilla/opensquilla:latest docker compose up -d
|
|
```
|
|
|
|
Ohne `OPENSQUILLA_GATEWAY_IMAGE` führt der Compose-Weg ein
|
|
`opensquilla:local`-Image aus, das du selbst
|
|
baust. Baue es aus einem Quellcode-Checkout mit den per Git LFS
|
|
geholten Router-Assets (Klon und `git lfs pull` siehe
|
|
[Aus Quellcode installieren](#install-from-source)):
|
|
|
|
```sh
|
|
docker build -t opensquilla:local .
|
|
```
|
|
|
|
`./start.sh` (oder `start.ps1` unter Windows) führt dann
|
|
`docker compose up -d` aus und folgt den Gateway-Logs. Docker erspart
|
|
eine Python-Toolchain auf dem Host — nicht den lokalen Image-Build.
|
|
|
|
</details>
|
|
|
|
Provider-Tiers, Sandbox-Feinabstimmung, Bildgenerierung und
|
|
Nebenläufigkeitseinstellungen liegen in `opensquilla.toml.example`.
|
|
|
|
---
|
|
|
|
## Neuerungen in 0.4.1
|
|
|
|
OpenSquilla 0.4.1 ist ein Wartungsrelease für die Desktop- und
|
|
Control-UI-Linie:
|
|
|
|
- **Desktop-Zuverlässigkeit** – die Prüfungen des gepackten Gateways
|
|
decken nun den Coding-Modus, `code-task` und den SquillaRouter-Start
|
|
ab, und das Handling von Desktop-Fenstern/Artefakten ist stabiler.
|
|
- **Sechssprachige Client-Unterstützung** – die Control UI und der
|
|
Desktop-Client unterstützen Englisch, vereinfachtes Chinesisch,
|
|
Japanisch, Französisch, Deutsch und Spanisch über First-Paint- und
|
|
Einstellungsoberflächen hinweg.
|
|
- **Coding-Modus und Router-Paketierung** – Desktop-Builds schlagen
|
|
schnell fehl, wenn Router-Assets fehlen oder noch Git-LFS-Pointer sind,
|
|
und verhindern so beeinträchtigte Release-Pakete.
|
|
- **Telemetrie und Windows-Feinschliff** – die Installationstelemetrie
|
|
überspringt CI- und Testumgebungen, und Windows-Desktop-Assets
|
|
verwenden das OpenSquilla-Logo.
|
|
- **Mainline-Governance** – gewöhnliche Pull Requests und die
|
|
Release-Integration sind um `main` herum ausgerichtet, während
|
|
Maintainer-Branches für Release-, Hotfix-, Staging-, Integrations- und
|
|
Sandbox-Arbeit reserviert sind.
|
|
|
|
Vollständige Hinweise: [`CHANGELOG.md`](CHANGELOG.md) ·
|
|
[`docs/releases/0.4.1.md`](docs/releases/0.4.1.md).
|
|
|
|
## Neuerungen in 0.2.1
|
|
|
|
OpenSquilla 0.2.1 ist ein Wartungsrelease mit Fokus auf den Start von
|
|
Release-Paketen und die Zuverlässigkeit langlaufender Agents:
|
|
|
|
- **Windows-Portable-Start** – der Portable-Launcher erkennt und bootet
|
|
die vom gebündelten ONNX-Router benötigte Visual-C++-Runtime besser.
|
|
- **Langlaufende Agent-Turns** – tool-intensive WebUI-Sitzungen erholen
|
|
sich sauberer von überdimensionierten Tool-Ergebnissen, fehlerhaften
|
|
Tool-Aufrufen, Übergaben bei der Artefaktauslieferung und
|
|
beeinträchtigten finalen Antworten.
|
|
- **Sauberere WebUI-Ausgabe** – generierte Artefaktmarker werden aus dem
|
|
normalen Chat-Replay herausgehalten, während ausgelieferte Dateien
|
|
sichtbar bleiben.
|
|
- **Bewertung des Gedächtnisabrufs** – lokale und OpenAI-kompatible
|
|
Embedding-Vektoren werden vor der semantischen Suche normalisiert, und
|
|
starke Stichwort-Treffer bleiben nutzbar, wenn Vektorwerte niedrig
|
|
sind.
|
|
|
|
Vollständige Hinweise: [`CHANGELOG.md`](CHANGELOG.md) ·
|
|
[Release-Notizen](https://opensquilla.ai/news/).
|
|
|
|
## Neuerungen in 0.2.0
|
|
|
|
Dieses Release erweitert OpenSquilla über Migration, CLI-Chat, Kanäle,
|
|
Scheduling und langlaufende Tool-Arbeit hinweg:
|
|
|
|
- **Migrationsweg aus bestehenden Agent-Stammverzeichnissen** –
|
|
`opensquilla migrate` zeigt Importe aus bestehenden
|
|
OpenClaw-/Hermes-Stammverzeichnissen in der Vorschau und führt sie
|
|
aus, einschließlich Gedächtnis, Persona-Dateien, Skills,
|
|
MCP-/Kanal-Konfiguration, Konfliktbehandlung und Migrationsberichten.
|
|
- **Nutzbare Chat-CLI** – `opensquilla chat` hat eine stabile
|
|
Terminal-UI, Streaming-Ausgabe, Eingabe-Queue, Slash-Modus-Discovery,
|
|
Tool-/Status-Leisten und ein deterministischeres Verhalten der
|
|
Live-Eingabeaufforderung.
|
|
- **Oberflächenübergreifende Cron-Automatisierung** – Cron-Jobs decken
|
|
nun strukturierte Zeitpläne, zeitzonenbewusste Exact-/Every-/Cron-Läufe,
|
|
Kanal- oder Webhook-Auslieferung, Fehlerziele, manuelle Läufe und
|
|
WebUI-/CLI-/RPC-Parität ab.
|
|
- **Bessere Feishu- und Discord-Kanäle** – Kanal-Adapter legen
|
|
klarere Capability-Metadaten, sichereres DM-/Gruppen-Handling, native
|
|
Datei- und Artefaktpfade sowie verbessertes Anhang-/Thread-Verhalten
|
|
offen, während privilegierte Aktionen abgegrenzt bleiben.
|
|
- **Robustere langlaufende Turns** – fehlgeschlagene Turns werden aus dem
|
|
Provider-Replay herausgehalten, fehlerhafte Tool-Aufrufe werden
|
|
sicherer behandelt, und freigabepflichtige Wiederholungen warten auf
|
|
die Entscheidung der Operatoren.
|
|
- **Intelligenteres Kontext- und Tool-Budgeting** –
|
|
Provider-Budget-Kompaktierung, Bewahrung des Prompt-Caches,
|
|
begrenzte Tool-Ergebnisse und nebenwirkungsbewusste Nebenläufigkeit
|
|
machen große, tool-intensive Sitzungen vorhersehbarer.
|
|
- **Feinschliff bei Web UI und Release** – Aktualitätssortierung,
|
|
Tabellenlayout, mobile Steuerelemente, doppelte Benachrichtigungen,
|
|
Einrichtungsformulare, Release-URLs und Installationswege wurden für
|
|
0.2.0 nachgeschärft.
|
|
|
|
Vollständige Hinweise: [`CHANGELOG.md`](CHANGELOG.md) ·
|
|
[Release-Notizen](https://opensquilla.ai/news/).
|
|
|
|
---
|
|
|
|
## Hauptfunktionen
|
|
|
|
| Fähigkeit | Was sie leistet |
|
|
| --- | --- |
|
|
| **Token-effizientes Routing** | `SquillaRouter` — ein lokaler LightGBM-+-ONNX-Klassifizierer im Extra `recommended` — bewertet jeden Turn nach Länge, Sprache, Code, Stichwörtern und semantischen Embeddings und routet ihn dann über vier Tiers (C0–C3; die alten Namen T0–T3 sind Aliase) zum günstigsten leistungsfähigen Modell. Die Klassifizierung läuft auf dem Gerät; dein Prompt verlässt die Maschine für diese Entscheidung nie. |
|
|
| **Adaptives Reasoning und Prompts** | OpenSquilla fordert erweitertes Reasoning nur für Turns an, die der Router als komplex bewertet, und der System-Prompt skaliert mit der Aufgabenkomplexität — schlank für triviale Turns, vollständige Anweisungen für komplexe. |
|
|
| **Über 20 LLM-Provider** | Die Provider-Registry zielt auf über 20 LLM-Backends — TokenRhythm, OpenRouter, OpenAI, Anthropic, Ollama, DeepSeek, Gemini, DashScope/Qwen, Moonshot, Mistral, Groq, Zhipu, SiliconFlow, vLLM, LM Studio und mehr — mit Primär-plus-Fallback-Auswahl; das Erst-Onboarding legt die verifizierte Teilmenge offen. |
|
|
| **Bedarfsgesteuerte Skills und MCP** | 15 gebündelte Skills (Coding, GitHub, Cron, pptx/docx/xlsx/pdf, Zusammenfassung, tmux, Wetter und mehr) werden nur geladen, wenn die Aufgabe sie braucht. OpenSquilla ist ein MCP-Client und kann auch als MCP-Server laufen — `opensquilla mcp-server run` benötigt das Extra `mcp` (installiere `opensquilla[recommended,mcp]`). Skills lassen sich über die CLI erstellen, installieren und veröffentlichen. |
|
|
| **Dauerhaftes lokales Gedächtnis** | Eine kuratierte `MEMORY.md` plus datierte Markdown-Notizen, durchsucht mit SQLite-Volltext-Stichwortsuche und `sqlite-vec`-Semantikabruf. Embeddings laufen über gebündeltes ONNX auf dem Gerät oder wechseln zu OpenAI/Ollama. Optionaler exponentieller Decay und eine aktivierbare „Dream“-Konsolidierung sind verfügbar. |
|
|
| **Geschichtete Sicherheits-Sandbox** | Drei Richtlinien-Tiers (Standard / Strict / Locked) auf einer Berechtigungsmatrix. Bubblewrap isoliert die Codeausführung unter Linux; das macOS-Seatbelt-Backend rendert derzeit nur Profile (Ausführung ausstehend), und unter Windows gibt es noch kein Sandbox-Backend. Ein Denial-Ledger pausiert autonome Läufe nach wiederholten Ablehnungen automatisch, abgelehnte Ausgaben werden verworfen, und Skill-Metadaten sowie Tool-Ergebnisse werden gegen Prompt-Injection XML-escaped. |
|
|
| **Integrierte Tools** | Datei lesen/schreiben/bearbeiten, Shell- und Hintergrundprozesse, Git, Websuche (DuckDuckGo, Bocha, Brave, Tavily oder Exa) und Fetch hinter einem SSRF-Schutz, Tabellen-/PPTX-/PDF-Erstellung, Bildgenerierung und Text-to-Speech. |
|
|
| **Einheitliches Gateway** | Ein Starlette-ASGI-Server unter `127.0.0.1:18791` mit WebSocket-RPC und einer eingebetteten Steuerkonsole (`/control/`). Web UI, CLI und Kanäle für Terminal, WebSocket, Slack, Telegram, Discord, Feishu, DingTalk, WeCom, Matrix und QQ teilen sich alle einen `TurnRunner`. |
|
|
| **Dauerhafte Sitzungen, Subagents und Scheduling** | SQLite-gestützte Speicherung von Sitzungen, Transkripten und Replays mit Arbeitsbereichen pro Agent. Agents starten tiefenbegrenzte Subagents, und eine `SchedulerEngine` mit einem in den Code integrierten Cron-Parser führt wiederkehrende Jobs über `opensquilla cron` aus. |
|
|
| **Operator-Steuerung** | Human-in-the-Loop-Freigaben können sensible Tool-Aufrufe für eine Entscheidung pausieren; Token- und Kostenaufstellungen pro Turn und pro Sitzung (`opensquilla cost`) sowie Diagnosen sind über CLI und Web UI verfügbar. |
|
|
|
|
MetaSkill-Doku: [`docs/features/meta-skills.md`](docs/features/meta-skills.md),
|
|
[`docs/features/meta-skill-user-guide.md`](docs/features/meta-skill-user-guide.md)
|
|
und [`docs/authoring/meta-skills.md`](docs/authoring/meta-skills.md).
|
|
|
|
---
|
|
|
|
## Benchmark-Ergebnisse
|
|
|
|
PinchBench-1.2.1-Durchschnittsergebnisse über 25 Aufgaben:
|
|
|
|
| Agent | Basismodell | Ø-Score | Eingabe-Tokens gesamt | Ausgabe-Tokens gesamt | Gesamtkosten |
|
|
| --- | ---: | ---: | ---: | ---: | ---: |
|
|
| OpenSquilla | Modell-Router (Opus4.7, GLM5.1, DS4 Flash) | 0.9251 | 1,721,328 | 61,475 | $0.688 |
|
|
| OpenClaw | Claude Opus 4.7 | 0.9255 | 3,066,243 | 50,890 | $6.233 |
|
|
|
|
Der Score ist der Mittelwert über die 25 Aufgaben; Token-Zahlen und
|
|
Kosten sind Summen für den gesamten Lauf.
|
|
|
|
---
|
|
|
|
<a id="troubleshooting"></a>
|
|
|
|
## Fehlerbehebung
|
|
|
|
<details>
|
|
<summary>macOS: <code>Library not loaded: @rpath/libomp.dylib</code></summary>
|
|
|
|
Wenn beim Start `Library not loaded: @rpath/libomp.dylib` aus
|
|
`lightgbm/lib/lib_lightgbm.dylib` protokolliert wird, läuft OpenSquilla
|
|
mit direktem Single-Model-Routing weiter, aber die gebündelte
|
|
`SquillaRouter`-Runtime bleibt inaktiv, bis die macOS-OpenMP-Runtime
|
|
installiert ist.
|
|
|
|
Die Desktop-App bringt die benötigte native Runtime mit. Wenn
|
|
du die schnelle Terminal-Installation oder eine Quellcode-Installation
|
|
aus einer Shell verwendet hast, installiere `libomp` mit Homebrew und
|
|
starte das Gateway neu:
|
|
|
|
```sh
|
|
brew install libomp
|
|
opensquilla gateway restart
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Windows: <code>DLL load failed</code> / Visual-C++-Runtime</summary>
|
|
|
|
Wenn beim Start `DLL load failed while importing
|
|
onnxruntime_pybind11_state` protokolliert wird, läuft OpenSquilla mit
|
|
direktem Single-Model-Routing weiter, aber die gebündelte
|
|
`SquillaRouter`-Runtime bleibt inaktiv, bis das Visual C++
|
|
Redistributable für Visual Studio 2015–2022 (x64) installiert ist.
|
|
|
|
Das PowerShell-Installationsprogramm für die Quellcode-Installation versucht,
|
|
das Redistributable über `winget` zu installieren. Wenn du die schnelle Terminal-Installation
|
|
verwendet hast oder `winget` nicht verfügbar ist, installiere es manuell
|
|
und starte PowerShell neu:
|
|
<https://aka.ms/vs/17/release/vc_redist.x64.exe>. Stelle anschließend den
|
|
empfohlenen Router wieder her:
|
|
|
|
```powershell
|
|
opensquilla onboard --provider openrouter --api-key-env OPENROUTER_API_KEY --router recommended
|
|
opensquilla gateway restart
|
|
```
|
|
|
|
</details>
|
|
|
|
---
|
|
|
|
## Danksagungen
|
|
|
|
OpenSquilla ist inspiriert von
|
|
[OpenClaw](https://github.com/openclaw/openclaw). Gebündelte
|
|
Drittanbieter-Inhalte sind in
|
|
[`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md) ausgewiesen.
|
|
|
|
Community-Mitwirkende werden in
|
|
[`CONTRIBUTORS.md`](CONTRIBUTORS.md) gewürdigt, einschließlich
|
|
release-spezifischer Attributionshinweise für squash-gemergte oder
|
|
wiedergespielte Arbeit.
|
|
|
|
---
|
|
|
|
## Mitwirkende
|
|
|
|
Dank an alle, die zu OpenSquilla beitragen.
|
|
|
|
<p align="center">
|
|
<a href="https://github.com/opensquilla/opensquilla/graphs/contributors">
|
|
<img src="https://contrib.rocks/image?repo=opensquilla/opensquilla&max=100&columns=10" alt="OpenSquilla contributors" />
|
|
</a>
|
|
</p>
|
|
|
|
---
|
|
|
|
## Mitwirken
|
|
|
|
Beiträge jeder Art sind willkommen — Fehlerberichte, Funktionsideen,
|
|
Dokumentation, neue Provider- oder Kanal-Adapter, Skills und Arbeit an
|
|
der Kern-Runtime. Siehe [`CONTRIBUTING.md`](CONTRIBUTING.md) und
|
|
eröffne dann ein Issue oder einen Pull Request auf
|
|
[GitHub](https://github.com/opensquilla/opensquilla).
|
|
|
|
[Verhaltenskodex](CODE_OF_CONDUCT.md) · [Sicherheit](SECURITY.md) ·
|
|
[Support](SUPPORT.md) · [Lizenz](LICENSE) (Apache-2.0)
|