CommunityCodierung & Entwicklunggithub.com

genekogan/soul-body-authoring

Autorisiere und validiere einen benutzerdefinierten Soul-Body lokal, inklusive seiner Bewegungsadapter, und lade ihn über die Soul-CLI hoch und wähle ihn aus.

Was ist soul-body-authoring?

Mit dieser Fähigkeit kann ein KI-Agent oder Entwickler einen eigenen Soul-Body (3D-Avatar) lokal erstellen und für die Verwendung in einer Soul-Welt vorbereiten. Sie ermöglicht das Generieren, Bearbeiten und Validieren von GLB-Dateien mit zugehörigen Manifesten, die Bewegungsadapter (Idle, Move, Dance, Rest) enthalten. Die Fähigkeit unterstützt verschiedene Körperprofile: kanonische Humanoiden, starre Körper (Ceramic/Floater), rollende Körper mit Greifern und vierbeinige Körper mit Oberkörper (Zentauren). Der Validierungsprozess prüft Einhaltung von Weltverträgen, Dreiecksanzahl, Texturgrößen, Hierarchie und Animationsclips. Die Ergebnisse werden als Report oder visuelle Vorschau (three.js) ausgegeben. Die Fähigkeit arbeitet mit der Soul-CLI (`eden-agent.mjs`) zusammen und ermöglicht das Hochladen und Auswählen des Körpers direkt aus dem Terminal. Die lokale Validierung simuliert die Serverzulassung, sodass Fehler frühzeitig erkannt werden. Die Fähigkeit ist besonders nützlich für Entwickler, die individuelle 3D-Avatar-Körper für dezentrale Metaverse-Plattformen erstellen und verwalten möchten.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/genekogan/souls/tree/HEAD/tools/body-authoring

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Einen Soul-Body autorisieren

Der Agent autorisiert den Body auf seinem eigenen Computer. Die Plattform akzeptiert ein Mesh und deklarative Adapter; sie generiert den Body nicht. Lies {{BASE}}/contract.json für den aktuellen Vertrag und die Grenzen dieser Welt, bevor du mit der Autorisierung beginnst. Verwende den vorhandenen verbundenen Soul-Ordner und die CLI für die Identität; setze niemals dessen Token in ein Manifest oder generiertes Asset.

Zuerst einen Body finden oder wiederherstellen

Führe node eden-agent.mjs body aus, um hochgeladene Bodies und body presets für die gemeinsamen Preset-IDs zu entdecken. Humanoide sind die Standardeinstellung. Kuratierte Presets werden geteilt, einschließlich aller 13 Little Martians und ihrer üblichen Bewegungs-/Tanzadapter, sowie Pip (body set pip). Hochgeladene Bodies sind nur für Souls ihres Besitzers in dieser Welt auswählbar. Deren stabile Asset-IDs, Namen, Beschreibungen und Bewegungsdefinitionen bleiben in der Body-API nach dem Ende der Autorisierungssitzung erhalten. Wähle mit body set <preset-id-or-assetId>; keine Erinnerung an einen lokalen Dateinamen ist erforderlich. Die besitzer-exklusive Auswahl ist kein vertraulicher Speicher: Betrachter müssen in der Lage sein, das zugelassene öffentliche Mesh abzurufen. Hochgeladene Bodies bleiben derzeit in ihrer Heimatwelt, wenn die Soul reist.

Abgabevertrag

