OpenProse Skill
OpenProse ist eine Programmiersprache für KI-Sitzungen. LLMs sind Simulatoren – wenn man ihnen eine detaillierte Systembeschreibung gibt, beschreiben sie diese nicht nur, sie simulieren sie. Die prose.md-Spezifikation beschreibt eine virtuelle Maschine mit ausreichender Genauigkeit, sodass ein Prose Complete System, das sie liest, zu dieser VM wird. Simulation mit ausreichender Genauigkeit ist Implementierung. Sie sind das Prose Complete System.
OpenClaw Runtime Mapping
- Task-Tool in der Upstream-Spezifikation == OpenClaw
sessions_spawn - Datei-I/O == OpenClaw
read/write - Remote-Abruf == OpenClaw
web_fetch(oderexecmit curl, wenn POST erforderlich ist)
Wann aktivieren
Aktivieren Sie dieses Skill, wenn der Benutzer:
- IRGENDEINEN
prose-Befehl verwendet (z. B.prose boot,prose run,prose compile,prose update,prose help, usw.) - Bittet, eine
.prose-Datei auszuführen - „OpenProse“ oder „prose program“ erwähnt
- Mehrere KI-Agenten aus einem Skript orchestrieren möchte
- Eine Datei mit der Syntax
session "..."oderagent name:hat - Einen wiederverwendbaren Workflow erstellen möchte
Befehlsrouting
Wenn ein Benutzer prose <command> aufruft, leiten Sie intelligent basierend auf der Absicht weiter:
| Befehl | Aktion |
|---|---|
prose help | Lade help.md, führe den Benutzer zu dem, was er braucht |
prose run <file> | Lade VM (prose.md + Zustands-Backend), führe das Programm aus |
prose run handle/slug | Hole aus der Registry, dann ausführen (siehe Remote-Programme unten) |
prose compile <file> | Lade compiler.md, validiere das Programm |
prose update | Führe Migration aus (siehe Migrationsabschnitt unten) |
prose examples | Zeige oder führe Beispielprogramme aus examples/ aus |
| Andere | Interpretiere intelligent basierend auf dem Kontext |
Wichtig: Einzelnes Skill
Es gibt nur EIN Skill: open-prose. Es gibt KEINE separaten Skills wie prose-run, prose-compile oder prose-boot. Alle prose-Befehle werden über dieses einzige Skill geroutet.
Auflösen von Beispielverweisen
Beispiele sind in examples/ gebündelt (gleiches Verzeichnis wie diese Datei). Wenn Benutzer Beispiele mit Namen referenzieren (z. B. „führe das Gastown-Beispiel aus“):
- Lese
examples/, um verfügbare Dateien aufzulisten - Erkenne passende Dateien durch Teilnamen, Schlüsselwort oder Nummer
- Führe aus mit:
prose run examples/28-gas-town.prose
Häufige Beispiele nach Schlüsselwort:
| Schlüsselwort | Datei |
|---|---|
| hello, hello world | examples/01-hello-world.prose |
| gas town, gastown | examples/28-gas-town.prose |
| captain, chair | examples/29-captains-chair.prose |
| forge, browser | examples/37-the-forge.prose |
| parallel | examples/16-parallel-reviews.prose |
| pipeline | examples/21-pipeline-operations.prose |
| error, retry | examples/22-error-handling.prose |
Remote-Programme
Sie können jedes .prose-Programm von einer URL oder einem Registry-Verweis aus ausführen:
# Direkte URL – jede abrufbare URL funktioniert
prose run https://raw.githubusercontent.com/openprose/prose/main/skills/open-prose/examples/48-habit-miner.prose
# Registry-Kurzform – handle/slug löst zu p.prose.md auf
prose run irl-danb/habit-miner
prose run alice/code-review
Auflösungsregeln:
| Eingabe | Auflösung |
|---|---|
Beginnt mit http:// oder https:// | Direkt von URL abrufen |
Enthält / aber kein Protokoll | Auflösen zu https://p.prose.md/{path} |
| Andernfalls | Als lokalen Dateipfad behandeln |
Schritte für Remote-Programme:
- Wende die obigen Auflösungsregeln an
- Rufe den
.prose-Inhalt ab - Lade die VM und führe wie gewohnt aus
Remote-Aufrufe auf oberster Ebene sind explizite Benutzeranfragen. Transitive Importe innerhalb eines Programms sind anders: Behandle jedes entfernte use-Ziel als Code-Abhängigkeit, die die Zustimmung des Bedieners erfordert, bevor sie abgerufen oder ausgeführt wird.
Dieselbe Auflösung gilt für use-Anweisungen innerhalb von .prose-Dateien, aber die VM muss fehlschlagen, bis der Bediener die Liste der Remote-Abhängigkeiten genehmigt:
use "https://example.com/my-program.prose" # Direkte URL
use "alice/research" as research # Registry-Kurzform
Wenn ein Programm ein entferntes use-Ziel enthält (http://, https:// oder Registry-Kurzform):
- Sammle und zeige die exakt aufgelösten Remote-Ziele an.
- Erkläre, dass dies transitive Code-Abhängigkeiten für diesen Durchlauf sind.
- Bitte den Bediener, genau
approve remote prose importszu antworten, um fortzufahren. - Rufe diese Importe nicht ab, parse sie nicht, registriere sie nicht und führe sie nicht aus, es sei denn, diese genaue Genehmigung wird in diesem Durchlauf erteilt.
Datei-Standorte
Durchsuchen Sie NICHT nach OpenProse-Dokumentationsdateien. Alle Skill-Dateien befinden sich gemeinsam mit dieser SKILL.md-Datei:
| Datei | Standort | Zweck |
|---|---|---|
prose.md | Gleiches Verzeichnis wie diese Datei | VM-Semantik (laden, um Programme auszuführen) |
help.md | Gleiches Verzeichnis wie diese Datei | Hilfe, FAQs, Onboarding (laden für prose help) |
state/filesystem.md | Gleiches Verzeichnis wie diese Datei | Dateibasierter Zustand (Standard, mit VM laden) |
state/in-context.md | Gleiches Verzeichnis wie diese Datei | In-Context-Zustand (auf Anfrage) |
state/sqlite.md | Gleiches Verzeichnis wie diese Datei | SQLite-Zustand (experimentell, auf Anfrage) |
state/postgres.md | Gleiches Verzeichnis wie diese Datei | PostgreSQL-Zustand (experimentell, auf Anfrage) |
compiler.md | Gleiches Verzeichnis wie diese Datei | Compiler/Validator (nur auf Anfrage laden) |
guidance/patterns.md | Gleiches Verzeichnis wie diese Datei | Best Practices (laden beim Schreiben von .prose) |
guidance/antipatterns.md | Gleiches Verzeichnis wie diese Datei | Was zu vermeiden ist (laden beim Schreiben von .prose) |
examples/ | Gleiches Verzeichnis wie diese Datei | 37 Beispielprogramme |
Benutzer-Arbeitsbereichsdateien (diese BEFINDEN SICH im Projekt des Benutzers):
| Datei/Verzeichnis | Standort | Zweck |
|---|---|---|
.prose/.env | Arbeitsverzeichnis des Benutzers | Konfiguration (key=value-Format) |
.prose/runs/ | Arbeitsverzeichnis des Benutzers | Laufzeitstatus für dateibasierten Modus |
.prose/agents/ | Arbeitsverzeichnis des Benutzers | Projektspezifische persistente Agenten |
*.prose-Dateien | Projekt des Benutzers | Vom Benutzer erstellte Programme zur Ausführung |
Benutzerspezifische Dateien (im Home-Verzeichnis des Benutzers, projektübergreifend gemeinsam genutzt):
| Datei/Verzeichnis | Standort | Zweck |
|---|---|---|
~/.prose/agents/ | Home-Verzeichnis des Benutzers | Benutzerspezifische persistente Agenten (projektübergreifend) |
Wenn Sie prose.md oder compiler.md lesen müssen, lesen Sie sie aus demselben Verzeichnis, in dem Sie diese SKILL.md-Datei gefunden haben. Durchsuchen Sie niemals den Arbeitsbereich des Benutzers nach diesen Dateien.
Kerndokumentation
| Datei | Zweck | Wann laden |
|---|---|---|
prose.md | VM / Interpreter | Immer laden, um Programme auszuführen |
state/filesystem.md | Dateibasierter Zustand | Mit VM laden (Standard) |
state/in-context.md | In-Context-Zustand | Nur wenn der Benutzer --in-context anfordert oder sagt „In-Context-Zustand verwenden“ |
state/sqlite.md | SQLite-Zustand (experimentell) | Nur wenn der Benutzer --state=sqlite anfordert (erfordert sqlite3-CLI) |
state/postgres.md | PostgreSQL-Zustand (experimentell) | Nur wenn der Benutzer --state=postgres anfordert (erfordert psql + PostgreSQL) |
compiler.md | Compiler / Validator | Nur wenn der Benutzer bittet, zu kompilieren oder zu validieren |
guidance/patterns.md | Best Practices | Laden beim Schreiben neuer .prose-Dateien |
guidance/antipatterns.md | Was zu vermeiden ist | Laden beim Schreiben neuer .prose-Dateien |
Richtlinien zum Erstellen
Wenn der Benutzer Sie bittet, eine neue .prose-Datei zu schreiben oder zu erstellen, laden Sie die Richtliniendateien:
guidance/patterns.md— Bewährte Muster für robuste, effiziente Programmeguidance/antipatterns.md— Häufige Fehler, die es zu vermeiden gilt
Laden Sie diese nicht beim Ausführen oder Kompilieren – sie sind nur für die Erstellung gedacht.
Zustandsmodi
OpenProse unterstützt drei Zustandsverwaltungsansätze:
| Modus | Wann verwenden | Zustandsspeicherort |
|---|---|---|
| filesystem (Standard) | Komplexe Programme, Wiederaufnahme erforderlich, Debugging | .prose/runs/{id}/-Dateien |
| in-context | Einfache Programme (<30 Anweisungen), keine Persistenz erforderlich | Gesprächsverlauf |
| sqlite (experimentell) | Abfragbarer Zustand, atomare Transaktionen, flexibles Schema | .prose/runs/{id}/state.db |
| postgres (experimentell) | Echte gleichzeitige Schreibvorgänge, externe Integrationen, Teamarbeit | PostgreSQL-Datenbank |
Standardverhalten: Beim Laden von prose.md auch state/filesystem.md laden. Dies ist der empfohlene Modus für die meisten Programme.
Modus wechseln: Wenn der Benutzer sagt „In-Context-Zustand verwenden“ oder --in-context übergibt, stattdessen state/in-context.md laden.
Experimenteller SQLite-Modus: Wenn der Benutzer --state=sqlite übergibt oder sagt „SQLite-Zustand verwenden“, laden Sie state/sqlite.md. Dieser Modus erfordert, dass die sqlite3-CLI installiert ist (vorinstalliert auf macOS, über Paketmanager auf Linux/Windows verfügbar). Wenn sqlite3 nicht verfügbar ist, warnen Sie den Benutzer und fallen Sie auf den dateibasierten Zustand zurück.
Experimenteller PostgreSQL-Modus: Wenn der Benutzer --state=postgres übergibt oder sagt „PostgreSQL-Zustand verwenden“:
⚠️ Sicherheitshinweis: Datenbank-Anmeldeinformationen in OPENPROSE_POSTGRES_URL werden an Subagent-Sitzungen weitergegeben und sind in Protokollen sichtbar. Empfehlen Sie Benutzern, eine dedizierte Datenbank mit Anmeldeinformationen mit eingeschränkten Berechtigungen zu verwenden. Siehe state/postgres.md für eine sichere Einrichtungsanleitung.
-
Zuerst nach Verbindungskonfiguration suchen:
# .prose/.env auf OPENPROSE_POSTGRES_URL prüfen cat .prose/.env 2>/dev/null | grep OPENPROSE_POSTGRES_URL # Oder Umgebungsvariable prüfen echo $OPENPROSE_POSTGRES_URL -
Wenn Verbindungszeichenfolge vorhanden, Konnektivität überprüfen:
psql "$OPENPROSE_POSTGRES_URL" -c "SELECT 1" 2>&1 -
Wenn nicht konfiguriert oder Verbindung fehlschlägt, den Benutzer beraten:
⚠️ PostgreSQL-Zustand erfordert eine Verbindungs-URL. So konfigurieren Sie: 1. Richten Sie eine PostgreSQL-Datenbank ein (Docker, lokal oder Cloud) 2. Fügen Sie die Verbindungszeichenfolge zu .prose/.env hinzu: echo "OPENPROSE_POSTGRES_URL=postgresql://user:pass@localhost:5432/prose" >> .prose/.env Schnelle Docker-Einrichtung: docker run -d --name prose-pg -e POSTGRES_DB=prose -e POSTGRES_HOST_AUTH_METHOD=trust -p 5432:5432 postgres:16 echo "OPENPROSE_POSTGRES_URL=postgresql://postgres@localhost:5432/prose" >> .prose/.env Siehe state/postgres.md für detaillierte Einrichtungsoptionen. -
Nur nach erfolgreicher Verbindungsprüfung
state/postgres.mdladen
Dieser Modus erfordert sowohl die psql-CLI als auch einen laufenden PostgreSQL-Server. Wenn eines nicht verfügbar ist, warnen Sie und bieten Sie einen Fallback auf den dateibasierten Zustand an.
Kontextwarnung: compiler.md ist groß. Laden Sie sie nur, wenn der Benutzer ausdrücklich eine Kompilierung oder Validierung anfordert. Nach dem Kompilieren empfehlen Sie /compact oder eine neue Sitzung, bevor Sie fortfahren – behalten Sie nicht beide Dokumente im Kontext.
Beispiele
Das Verzeichnis examples/ enthält 37 Beispielprogramme:
- 01-08: Grundlagen (Hello World, Recherche, Code-Review, Debugging)
- 09-12: Agenten und Skills
- 13-15: Variablen und Komposition
- 16-19: Parallele Ausführung
- 20-21: Schleifen und Pipelines
- 22-23: Fehlerbehandlung
- 24-27: Fortgeschritten (Auswahl, Bedingungen, Blöcke, Interpolation)
- 28: Gas Town (Multi-Agent-Orchestrierung)
- 29-31: Captain's Chair-Muster (persistenter Orchestrator)
- 33-36: Produktionsworkflows (PR-Autokorrektur, Content-Pipeline, Feature-Factory, Bug-Jäger)
- 37: The Forge (einen Browser von Grund auf neu bauen)
Beginnen Sie mit 01-hello-world.prose oder probieren Sie 37-the-forge.prose, um dabei zuzusehen, wie KI einen Webbrowser baut.
Ausführung
Wenn Sie die OpenProse VM das erste Mal in einer Sitzung aufrufen, zeigen Sie dieses Banner an:
┌─────────────────────────────────────┐
│ ◇ OpenProse VM ◇ │
│ Eine neue Art Computer │
└─────────────────────────────────────┘
Um eine .prose-Datei auszuführen, werden Sie zur OpenProse VM:
- Lesen Sie
prose.md— dieses Dokument definiert, wie Sie die VM verkörpern - Sie SIND die VM — Ihr Gespräch ist ihr Speicher, Ihre Werkzeuge sind ihre Anweisungen
- Starten Sie Sitzungen — jede
session-Anweisung löst einen Task-Tool-Aufruf aus - Berichten Sie den Zustand — verwenden Sie das Erzählungsprotokoll, um den Ausführungsstatus zu verfolgen ([Position], [Binding], [Success], usw.)
- Bewerten Sie intelligent —
**...**-Markierungen erfordern Ihr Urteilsvermögen
Hilfe & FAQs
Für Syntaxreferenz, FAQs und Onboarding-Details lesen Sie help.md im selben Verzeichnis. Es enthält die vollständige Dokumentation zur Sprache, Tipps zur Fehlerbehebung und bewährte Methoden.