Was macht max-model: Idee -> verifiziertes, druckbares Teil?
Die Anfrage: Was auch immer der Benutzer nach /max-model eingegeben hat (oder das beschriebene Ding).
FORGE = das Verzeichnis dieser Fertigkeit (z. B. ~/.claude/skills/max-model); alle Pfade unten sind relativ dazu. Ein CLI: $FORGE/bin/forge <cmd> (Liste am Ende).
Umgebungen (siehe README): CAD-Venv $FORGE/.venv-cad (build123d, trimesh, manifold3d, usd-core, opencv, sdf; Überschreiben mit FORGE_CAD_PY), optionale KI-Venv $FORGE/.venv-ai (torch, diffusers, CLIP; Überschreiben mit FORGE_AI_PY) für text3d und looks.
Drucker: knowledge/printer.json (Bett, Düse, Schicht; Beispiele in knowledge/printers/). Das Slicen ist Sache des Slicers des Benutzers: forge endet mit einem verifizierten STL plus Preflight-Urteil (Stützen an/aus). Ein optionaler slicer_cmd-Hook erlaubt es forge, Druckzeit und Gramm zu melden.
Was der Benchmark vom 2026-10-17 zeigte (knowledge/benchmark-2026-10-17.md): Exakte Teile aus einer vollständigen Spezifikation erreichen 0,96 Voxel-IoU gegenüber dem echten STEP für vollständig spezifizierte Teile, aber nur 0,41–0,82, wo Details geschätzt wurden; druckfertig montierte Mechanismen bestanden Bewegungssimulationen beim ersten Bau ohne verschweißte Spalte (noch nicht durch echte Drucke auf dem Drucker des Autors validiert); das AUSSEHEN ikonischer/organischer Dinge ist die Schwachstelle bei händischer Modellierung (ein händisch modelliertes Helm kam als Ei heraus). Die text3d/looks/remix-Pipelines existieren, um diese Schwachstelle mit Werkzeugen statt Willenskraft abzudecken: Referenzdurchlauf + Looks-Score, lokales Text->3D für organische Figuren, Flexify auf Sculpts, Finden-und-Remixen für ikonische Requisiten.
Regeln, die nie gebogen werden
- Zahlen zuerst, Bilder zweitens. Keine Behauptung über Geometrie, es sei denn, sie stammt aus der Ausgabe eines Werkzeugs (verify/selftest/preflight/grade JSON) oder einem Render, den du in dieser Iteration gelesen hast. Niemals ein STL aus dem Gedächtnis beschreiben.
- Spezifikation vor Modell für kundenspezifische Teile: zuerst
spec.md+spec.jsonmit numerischen Erfolgskriterien. - Eine Änderung pro Iteration, behalte jedes
iter_NN/, maximal 6 pro Phase, dann neu planen. - Alles, was sich bewegt, wird mit einem bestandenen Selbsttest ausgeliefert (Kollisionsfreie Bewegung + Muss-Klemmen-Kontrolle + gemessene Spalte). Keine Ausnahmen; es ist der Grund, warum Mechanismen die Stärke dieser Fertigkeit sind.
- Jeder Druck erhält
forge preflightvor dem Slicen, und sein Urteil entscheidet über Stützen. NO-GO = Geometrie/Ausrichtung zuerst reparieren. Druckfertig montierte / Mehrkörperteile erhalten auchforge export <stl>und du übergibst das 3MF, nicht das STL: Die automatischen Stützen eines Slicers füllen die Lücken und verschweißen die Teile (der erste Druck von CYCLO-11 starb so), und ein STL kann nicht „Stützen aus“ transportieren. - Umgebung: Blender, OpenSCAD und GPU-Torch (text3d, looks) können in manchen Agent-Sandboxen, die die GPU verstecken, abstürzen (Blender exit 139). Wenn ein Schritt mit Segfault fehlschlägt, führe ihn außerhalb der Sandbox aus. Reines Python (build123d, manifold3d, trimesh) läuft überall.
- Berichte Meilensteine kurz (gewählter Weg, erster Render, druckbereit mit Zeit/Gramm/Urteil, Hindernis): eine Zeile pro Meilenstein, sage, was der Benutzer entscheiden muss. Sende Schlüsselbilder (sheet.png, poster.png) und AR-Dateien, wenn der Kanal Dateien unterstützt.
- Niemals einen Druck starten oder Geld ausgeben ohne ausdrückliches OK des Benutzers. Heruntergeladene Modelle: Respektiere die Lizenz (CC BY-NC = kein Verkauf).
Sitzungsstart (30 Sekunden)
ls $FORGE/knowledge/; cat $FORGE/knowledge/{fit-log.md,lessons.md,printer.json}; $FORGE/bin/forge fit show
$FORGE/bin/forge doctor # rote Linie -> beheben oder melden vor dem Modellieren
Wenn forge fit show sagt, dass pip_gap noch [R] ist (Forschungstandard, nicht an diesem Drucker gemessen): einmal erwähnen, dass die Fit Card (forge mech build fitcard, etwa eine Stunde, ~16 g) jedes bewegliche Teil kalibriert, und anbieten, sie zu drucken.
PHASE 0 — WEG (wähle die Pipeline, nicht den Hammer)
Erster Treffer gewinnt. Teile dem Benutzer den Weg in einer Zeile mit.
| Er möchte | Weg | Werkzeuge |
|---|---|---|
| einen DOWNLOAD ändern: Name/Text darauf, Schlüsselbandhalter, Magnete, dickere Wände, auf Kopfgröße skalieren, flachen Boden, spiegeln | REMIX (herunterladen, dann verbessern) | `forge remix text |
| ein praktisches Ding aus den Zahlen des Benutzers: Kiste (Schiebe-/Druckdeckel), Namens-Schlüsselanhänger, Schild, Handy-Ständer, Halter für einen Gegenstand, Lithophanie | MAKE (Generatoren; Abstände aus fit.json; Kisten sind bewegungsgeprüft) | `forge make box |
| viele Kopien / ein ganzes Projekt in einem Druck (Verkauf) | PLATE (packt das Bett, Kosten pro Stück) | `forge plate <stl...> --fill |
| ein berühmtes existierendes Ding (Filmhelm, Requisite, beliebtes Spielzeug, Gehäuse für ein beliebtes Gerät) | FIND (durchsuche selbst eine Modellseite wie Printables/Thingiverse), dann REMIX (skalieren, teilen, Magnete, anpassen) | Websuche, forge split, forge preflight --orient |
| einen ORIGINALEN tragbaren Helm („einen Helm, den niemand sonst hat“) | TEXT3D --helmet: Nackenausschnitt, auf einen von dir angegebenen Kopf skaliert (Standard 160x190 + Polster), 3 mm Schale, Gesichtsplatte + 4 Magnetpinsel, Naht-nach-unten-Schnitte | forge text3d "<Stil> helm" --helmet |
| etwas, das sich bewegt (Fidget-Spielzeug, Scharnier, Zahnräder, Gyroskop, Klappmesser, Durchsteckmechanismus, Klicker) | MECHKIT, wenn ein Modul passt, sonst mit der Mech-API modellieren | forge mech list/build, lib/mechkit/core.py |
| ein Flexi-Tier | einen SDF-Körper entwerfen (lib/sculpt.py) oder ein Sculpt nehmen (Modellseite/text3d) -> FLEXIFY | forge flexify, forge sculpt |
| eine Figur / Maskottchen / Kreatur / Statue | TEXT3D (lokal, kostenlos, ~3,5 Min.) oder finden; beide anbieten | forge text3d "<Idee>" [--base NAME] |
| ein kundenspezifisch passendes Funktionsteil (Halterung, Halter, Adapter, Gehäuse für den Gegenstand des Benutzers) | MODELL (Phasen 1-6 unten) | build123d-Bahn, forge run, forge parts-find |
| Schubladen organisieren / einen Einsatz für einen Gegenstand | GRIDFINITY (+ PHOTOFIT für eine genaue Aussparung) | forge gridfinity, forge photofit |
| zu groß für das Bett | TEILEN mit Stiften + Nahtmarkierungen | forge split |
| „Wird das drucken / warum ist es fehlgeschlagen“ | PREFLIGHT (+ Heatmap) | forge preflight, forge heat |
| es vorführen / verkaufen | SHOWCASE + AR | forge showcase, forge ar |
Ehrliche Qualitätsnotizen zur Wegwahl (gemessen vom Autor, 2026-10-17): text3d-Figuren sind klar erkennbar (Axolotl, Drache, Geister-Maskottchen, Hai), aber feine Details sind bei 60 mm weich und sie brauchen Stützen; Flexi-aus-Text via Relief ist klobig (dünne Beine verschmelzen) -> bevorzuge einen SDF-entworfenen Körper oder ein menschliches Sculpt für Flexis; händisch modellierte organische Formen sehen immer noch wie Klumpen aus -> niemals einen Helm/Charakter von Hand modellieren, FIND+REMIX oder TEXT3D verwenden.
PHASE 1 — LASTENHEFT (kundenspezifische Teile): Spezifikation mit Zahlen
- Alles, was der Benutzer dir bereits über das genaue Objekt gesagt hat (Gerätemodell, Maße, Fotos). 1b. REFERENZDURCHLAUF für alles mit einem Namen: Suche 6–9 Referenzbilder / am besten bewertete Designs des echten Dings, SCHAU sie an; schreibe „## Form“ in spec.md (Proportionen, 2–3 charakteristische Merkmale, welche Variante). Das Überspringen hat aus dem Benchmark-Klappmesser einen flachen Stock und aus dem Spiral-Fidget das falsche Spielzeug gemacht.
- Abmessungen: schlage sie nach, niemals aus dem Gedächtnis (Benchmark: Riemenscheibe 0,41 IoU).
forge parts-find "<Teil>" [--download]+forge step2stl; Datenblätter per Webabruf; Websuche nach Referenzbildern. Quellen in spec.md angeben. Für ein Objekt, das der Benutzer besitzt und das nicht nachgeschlagen werden kann: PHOTOFIT (forge photofit mat-> drucke die Kalibrierungsmatte mit 100% -> Foto -> Kontur auf ~0,3 mm genau) ist besser, als nach Messschieberwerten zu fragen. - Frage den Benutzer nur, was nicht gefunden werden kann: EINE Nachricht, <= 4 Fragen, jede mit einem Standardwert.
- Schreibe
out/<name>/spec.md+spec.json(Vorlagen/). Schätzungen für Passflächen sind alsestimatemarkiert. - Poste „Spezifikation fertig: -- OK zu bauen?“; bei geringem Risiko mit den angegebenen Standardwerten weitermachen.
PHASE 2 — BAHN + PLAN
| Bahn | Verwendung für |
|---|---|
| b123d (Standard) | funktionale/bemaßte/passkritische Teile, Gehäuse, MechKit-Module |
| scad | triviale Teile oder ein BOSL2-Primitiv (Gewinde) |
sdf (lib/sculpt.py) | organische Körper, die du selbst entwirfst: glatte Vereinigungen, flache Basis, immer wasserdicht (Gecko-Rezept) |
mesh (lib/meshkit.py, manifold3d) | Bearbeiten von Downloads/KI-Meshes, große Boolesche Operationen, Flexify, Teilen (OCC erstickt an 100k-Dreiecks-Sculpts) |
| bpy | Renderings, Voxel-Remesh, textlastige Kunst |
Plane in Kommentaren am Anfang der Teildatei: Funktionen als Funktionen, Parameterblock in mm, Abstände aus fit.get("pip_gap"/"slide_gap"/...) (niemals 0,3 hartcodieren), Ursprung Bottom-Centre auf Z=0, Druckausrichtung von Anfang an entworfen (größte flache Fläche nach unten, Überhänge <= 45, Brücken < 18, Wände >= 2,0), Bau-Reihenfolge, Assert-Liste. |
PHASE 3 — IN KLEINEN SCHRITTEN BAUEN
Pro Iteration: eine Änderung -> forge run part.py --lane <bahn> --spec spec.json --name <name> -> lies verify.json/REPORT.md (hat sich Volumen/BBox um das geändert, was die Änderung bewirken sollte? keine Änderung = fallengelassene Boolesche Operation) -> lies sheet.png einmal -> Kritik -> nächste Änderung.
- Bewegliche Teile = die Mech-API (
lib/mechkit/core.py):Mech(name, parts, fixed, [Motion(name, drive, [Move...], control=[...])])->selftest()überstreicht jede Pose, führt die Muss-Klemmen-Kontrolle entlang ihres gesamten Pfades aus, misst Spalte exakt. Kollisionssicher durch Konstruktion schlägt Prüfung: Bögen/Kugeln, die auf dem Drehpunkt zentriert sind, halten den Spalt konstant (Gyroskop, Flexi-Gelenke); halte den Bewegungsraum jedes beweglichen Teils auf seiner eigenen Seite einer Ebene (Klappmesser-Drehpunkte). Zahnräder:lib/gears.py. Gemessen, nicht deklariert:forge mech ratio <name> [--motion M --driven PART --driver PART]bringt den Mechanismus in eine Position, befreit den Ausgang und halbiert das Intervall bis zum kontaktfreien Intervall -> gemessenes Übersetzungsverhältnis + Spiel (ratio.json, exit 3, wenn es vom deklarierten Übersetzungsverhältnis abweicht). Zykloidengetriebe:forge mech build cyclo11(lib/cycloid.pyexaktes Profil + Hinterschneidungsprüfung). Studio-Renderings:forge showcase <dir> --style studio --still hero|cutaway|exploded,--ghost,--annotate. - Preflight in der Schleife für alles mit Überhängen:
forge preflight out/<name>/<name>.stl. - Benannte Objekte: Looks-Score nach der Mechanik-Prüfung:
forge looks out/<name>/<name>.stl --target "<Ding>"(CLIP auf sauberen Renderings; validiert: es hat menschlich > v2 > v1 Klappmesser eingestuft). < 30% = iteriere FORM (Proportionen, charakteristische Merkmale), nicht Mechanik. Vergleiche v1 vs. v2 damit, anstatt zu raten. - Harte Regeln: niemals aus einer Ansicht beurteilen; Überlappungs-Cutter 0,05 mm (koplanare Flächen hinterlassen Nulldicken-Häute, die Pins VERSCHWEISSEN: gemessener Spalt 0,0 statt 0,3); gleicher Fehler zweimal -> drucke Unterteil-Zahlen und diagnostiziere neu; maximal 6 Iterationen, dann neu planen oder zu FIND wechseln. Beende, wenn verify jeden Spezifikationsschlüssel besteht, selftest besteht (Beweger), preflight GO/GO+SUPPORTS ist, visuelle Checkliste alle ja.
PHASE 4 — PASSUNG
- Kalibrierung zuerst: druckfertig montierte Spalte stammen aus
fit.json. Bis pip_gap [V] ist, trägt jedes PIP-Design eine PREFLIGHT-VORSICHT. Die Fit Card misst pip_gap (Spinner .15-.40) und pip_vgap (Scharniere .25-.45) in einem Druck: frage danach „kleinste Zahl, die sich nach festem Drehen frei dreht?“ ->forge fit set pip_gap <n> --from "fitcard <Datum>"(und pip_vgap). Jeder MechKit-/flexify-/gridfinity-Build liest es automatisch. - Passende Teile / Teile um den Gegenstand des Benutzers: Zusammenbau-Posen-Prüfung
bin/verify --assembly a.stl b.stl --clearance <passung> --move-b=x,y,z; Dummy des Objekts aus photofit/parts-find. - Coupon nur für eine Grenzflächentyp, den die Fit Card nicht abdeckt (Gewinde, Schnappverbindungen, Pressverbindungen) oder geschätzte Maße: <= 10 Min., 3 Varianten, erhabene Beschriftungen.
PHASE 5 — DRUCKVORBEREITUNG + ÜBERGABE
forge preflight <stl> [--slice]-> Urteil + Stützenentscheidung. Organische/geneigte Teile:forge preflight <stl> --orient(versucht Neigungen; ein Helm wollte ~20 Grad).forge heat <stl>erstellt die rot/gelbe Stützen-Heatmap, um sie ihm zu zeigen.- Stützen = Entscheidung des Preflights: GO -> aus; GO+SUPPORTS -> ein/auto; NO-GO -> zuerst reparieren (messerartiger Kontakt, verschweißte Spalte, passt nicht ->
forge split). „SUPPORTS: OFF (erforderlich)“ = Auto-Stützen-Falle (eine flache Unterseite < 30 Grad von der Horizontalen liegt < 2 mm über einem ANDEREN Körper;support_angle/support_trap_gapim Druckerprofil): Stützen müssen AUS bleiben, sonst verschweißen sie den Spalt. 2b. Immer, bevor eine druckfertig montierte / Mehrkörperdatei an einen Benutzer übergeben wird:forge preflight <stl>dannforge export <stl>(folgt automatisch dem Urteil; Name endet auf_SUPPORTS-OFF.3mf/_SUPPORTS-ON.3mf). Gib ihm das 3MF und sage: Öffne diese Datei, prüfe, ob das Support-Kästchen mit dem Dateinamen übereinstimmt, ändere nichts anderes. Wenn Preflight NO-GO ist, weil es Stützen braucht UND Stützen verschweißen würden, repariere die Geometrie (fase flache Unterseiten auf 45 Grad, richte neu aus) vor dem Exportieren. - Slicen das exportierte 3MF (oder das STL für einfache Einkörperteile) in DEINEM bevorzugten Slicer mit der Stützenentscheidung aus Schritt 2 und deinem normalen Profil; forge setzt nur das Stützen-Kontrollkästchen, über das 3MF. (Optional: setze
slicer_cmdinknowledge/printer.json, damitpreflight --slice/plate --sliceZeit und Gramm melden.) - Zeige dem Benutzer: Sheet oder Showcase-Poster + Zeit/Gramm (wenn der Hook gesetzt ist) + Urteil + einzeiliges Rezept. Biete
forge ar <stl>an (USDZ: öffnet als echte Größe auf iPhone/Vision Pro; GLB für Quest), wenn Größe/Passung die Frage ist. - Niemals einen Druck ohne das OK des Benutzers starten: „Bett frei? Starte , ~, g.“
- Melde „ druckbereit: , g, .“ Verkauf?
forge showcase <dir>schreibt mp4/gif + listing.md (Kosten, vorgeschlagener Preis, Lizenzhinweis).
PHASE 6 — RÜCKMELDUNG + LERNEN
- Eine Zeile nachdem es gedruckt wurde: „Was war falsch? (Passung / Aussehen / Festigkeit / Druckqualität / nichts)“. Lies jedes Foto.
- Spalte ->
forge fit set ...(+ eine Zeile in fit-log.md). Andere Zahlen -> fit-log.md / print-tolerances.md [V]. - 1–3 Zeilen in
knowledge/lessons.md(Datum · Projekt · Lektion · Phase). Neue Technik ->knowledge/<Thema>.md(<= 40 Zeilen, ausführbarer Ausschnitt). - Hinterlasse
part.py+ Spezifikation erneut ausführbar. Biete eine benachbarte Idee an (Shop-Brain), ohne sie zu starten. - Jede Änderung an Fertigkeit/Werkzeug ->
tests/run_suite.sh(bekannte-Antwort-Prüfungen) und, für Fähigkeitsbehauptungen, den Benchmark (forge grade,forge looks) -- beweise, dass es besser geworden ist.
Der Werkzeugkasten (forge <cmd>)
Führe mit...