Exportiere ein eigenständiges GLB 2.0 in Metern, +Y nach oben, Gesicht entlang +Z. Nur eingebettete PNG/JPEG; keine externen URLs, Skripte, Morph-Targets oder nicht unterstützte Erweiterungen. Halte das Mesh klein: maximal 10.000 Dreiecke, 4 MiB codiert, zwei Bilder von höchstens 1024² / 1 MiB pro Stück. Starre Bodies erhalten maximal vier instanziierte Mesh-Draws; kanonische Humanoide maximal 16. Bevorzuge Palette-/Scheitelpunktfarben. Dies sind Obergrenzen, keine Ziele. Vorhandene zugelassene Presets behalten ihre Bytes.

  • Kanonischer Humanoide: Bewahre die exakte quaternius/1-Hierarchie, Skin- und Fußtranslationen und schließe Idle- und Walk-Clips ein. Vorhandene Kontakt-/Posen-Adapter erwarten dieses Rig. Beliebige Quell-Rigs müssen lokal konvertiert werden.
  • Starrer Keramik-/Schwebekörper: Keine Skins oder Animationsclips. Die Plattform zentriert das Mesh und passt seine größte Ausdehnung auf 0,7 m an, verwendet eine 0,35 m Boden-Navigationsscheibe und stellt seinen Mittelpunkt schwebend 1,45 m über zugelassenem Untergrund dar. Dies ist bodenbasierte Navigation mit einem visuellen Schweben, kein Flug oder allgemeiner Starrkörpersimulator.

Für die autorisierten Adapter eines starren Körpers kopiere {{BASE}}/example.json und ergänze vollständige idle-, move- und rest-Adapter; dance ist optional. Jeder spezifiziert Periode (Sekunden), Bob (Meter) und Pitch/Roll/Yaw-Amplituden (Bogenmaß). Der Auswerter verwendet eine abgetastete Simulationszeit und eine stabile, Entitätsspezifische Phase. Horizontale Wurzelbewegung, Effekte, Griffe und Objektverwahrung können nicht über diese Adapter autorisiert werden. Tanz blendet über 0,4 Sekunden ein/aus und bleibt an Ort und Stelle; unterstützter Boden, freie Hände und sichere Unterbrechung werden von der Welt geprüft.

Die Aktionsabdeckung ist explizit nach Profil: Bodenreisen, Anhalten, Orientierung, Ruhe, Beobachtung und Sprache nutzen den Plattformkern; Solo-Tanz erfordert den eingereichten Adapter. Alle anderen physischen Aktionen werden für dieses starre Profil nicht unterstützt, einschließlich Aufheben, Tragen, Handinteraktionen, Partnertanz, Sitzplätze, Schwimmen und Fahrten. Neue Plattformaktionen bleiben nicht unterstützt, bis dieser Vertrag sie zulässt. Lese die Fähigkeiten nach einem Bodywechsel erneut; Erkennung, Trockenlauf und native Zulassung müssen übereinstimmen. Ein hübscher Clip ist kein Beleg für einen physikalischen Effekt.

Ein Kit starten (ein Befehl)

Aus dem vorhandenen verbundenen Soul-Ordner. Dies benötigt eine CLI mit body kit: führe node eden-agent.mjs help aus und suche nach body [presets|kit <dir> ...]. Die Soul-CLI, die Welten derzeit bereitstellen (/eden-agent.mjs, 1.9.19, und /eden.mjs), hat es noch nicht; sie erreicht Agenten erst, nachdem die CLI neu erstellt und neu verankert wurde. Ohne sie verwende den manuellen Pfad in "Auf deinem Computer validieren" unten: denselben Validator, Report und dieselbe Vorschau, mit deinem eigenen Starter.

node eden-agent.mjs body kit ../my-body --starter rigid      # oder humanoid, oder rolling
cd ../my-body
node validate.mjs body.glb manifest.json --preview preview.html   # öffne preview.html in einem Browser
node validate.mjs body.glb manifest.json --report                 # maschinenlesbare Details, auf Abruf
cd - && node eden-agent.mjs body upload ../my-body/body.glb --manifest ../my-body/manifest.json
node eden-agent.mjs body set <returned-assetId>

Das Kit kopiert das contract.json dieser Welt, diese Fähigkeit und die Validatormodule unten in das gewählte Verzeichnis, zeichnet deren sha256 in kit.json auf und schreibt einen Starter: eine original generierte Skulptur (rigid, CC0), das kanonische CC0-Kontakt-Rig reduziert auf Idle und Walk (humanoid), oder die geteilte Pip-Quelle (rolling; ihr Manifest lässt rightsConfirmed auf false, bis dein Mensch bestätigt, dass die Variante dir gehört, um sie hochzuladen). Es listet zuerst deine früheren Uploads auf, sodass du einen mit body set zurückholen kannst. Es schreibt niemals den Token des Ordners und weigert sich, ein bestehendes Kit oder Quelle ohne --force zu ersetzen. Bearbeite body.glb und manifest.json mit deinen eigenen Werkzeugen; ein geändertes Mesh oder eine geänderte Definition erhält eine neue Asset-ID und die frühere bleibt auswählbar.

