- JavaScript 62.6%
- CSS 23.8%
- HTML 13.6%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Die gelieferte DI wird verworfen und mit dagre neu gerechnet: Struktur kommt vom Agenten, Geometrie vom Layouter. Ueber sieben Proben sinken die Kanten, die durch einen Kasten laufen, von 4 auf 1. Zwei Details entscheiden ueber das Ergebnis: - Orthogonales Routing von Rand zu Rand statt der schraegen dagre-Stuetzpunkte. - Rueckkanten laufen UNTER der Elementreihe zurueck statt diagonal durchs Bild — der Fall, der unbehandelt am haesslichsten aussieht. Sicherungen: laesst sich eine Kante nicht neu zeichnen (etwa in einen aufgeklappten SubProcess), bleibt das gelieferte Layout unangetastet; liefert dagre unbrauchbare Werte, ebenfalls. Ein unvollstaendiges Diagramm waere schlimmer als ein mittelmaessiges. app.js ist damit ein ES-Modul; window.__studio haelt den Debug-Zugang offen. |
||
| hello-agent | ||
| komiq-bpmn-studio | ||
| .gitignore | ||
| LICENSE | ||
| README.md | ||
BasePeak.AI — Beispiel-Apps
Kleine, lauffähige Anwendungen, bei denen ein Agent das gesamte Backend ist. Keine Datenbank, keine Geschäftslogik, kein Framework — der lokale Server reicht Anfragen an den Agenten weiter und liefert eine Oberfläche aus.
Gedacht zum Lesen, Ausprobieren und Abkupfern.
Die Beispiele
| Beispiel | Worum es geht | Umfang |
|---|---|---|
hello-agent |
Prompt rein, Antwort raus, Thread bleibt. Hier anfangen. | ~100 Zeilen, 2 Dateien |
komiq-bpmn-studio |
Verwaltungsprozesse aus einer Beschreibung als BPMN modellieren, live rendern, vom Agenten auswerten lassen | 4 Dateien, mobiltauglich |
Jedes Beispiel läuft für sich: cp .env.example .env, Werte eintragen, node server.mjs.
Node ≥ 18, keine Dependencies, kein Build-Schritt.
Die wiederkehrenden Muster
Was in allen Beispielen gleich ist — und warum.
Der Proxy existiert nur wegen des Schlüssels
CORS ist auf den Instanzen offen (access-control-allow-origin: *), jede dieser Apps
liefe technisch als reine HTML-Datei ohne Server. Dann stünde der API-Key aber im
Browser-JS. Der Server hält ihn — mehr tut er nicht.
Der Thread ist der Zustand
POST /api/projects/<projekt>/invoke → Header: x-bpai-thread-id
POST /api/projects/<projekt>/invoke/thread/<id> → Agent kennt den Verlauf
Thread-ID merken und mitschicken — das ersetzt jede eigene Zustandshaltung. „Mach das nochmal, aber als paralleles Gateway" funktioniert dadurch ohne eine Zeile Anwendungslogik.
Der kleinste Scope, der reicht
Ein API-Key wird auf ein Projekt und eine Handvoll Rechte ausgestellt. Für reines Chatten genügt:
project:chat:<projekt-id>
Weiteres nur, wenn die App es wirklich braucht — project:files* fürs Ablegen von
Dateien, project:threads zum Nachlesen von Verläufen, project:knowledge* für RAG-
Dokumente. Ein 403 heißt fast immer: Scope fehlt. Alle Beispiele melden das als
solches statt als generischen Fehler.
Agenten-Ausgabe ist nie vertrauenswürdig strukturiert
Wer strukturierte Daten vom Agenten will (XML, JSON, CSV), braucht eine Reparaturstufe.
Bei komiq-bpmn-studio waren 4 von 4 rohen BPMN-Ausgaben nicht parsebar — fehlende
Namespace-Deklarationen, Markdown-Codefences trotz gegenteiliger Ansage, Begleittext vor
und hinter der Nutzlast. Nach der Reparatur waren es 4 von 4 saubere.
Der zweite Fallstrick: abgeschnittene Antworten. Große Ausgaben laufen ins Token-Limit des Modells und brechen mitten im Tag ab. Ein Parser meldet dann etwas Irreführendes wie „unclosed token". Zwei Gegenmittel, beide im BPMN-Beispiel zu sehen: Abbruch erkennen und ehrlich benennen, und die Ausgabe kompakt anfordern (keine Einrückung, kurze IDs — das halbierte dort die Antwortgröße bei mehr Inhalt).
Der Agent antwortet synchron und braucht Zeit
Ein größeres Ergebnis dauert zehn Sekunden bis über eine Minute. Alle Beispiele zeigen währenddessen einen Ladezustand; das BPMN-Studio bietet zusätzlich Abbrechen an.
Was diese Beispiele bewusst nicht tun
- Keine Authentifizierung. Wer den Server erreicht, kann den hinterlegten Schlüssel benutzen, ohne ihn zu kennen. Für ein lokales Werkzeug in Ordnung — vor einer Veröffentlichung im Netz gehört ein Zugangsschutz davor.
- Keine Persistenz. Ein Neustart vergisst alles.
- Kein Mehrbenutzerbetrieb. Ein Thread, ein Mensch.
Das ist Absicht: Diese Beispiele sollen zeigen, wie wenig um einen Agenten herum nötig ist, damit die Muster nicht in Infrastruktur untergehen.
Ein Beispiel hinzufügen
Ein Verzeichnis pro Beispiel, darin README.md, .env.example, server.mjs. Keine
Dependencies, kein Build-Schritt — wer es ausprobiert, soll nach node server.mjs
fertig sein. Oben in die Tabelle eintragen.
Lizenz
Apache-2.0 — wie die übrigen BasePeak.AI-Komponenten.