Doku · 05

Dateiformate.

Alles in CommandAGI ist eine einfache Datei, die Sie lesen, vergleichen und kopieren können. Hier ist die Liste.

Die Regeln

  • Nur einfache Dateien. Eine Datei wächst höchstens, während sie aufzeichnet — der records.jsonl eines Datenstroms, seine Mediendatei, die members.jsonl eines Laufs. Es gibt keine versteckten Datenbanken, Verweisdateien oder Bündel.
  • Verweise sind Pfade und IDs. Ein Lauf verwendet die Datei, die jetzt an seinem Pfad liegt; nichts fixiert einen Hash.
  • Der Ordner ist das Projekt. Der Aufbau eines Projekts ist nicht fest in der Werkbank verdrahtet.
  • Ebenen. Jede Definition, Welt und Einstellung kann in der Cloud oder lokal existieren, auf globaler, Benutzer- und Projektebene, und sie werden von breit nach spezifisch zusammengeführt.

Geräte

devices/<id>/definition.tsx, mit seinen Dateien daneben in devices/<id>/assets/ (zum Beispiel model.glb). Eine Definition ist Code: Die Werkbank führt ihn aus und liest das <device>, das er deklariert.

Eine Definition nennt die Maschine (name, manufacturer, model_number, product_url …), ihr 3D-model und ihre channels:

tsx
export default () => (
  <device name="CNC 3018" manufacturer="…">
    <channel id="gcode" dir="duplex" medium="records" format="gcode-chat" dialect="grbl" transport="serial" baud={115200} />
  </device>
);

dir ist in, out oder duplex; medium ist records, video, audio oder bytes. Eine Einheit in einer Welt kann einen Kanal überschreiben.

Welten

worlds/<id>/world.tsx, Code, der genau eine <world> deklariert:

tsx
export default () => (
  <world name="Shop floor" kind="physical">
    <space origin_mm={[0, 0, 0]} size_mm={[6000, 4000, 3000]} />
    <unit uid="mill-1" name="Mill" device="../../devices/cnc-3018/definition.tsx" position={[1200, 800, 0]} rotation={0} />
  </world>
);

Jede Änderung in der Werkbank wird als kleinste Änderung zurück in den Code geschrieben.

kind ist physical oder simulation. Eine Welt kann eine 3D-Szene nennen (model, eine .3d.tsx) und, wenn sie eine Simulation ist, eine Simulationsdatei (sim, eine .sim.json). Eine Welt ist kein 3D-Modell, und ein Lauf ist keine Welt.

Läufe und Datenströme

runs/<run>/ ist ein Lauf in einer Welt:

Dateienthält
run.jsonid, world, kind (session, recipe oder thread), started, ended, from (der Lauf und die Zeit, aus denen er abgezweigt wurde)
members.jsonlwer und was teilgenommen hat, angehängt, sobald es beitritt
steps.jsonldie Schritte eines Rezepts
streams/<uid>.<channel>@<replica>/ein Datenstrom: stream.json plus seine Daten — records.jsonl, oder eine video.webm/.mp4, audio.webm/.mp4 oder data.bin
streams/chat@<replica>/die Unterhaltung einer Unterhaltung
streams/sim@<replica>/, streams/sim-input@<replica>/die Frames einer Simulation und die Eingaben, die auf sie angewendet wurden
evidence/als Nachweis aufbewahrte Dateien

Ein Datensatz ist eine Zeile JSON:

json
{ "t": 7.180, "seq": 41, "hlc": "001790561647180-00000", "src": "operator", "kind": "note", "text": "agent:night-shift: run_program", "by": "agent:night-shift" }

src ist device, sim oder operator; kind ist command, event, ack, reply, state, evidence oder note; seq steigt streng monoton. Ein unbekannter Zustand wird als { "kind": "state", "status": "unknown" } geschrieben.

Dokumente

Jedes Editor-Dokument ist eine JSON-Datei — { "format": "commandagi-document", "kind", "title", "meta", "body" } — mit großen Dateien in einem Ordner <name>.assets/ daneben.

Erweiterungöffnet in
.3d.tsx3D-Design (Teile, Baugruppen, Szenen)
.cam.tsx, .slice.tsx3D-Design im CAM- und Slicing-Modus; Programme werden daneben als .gcode gespeichert
.nest.tsxder Nesting-Modus der Vektor-App (Laser- und Blechaufträge), im Code
.draw.tsx, .paint.tsx, .img.tsxZeichnen, Malen und Bildbearbeitung, im Code; Pixel bleiben Bilddateien daneben
.vid.tsxder Videoeditor, im Code; Medien bleiben Dateien daneben
.mus.tsxMusik, im Code
.geo.tsxGeoökonomie-Arbeitsbereiche

Weitere Formate

Dateiwas sie ist
<name>.sch.tsx + <name>.pcb.tsxein Schaltkreis im Code: der Schaltplan und seine Leiterplatte, die ihn nennt
<name>.sheet.tsx, <name>.page.tsx, <name>.deck.tsxeine Arbeitsmappe, eine Seite und eine Folienpräsentation, als Code geschrieben: Die Editoren für Tabellen, Dokumente und Präsentationen schreiben jede Änderung in die Datei
<name>.sim.jsoneine Simulation
<name>.trials.jsonein Experiment: viele simulierte Läufe über eine Parameterreihe
<name>.graph.jsonein Graph (Wissen, Gedächtnis)
<name>.dashboard.tsxein Dashboard im Code: Bereiche und die Dateien, die sie zeigen
<name>.geo.tsxein Geoökonomie-Projekt im Code
<name>.opgraph.tsxein Knotengraph im Code
<name>.task.tsx, <name>.project.tsxeine Aufgabe und ein Projekt, im Code
<name>.market.jsonldas Band, das Buch, die Aufträge und die Positionen eines Marktes
calendar/<calendar>/<event>.ics, contacts/<email>.vcfKalender und Kontakte
.xlsx, .md, .pdf, .ipynb, .gcode, .step, .stl, .glb …werden unverändert geöffnet, im Editor für ihre Art

Einstellungen

Einstellungen sind settings.json-Dateien im Stil von VS Code (Kommentare erlaubt), eine pro Ebene, von breit nach spezifisch zusammengeführt: die globalen Ebenen in der Cloud und lokal, Ihre Organisationen, Ihr Konto, dann dieser Computer (~/.commandagi/settings.json) und dieses Projekt (.commandagi/settings.json).

json
{
  "workbench.theme": "dark",
  "threads.agentControl": false,
  "devices.lanListener": true,
  "[.gcode]": { "editor.default": "gcode" }
}

Ein "[.ext]"-Block überschreibt die Einstellungen für eine Dateierweiterung.