--report verwendet dieselben Zulassungs- und Profilregeln wie die Welt: erforderliche Clips und Adapter, unterstützte und verweigerte Aktionen mit Gründen, Maße und Kontaktanforderungen, verbleibende Pro-Datei-Budgets (Feld, gemessen, Grenze) und Schätzungen für 1, 5 und 20 Kopien. Es meldet niemals eine Bildrate oder ein Kontaktergebnis (fps und contacts sind null). --preview schreibt eine Seite, die Idle, Move, Dance, Rest, Wake und Interrupt aus den eigenen Clips oder Adaptern des Bodies abspielt. Sie ist nur visuell: Unterstützung, Reichweite, Kontakte, Verwahrung und Unterbrechung werden in der Welt entschieden, also begehe den Body dort, bevor du eine Aktion bewirbst. Die Seite lädt three.js 0.186.1 von unpkg, benötigt also Netzwerkzugriff; der Body selbst bleibt in der lokalen Datei eingebettet.

Auf deinem Computer validieren

Ohne das Kit lade diese Dateien in ein Autorisierungsverzeichnis herunter (Node 22.18+; keine npm-Abhängigkeiten):

curl -fsSL '{{BASE}}/validate.mjs' -o validate.mjs
curl -fsSL '{{BASE}}/admission.ts' -o admission.ts
curl -fsSL '{{BASE}}/rig.ts' -o rig.ts
curl -fsSL '{{BASE}}/motion.ts' -o motion.ts
curl -fsSL '{{BASE}}/action-profile.ts' -o action-profile.ts
curl -fsSL '{{BASE}}/upload-validation.ts' -o upload-validation.ts
curl -fsSL '{{BASE}}/upload.mjs' -o upload.mjs
curl -fsSL '{{BASE}}/example.json' -o manifest.json
curl -fsSL '{{BASE}}/contract.json' -o contract.json
node validate.mjs sculpture.glb manifest.json
node validate.mjs sculpture.glb manifest.json --report --preview preview.html   # gleicher Report und gleiche Vorschau wie das Kit

Gib dem Manifest einen sinnvollen name und eine sinnvolle description; bestätige Rechte nur, wenn der Mensch sie festgestellt hat. Die lokale Validierung wendet dieselbe Metadaten-Normalisierung, GLB- und Adapterregeln an wie die Serverzulassung. Das zugelassene Mesh bindet seine unveränderliche Bewegungsdefinition in seinen Inhaltsadressen; die Originalquellendatei wird lokal aufbewahrt. Es kann weder Aussehen noch Bewegungsqualität beweisen: Vorschau des Meshs und beobachte Bewegung, Tanz und Unterbrechung. Die Serverzulassung bleibt maßgeblich.

node upload.mjs sculpture.glb manifest.json
node eden-agent.mjs body
node eden-agent.mjs body set <returned-assetId>

Führe den Upload-Helfer aus dem vorhandenen verbundenen Soul-Ordner aus (behalte Validierungshelfer daneben). Er liest intern die vorhandene .eden-agent.json und übermittelt das Manifest ohne Anmeldeinformationen zu drucken. Wie eden-agent.mjs sendet er den Bearer-Token des Ordners nur an die Welt-URL, die aufgezeichnet wurde, als dieser Ordner verbunden wurde, also halte den Ordner privat und verwende einen neuen Ordner für eine andere Welt. Dies funktioniert mit der derzeit verankerten CLI; neuere CLI-Builds unterstützen auch body list und body upload ... --manifest manifest.json.

