URL-Format
AISCouncil kodiert Bot-Konfigurationen direkt in das URL-Fragment (den Teil nach #). Das bedeutet, dass Teilen eines Bots so einfach ist wie Teilen eines Links – kein Server, keine Datenbank, kein Konto erforderlich. Die URL ist der Bot.
Wie Bot-URLs funktionieren
Wenn Sie einen Bot teilen, nimmt die App die gesamte Bot-Konfiguration – Name, Anbieter, Modell, System-Prompt, Temperatur und alle anderen Einstellungen – und komprimiert sie in einen kompakten String, der im URL-Fragment lebt.
https://aiscouncil.net/#B{base80_payload}
Der Browser sendet das Fragment niemals an einen Server (dies ist Teil der HTTP-Spezifikation), daher bleibt die Konfiguration vollständig clientseitig.
URL-Struktur
Eine Bot-URL hat drei Teile:
| Teil | Beispiel | Zweck |
|---|---|---|
| Basis-URL | https://aiscouncil.net/ | Die App selbst |
# | # | Fragment-Trenner (nie an Server gesendet) |
| VLQ-Präfix + Payload | BeLT1Qx9k... | Versions-Byte + komprimierte Konfiguration |
Das VLQ-Versions-Präfix
Das/die erste(n) Zeichen des Fragments identifizieren die Kodierungsversion mittels Variable-Length-Quantity (VLQ)-Kodierung:
| Präfix | Version | Inhaltstyp |
|---|---|---|
A | 0 | Editor-Inhalt (verwendet von aiscouncil.net/s/) |
B | 1 | Bot-Konfiguration |
C | 2 | PDL-Page-Spec |
Das B-Präfix teilt der App mit: "Dies ist eine Bot-Konfiguration, kodiert mit Version 1 des Codecs." Zukünftige Versionen können neue Formate hinzufügen, ohne bestehende URLs zu brechen.
Base80-Kodierung
Nach dem Versions-Präfix wird der Payload mit einem benutzerdefinierten Base80-Alphabet kodiert. Dieses Alphabet wurde gewählt, um die URL-Dichte zu maximieren, während nur Zeichen verwendet werden, die in URL-Fragmenten ohne Prozentkodierung sicher sind:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~$&'()*+,;=:@/?
Base80 ist effizienter als Base64 für URL-Fragmente, da es 80 Zeichen statt 64 verwendet und mehr Daten pro Zeichen packt.
Komprimierung
Vor der Base80-Kodierung wird das Bot-Konfigurations-JSON mit deflate-raw komprimiert (über die native CompressionStream-API des Browsers). Dies reduziert eine Bot-Konfiguration typischerweise auf 30-60% ihrer ursprünglichen Größe. Die Komprimierung ist verlustfrei und die Dekomprimierung verwendet die native DecompressionStream des Browsers.
Kodierungs-Pipeline
Bot-Konfiguration (JSON) --> UTF-8-Bytes --> Deflate-raw komprimieren --> Base80 kodieren --> VLQ-Präfix
Schritt für Schritt:
- Das Bot-Konfigurations-Objekt wird zu JSON serialisiert
- Der JSON-String wird zu UTF-8-Bytes kodiert
- Die Bytes werden mit deflate-raw komprimiert (native
CompressionStream) - Die komprimierten Bytes werden zu Base80-Zeichen kodiert
- Das VLQ-Versions-Präfix (
B) wird vorangestellt
Die Dekodierung kehrt den Prozess exakt um.
Bot-Konfigurations-Schema
Die Konfiguration verwendet kurze Ein-Buchstaben-Schlüssel, um die komprimierte Größe zu minimieren:
| Schlüssel | Typ | Beschreibung | Standard |
|---|---|---|---|
n | string | Bot-Anzeigename | "Neuer Bot" |
p | string | Anbieter-ID (anthropic, openai, xai, gemini, openrouter, ollama, etc.) | Erforderlich |
m | string | Modell-ID (z.B. claude-sonnet-4-20250514, gpt-4o) | Erforderlich |
s | string | System-Prompt | "" |
t | number | Temperatur (0-2) | 0.7 |
x | integer | Max. Output-Tokens | 4096 |
re | string | Reasoning-Aufwand (low, medium, high, max, oder numerisches Budget) | — |
tp | number | Top P (0-1) | 1 |
fp | number | Frequency Penalty (0-2) | 0 |
pp | number | Presence Penalty (0-2) | 0 |
se | integer | Seed (für reproduzierbare Outputs) | — |
st | array | Stop-Sequenzen | — |
rf | string | Antwortformat (text oder json) | "text" |
auth | integer | Zugriffskontrolle: 1 = öffentlich (kein Login erforderlich) | — |
icon | string | Bot-Icon (Emoji) | — |
d | string | Bot-Beschreibung | — |
color | string | Bot-Akzentfarbe (Hex) | "#7c3aed" |
k | string | Pro-Bot-API-Schlüssel (lokal gespeichert, nie in URL) | — |
c | object | Council-Konfiguration (für Multi-Modell-Bots) | — |
pf | string | Profil-Referenz-ID | — |
cl | integer | Kontextlänge (Nachrichtenverlauf-Limit) | — |
sm | boolean | Streaming aktiviert | true |
at | boolean | Auto-Titel für Konversationen | false |
mr | boolean | Markdown-Rendering aktiviert | true |
stc | boolean | Token-Anzahl anzeigen | false |
Nur Nicht-Standard-Werte werden in die Konfiguration aufgenommen, um die URL-Länge zu minimieren.
Was NICHT in der URL ist
API-Schlüssel sind niemals in URLs enthalten. Das k-Feld (Pro-Bot-API-Schlüssel) wird während der URL-Kodierung entfernt. Schlüssel werden nur im localStorage des Browsers gespeichert und nur an den API-Endpunkt des LLM-Anbieters gesendet.
Folgendes ist von geteilten URLs ausgeschlossen:
- API-Schlüssel – Empfänger müssen ihre eigenen bereitstellen
- Chat-Verlauf – nur die Bot-Konfiguration wird geteilt
- Memory-Einträge – pro-Bot persistenter Speicher bleibt lokal
- Nutzungsstatistiken – Tracking-Daten sind gerätelokal
Editor-URLs
Der Web-Editor unter aiscouncil.net/s/ verwendet dasselbe Kodierungssystem mit einem anderen Versions-Präfix:
https://aiscouncil.net/s/#A{base80_payload}
Das A-Präfix kennzeichnet Version 0 (Editor-Inhalt). Der Payload enthält den komprimierten Dokumentinhalt statt einer Bot-Konfiguration.
Programmatische Kodierung und Dekodierung
Sie können Bot-Konfigurationen programmatisch mit dem AIS.Codec-Modul in der Browser-Konsole kodieren und dekodieren:
Eine URL dekodieren
// Aus URL-Hash dekodieren
const hash = location.hash.slice(1); // Das '#' entfernen
const config = await AIS.Codec.decodeBotConfig(hash);
console.log(config);
// { n: "Mein Bot", p: "anthropic", m: "claude-sonnet-4-20250514", s: "Du bist hilfreich.", t: 0.7, x: 4096 }
Eine Konfiguration kodieren
const config = {
n: "Forschungsassistent",
p: "anthropic",
m: "claude-sonnet-4-20250514",
s: "Du bist ein gründlicher Forschungsassistent. Zitiere Quellen.",
t: 0.3,
x: 8192,
};
const hash = await AIS.Codec.encodeBotConfig(config);
const url = location.origin + "/#" + hash;
console.log(url);
// https://aiscouncil.net/#BeLT1Qx9k...
Das Schema inspizieren
console.log(AIS.Codec.CONFIG_SCHEMA);
// Gibt die JSON Schema-Definition für Bot-Konfigurationen zurück
URL-Längen-Limits
Die meisten modernen Browser unterstützen URL-Längen von mindestens 2.000 Zeichen, viele unterstützen 8.000+ Zeichen. Einige Vermittler (E-Mail-Clients, Social-Media-Plattformen, URL-Shortener) können jedoch lange URLs abschneiden.
Das praktische Limit hängt von der System-Prompt-Länge ab:
| System-Prompt-Länge | Ungefäre URL-Länge | Kompatibilität |
|---|---|---|
| < 500 Zeichen | ~300-500 Zeichen | Überall sicher |
| 500-2.000 Zeichen | ~500-1.200 Zeichen | Sicher in Browsern und den meisten Plattformen |
| 2.000-5.000 Zeichen | ~1.200-2.500 Zeichen | Funktioniert in Browsern, kann in E-Mail/SMS fehlschlagen |
| > 5.000 Zeichen | 2.500+ Zeichen | Nur Browser, kann anderswo abgeschnitten werden |
Wenn Ihr System-Prompt sehr lang ist, erwägen Sie:
- Kürzen oder Zusammenfassen des Prompts
- Verwendung eines URL-Shorteners, der Fragmente bewahrt
- Teilen der Bot-Konfiguration als JSON-Datei statt (über Export)
Homepage-Verhalten
Wenn Sie aiscouncil.net direkt laden (kein Hash in der URL), kodiert die App Ihre Bot-Konfiguration nicht in die URL. URL-Kodierung wird nur aktiviert, wenn die Seite von einer geteilten Bot-URL geladen wurde (d.h. die URL enthielt bereits ein #B...-Fragment). Dies hält die Homepage-URL sauber.