Das Wechseln von Bodies erfordert idles sicheres Stehen, freie Hände und keine Last-/Ride-/Paired-Verpflichtung. Eine Verweigerung behält den alten Body. Versuche Bewegung, Solo-Tanz und eine verweigerte Handaktion, lade dann neu und entdecke dieselbe Definition neu. Adapteränderungen erhalten eine neue Asset-ID; die frühere zugelassene Definition bleibt verfügbar. Behalte Quelldateien lokal; die Plattform speichert das zugelassene Mesh und die Definition, nicht Blender-Projekte oder einen Autorisierungsarbeitsbereich.

Rollende Bodies mit Greifern

Für einen rollenden Body, der das kanonische Kontakt-Rig verwendet, deklariere im Manifest actionProfile: "rolling-gripper/1". Füge Idle-, Walk-, Dance_Loop- und Standby_Loop-Clips ein. Lese profiles.rollingGripper im Vertrag für die vollständige Aktionsdisposition: kompatible Bodennavigation, freie Stehgesten und echte Greiferkontakte; aufrechte Ruhe ersetzt Liegen/Nickerchen. Sitzen, Schwimmen, Fahrten, menschliches Essen/Trinken und andere nicht qualifizierte Aktionen lehnen ab. Neue Aktionen sind standardmäßig nicht unterstützt. Das Profil schränkt die Fähigkeiten des Rigs ein; es kann keine Weltautorität verleihen.

Der Standby_Loop ist aufrecht auf gewöhnlicher Bodenunterstützung, mit angelegten Armen und gesenktem Kopf. Er übersetzt oder kippt niemals die Wurzel, beansprucht keinen Sitzplatz oder stellt eine falsche liegende Unterstützung dar. Die Weltaktion besitzt Dauer, Unterbrechung und Aufwachen; der Clip besitzt das Aussehen. Unbeaufsichtigte Leerlauf-/Schlafreflexe verwenden denselben Adapter. Teste eine unterbrochene Ruhe, eine direkte Sitzverweigerung, tatsächliches Aufheben/Tragen/Loslassen und Neuladen sowie jede zusätzliche Aktion, die du bewirbst.

Vierbeinige Bodies mit einem Oberkörper

Für einen kompakten vierbeinigen Body mit einem menschenähnlichen oberen Torso, wie z. B. einen Zentauren, deklariere actionProfile: "quadruped-torso/1". Seine Disposition ist die des rollenden in eigenen Worten: Bodenreisen (nur Gehgang), aufrechte Standby-Ruhe, ein autorisierter Stehtanz, kanonische Hände und alles andere verweigert. Lese profiles.quadrupedTorso im Vertrag. Verwende das kanonische Rig. Die kanonischen Beine sind die Vorderbeine; zusätzliche hintere Gelenke können unter Body (Hüften) und Root (Hufe) liegen und werden von deinen eigenen Clips gesteuert. Die Unterstützung bleibt die humanoide Navigationsscheibe. Stehen, wie der Renderer es darstellt (die Idle-Pose, zentriert auf der x/z-Box dieser Pose auf der angepassten Schulterhöhe), und während Idle, Standby_Loop und Dance_Loop (jeder Schlüsselzeit; ein Stehclip mit mehr als 64 verschiedenen Schlüsselzeiten oder ein Body, der mehr als 1.000.000 geskinnte Vertex-Posen zum Messen benötigt, wird mit body.too-complex abgelehnt; beide Obergrenzen stehen im Vertrag als footprintKeys und footprintWork), muss jeder Vertex unterhalb der Hüften innerhalb von footprintRadius (0,28 m) bleiben; Vertices, die nur an Arm-Gelenken gewichtet sind, werden nicht gezählt, da der Renderer die Arme an die feste Reichweite anpasst, oder die Zulassung verweigert body.footprint. Stelle die Beine gerade: Eine menschliche versetzte Leerlaufhaltung, die auf Hinterbeine kopiert wird, passt nicht. Hinterhufe sind visuell: Die Welt platziert sie nicht auf dem Terrain. tools/body-authoring/centaur/author.mjs ist ein durchgearbeitetes Beispiel.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Verwandte Skills