Ein selbstgehosteter, visueller knotenbasierter AI-Workflow-Builder mit multi-modaler Unterstützung, langfristiger Gedächtnisfähigkeit, agentischer Werkzeugaufrufe und mehr. Gebaut für Autonomie, Erweiterbarkeit und unternehmenstauglicher Orchestrierung.
Was ist XteVision Prodigy und für wen ist es gedacht?
XteVision Prodigy ist ein selbstgehosteter, visueller knotenbasierter AI-Workflow-Builder, entwickelt für Ingenieure, Forscher und Teams, die komplexe AI-Pipelines über ein intuitives Drag-and-Drop-Interface zusammenstellen möchten. Es bietet multi-modale AI-Unterstützung, langfristiges Gedächtnis (Wisdom), agentische Werkzeugaufrufe, RAG-Embeddings und Integration mehrerer AI-Backends—all laufend auf einem lokalen Netzwerk mit voller DatenOwnership.
High-Level-Design und Kommunikationsfluss
┌─────────────────────────────────────────────────────────┐
│ Browser (Gerät im LAN) │
│ HTTPS / LAN │
└──────────────────────┬──────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────┐
│ Kali-Linux-Server (192.168.1.4) │
│ ┌──────────────────────────────────────────────────┐ │
│ │ proxy_server.py (Port 9999) │ │
│ │ • Servingt UI (HTML/CSS/JS) │ │
│ │ • CORS-Proxy → KI-Backends │ │
│ │ • Auth (Sitzungs-Token in PostgreSQL) │ │
│ │ • Wisdom-langfristiges Gedächtnis (PostgreSQL) │ │
│ │ • DB-Abfrage (MySQL/MariaDB) │ │
│ │ • Dokumenten-Extraktion (PDF/DOCX/XLSX/etc.) │ │
│ │ • Werkzeugausführung (Websuche, Browser, etc.) │ │
│ └──────────────────────────────────────────────────┘ │
│ PostgreSQL (Port 5432) SearXNG (Port 8888) │
└──────────────────────┬─────────────────────────────────┘
│ LAN (192.168.10.3)
┌──────────────────────▼─────────────────────────────────┐
│ Apple-Silicon-Mac │
│ ┌────────────┐ ┌──────────┐ ┌──────┐ ┌──────────┐ │
│ │ MLX-Server │ │LM Studio │ │Ollama│ │ Copilot │ │
│ │ Port 5010 │ │Port 1234 │ │Port │ │ Bridge │ │
│ │ │ │ │ │11434 │ │Port 5015 │ │
│ └────────────┘ └──────────┘ └──────┘ └──────────┘ │
└───────────────────────────────────────────────────────┘Prodigy ist für lokal-first, netzwerkzugängliche Bereitstellung ausgelegt:
Frontend, Backend und KI-Integration-Technologien
| Technologie | Zweck |
|---|---|
| Vanilla JavaScript (ES6+) | Anwendungslogik mit modularer Architektur |
| HTML5 Canvas | Visuelle Knoten-Editor-Rendering |
| CSS3 | Styling mit benutzerdefinierten Eigenschaften, Hell/Dunkel-Modi |
| SVG | Verbindungslinien zwischen Knoten |
| localStorage | Workflow-Autosave und Zustandspersistenz |
| Technologie | Zweck |
|---|---|
| Python 3 | Mehrthreadiger HTTP-Server |
| PostgreSQL | Wisdom-Gedächtnis, Benutzersitzungen, Wissensbasis |
| pymysql | MySQL/MariaDB-Integration für DB-Knoten |
| psycopg2-binary | PostgreSQL-Treiber für Wisdom |
| pypdf, python-docx, openpyxl, python-pptx | Dokumenten-Extraktion |
| chardet | Zeichenkodierungs-Auto-Erkennung (CJK, Kyrillisch) |
| bcrypt | Passwort-Hashing für Authentifizierung |
| Playwright | Browser-Automatisierung für agentische Werkzeuge |
| Backend | Port | Typ |
|---|---|---|
| MLX-Server | 5010 | Lokal (Apple Silicon) |
| LM Studio | 1234 | Lokal (GGUF-Modell) |
| Ollama | 11434 | Lokal (Embeddings + Inferenz) |
| GitHub Copilot-Bridge | 5015 | Cloud (über Node.js-Bridge) |
Bringt Prodigy auf eurem Netzwerk zum Laufen
pip install psycopg2-binary pymysql pypdf python-docx openpyxl \
python-pptx chardet bcrypt playwright
# Optional: Playwright-Browser ( für playwright_browse-Werkzeug)
playwright install chromium
# Optional: agent-browser CLI für reichhaltigere manuelle Browser-Automatisierung
npm install -g agent-browser
# Optional: OCR-Unterstützung innerhalb von Dokument-Knoten
sudo apt install tesseract-ocr poppler-utils
# Erstelle die Prodigy-PostgreSQL-Datenbank und -Tabellen
psql -U postgres -f postgres.sql
# Wende Auth-Sitzungs-Tabellen an
psql -U postgres -d prodigy -f sql_auth_setup.sql
cd /home/xteve/prodigy
./start.sh
# oder direkt:
python3 proxy_server.py
Lokal: http://192.168.1.4:9999
Öffentlich: https://prodigy.xtevision.net
Direkt: http://192.168.1.4:9999
# MLX-Server
mlx_lm.server --model <model-path> --port 5010
# LM Studio (GUI - startet automatisch)
# Ollama
ollama serve # port 11434
# GitHub Copilot-Bridge
cd /path/to/copilot
node copilot_bridge.mjs
Verzeichnislayout und Modulorganisation
prodigy/
├── index.html # Haupt-UI-Einstiegspunkt
├── styles.css # Anwendungsstile (Hell/Dunkel-Modi)
├── config.json # Laufzeit-Konfiguration (Backends, SearXNG, Embedding, Wisdom-DB)
├── proxy_server.py # Python-HTTP-Server (Port 9999)
├── copilot_bridge.mjs # GitHub Copilot ↔ OpenAI-Bridge (Port 5015)
├── start.sh # Bequemlichkeits-Startskript
├── postgres.sql # PostgreSQL-Schema (knowledge_base, users, sessions)
├── sql_auth_setup.sql # Auth-Tabellen-Einrichtung
├── js/
│ ├── main.js # Einstiegspunkt
│ ├── state.js # Globaler Zustand & Backend-Konfiguration
│ ├── constants.js # NODE_TYPES-Enum, Throttle-Werte
│ ├── utils.js # fetchWithTimeout, Abort-Controller, URL-Helfer
│ ├── logic/
│ │ ├── execution.js # Kern-Workflow-Engine — alle Knoten-Ausführungslogik
│ │ └── workflow.js # Speichern / Laden / Import / Export
│ └── ui/
│ ├── auth.js # Login / Registrierung-UI
│ ├── connections.js # SVG-Verbindung-Zeichnung
│ ├── dashboard.js # Dashboard & Workflow-Generierung
│ ├── node_manager.js # Knoten-Erstellung, Einstellungspanels
│ ├── playground.js # Leinwand, Drag, Pan, Resize
│ └── priority_manager.js # Ausführungsreihenfolge Drag-and-Drop
├── workflows/ # Fertige Workflow-Vorlagen
│ ├── incident_triage_escalation.json
│ ├── customer_support_triage.json
│ ├── competitive_intel_brief.json
│ ├── sql_ops_assistant.json
│ ├── deep_research_sweep.json
│ ├── schema_migration_checklist.json
│ ├── db_incident_response.json
│ ├── xlsx2wisdom.json
│ ├── marketing.json
│ ├── software.json
│ ├── agency.json
│ └── developer/ # Software-Liefer-Agentur-Vorlagen
│ ├── software_development_agency_sota.json
│ ├── software_development_agency_enterprise_saas.json
│ ├── software_development_agency_ai_agent_platform.json
│ ├── software_development_agency_regulated_internal_tool.json
│ └── software_development_agency_parallel_specialists.json
├── plugins/ # Knoten-Plugins (eingebaut + Manifest)
└── logs/
└── app.log # Anwendungslogmain.js (Bootstrap)
├── state.js
├── constants.js
├── utils.js
├── logic/execution.js → state.js, constants.js, utils.js
├── logic/workflow.js → state.js, utils.js
├── ui/auth.js → state.js, utils.js
├── ui/connections.js → state.js, playground.js
├── ui/dashboard.js → state.js, workflow.js, node_manager.js
├── ui/node_manager.js → state.js, constants.js, execution.js
├── ui/playground.js → state.js, connections.js, constants.js
└── ui/priority_manager.js → state.js, workflow.js
Visueller Editor, Authentifizierung, Gedächtnis, Werkzeuge und mehr
Drag-and-Drop-Leinwand zum Zusammensetzen von AI-Pipelines. Pan, Zoom, Resize von Knoten. Verbindungen mit SVG-Linien gezeichnet.
Benutzerregistrierung und -login. Alle AI-Aktionen benötigen einen gültigen X-Session-ID-Header. bcrypt-Passwort-Hashing.
PostgreSQL-gestützte Wissensbasis. AI-Knoten rufen automatisch relevante Fakten vor der Inferenz ab und speichern neue Fakten nach erfolgreichen Läufen.
AI-Knoten können web_search, fetch_webpage, playwright_browse, inspect_project, read_project_file, write_file, create_directory, update_memory, wisdom_memory bei der Inferenz aufrufen.
Eingebautes semantischen Chunk-Auswahl mit nomic-embed-text über Ollama. Konfigurierbare Chunk-Größe und Überlappung.
Native Vision-Unterstützung. Bilder über Bildknoten hochladen und an vision-fähige Modelle senden (Qwen-VL, LLaVA, etc.).
PDF/DOCX/XLSX/PPTX/TXT/CSV hochladen. Text wird extrahiert und an AI-Knoten gesendet. OCR-Unterstützung über Tesseract.
MySQL/MariaDB direkt aus Workflow-Knoten abfragen. DB-Schema-Knoten für Tabellen/Spalten-Introspektion.
SearXNG-Metasearch mit konfigurierbaren Motoren und Sprache pro Knoten. Standardmotoren: google, bing, duckduckgo.
Logik-Switch für AI/Brainstorm/Translator/Decider-Knoten hinter einem booleschen Auslöser-Signal für bedingte Ausführung.
Eingebaute und Manifest-Knoten-Plugins definieren ihre eigenen Metadaten. Dashboard liest aus demselben Plugin-Register.
Echtzeit-Head-Up-Display für Werkzeugaufrufe, Gedächtnis-Ereignisse, Fehler. Nicht-aufdringliches Panel am unteren Bildschirmrand.
Vollständiger Katalog verfügbarer Knotentypen
| Knoten | Zweck |
|---|---|
| Input | Starrer Text-Prompt-Eingang |
| Bild | Bild hochladen (Base64) für Vision-Modelle |
| Dokument | Bild hochladen & PDF/DOCX/XLSX/PPTX/TXT/CSV parsen |
| Excel-Experte | XLSX-Blätter, Formeln, Abhängigkeiten inspizieren; KI-Analyse mit manueller Remap-Zuordnung kombinieren |
| Exit | Endausgabe mit TXT/JSON-Download |
| Knoten | Zweck |
|---|---|
| DB-Schema | Tabellen/Spalten-Schema aus MySQL/MariaDB abrufen |
| DB-Abfrage | SQL gegen MySQL/MariaDB-Datenbank ausführen |
| Knoten | Zweck |
|---|---|
| Fetch | URL scrapen; behandelt CJK/Cyrillic-Kodierungen über chardet |
| SearXNG | Metasearch mit konfigurierbaren Motoren & Sprache pro Knoten |
| Knoten | Zweck |
|---|---|
| AI | LLM-Inferenz mit Werkzeugaufruf, RAG, Wisdom-Recall |
| AI Decider | LLM-Klassifikator → true / false / error für Routing |
| Translator | Quellsprache auto-erkennen → Zielsprache |
| Brainstorm | Mehrpass-KI-Konsens (3 interne Runden) |
| Wisdom | Explizite langfristige Gedächtnis-Lese/Schreib-Knoten |
| Knoten | Zweck |
|---|---|
| Deploy | Release-Planung, CI/CD, Rollout und Rollback-Orchestrierung |
| Monitor | Beobachtbarkeit, Alarmierung, Fehlerverfolgung und Runbook-Planung |
| Strategist | Mission-Level-Planung, Tradeoffs und Ansatzauswahl |
| Tactical Director | Strategie in zugewiesene Aufgaben, Berichte und Eskalationen aufteilen |
| Worker Agent | Spezialaufgaben ausführen und konkrete Ergebnisse zurückgeben |
| Innovator | Neue, technisch fundierte Lösungskonzepte generieren |
| Security Police | Politik, Datenschutz, Sicherheit und operativer Risikob.review |
| Knoten | Zweck |
|---|---|
| Logic Switch | Fluss-Branching auf true / false / error-Signale |
| Timer | Ausführung vor Fortsetzen des Flusses verzögern |
| Auslöser-Port | Boolesches Gate für AI/Brainstorm/Translator/Decider-Knoten |
| Knoten | Zweck |
|---|---|
| Projekt | Ein Projekt-Pfad unter projects/ initialisieren und sperren |
| Coder | Den verknüpften Coding-Workspace für das ausgewählte Projekt öffnen |
| Kommunikator | Knoten-Ausgabe über E-Mail, Telegram oder beide ausliefern |
| Knoten | Zweck |
|---|---|
| PLC / SPS | PLC-artige Logik mit dynamischen benannten I/O-Pins, zurückgehaltenem Zustand, backend-seitigen Regel-/Python-/ST-Motoren und OpenPLC-Bridge-Hooks ausführen |
| Math-Prozessor | Deterministische Berechnungen, seed-basierte Zufalls-Generierung und Funktionstabelle-Auswertung |
Erweiterbarer Katalog mit Manifest-basierter Entdeckung
Alle Knotentypen werden über das Plugin-Register definiert. Jeder Knoten-Plugin liefert Metadaten wie:
class IProdigyNode:
def Initialize(self, config): ...
def Execute(self, input_data, ctx): ...
def Report(self): ...
def Hibernate(self): ...
def UpdateConfig(self, new_config): ...
Die Dashboard-Workflow-Architekten liest das Live-Plugin-Register und nutzt das description-Feld jedes Plugins beim Generieren von Workflows. Dies hält generierte Workflows mit dem tatsächlichen Knotenkatalog, einschließlich neuerer Rolle-Knoten und zukünftiger Manifest-Plugins, auf dem Laufenden.
Konfigurieren und routen zu mehreren KI-Anbietern
Backends werden in config.json unter dem backends-Schlüssel konfiguriert. Jedes Backend hat eine URL und ein Standardmodell.
| Backend | Host | Port | Typ | Anmerkungen |
|---|---|---|---|---|
| MLX | 192.168.10.3 | 5010 | Lokal | Apple-Silicon-MLX-Server |
| LM Studio | 192.168.10.3 | 1234 | Lokal | GGUF-Modell beliebig |
| Ollama | 192.168.10.3 | 11434 | Lokal | Auch für Embeddings verwendet |
| GitHub Copilot | 192.168.10.3 | 5015 | Cloud | Require copilot_bridge.mjs läuft |
Die Bridge übersetzt OpenAI-kompatible Anfragen in GitHub Copilot SDK-Aufrufe und läuft separat auf der Apple-Silicon-Mac:
cd /path/to/copilot
node copilot_bridge.mjs
# Konfigurationspfad bei Bedarf überschreiben:
COPILOT_BRIDGE_CONFIG_PATH=/path/to/copilot_bridge.config.json node copilot_bridge.mjs
| Modell-ID | Bezeichnung |
|---|---|
| gemini-3-pro | Gemini 3 Pro (Preview) — Standard |
| gpt-5.3-codex | GPT-5.3-Codex |
| gpt-5.2-codex | GPT-5.2-Codex |
| gpt-5.2 | GPT-5.2 |
| gpt-5.1-codex-max | GPT-5.1-Codex-Max |
| gpt-5.1-codex | GPT-5.1-Codex |
| gpt-5.1 | GPT-5.1 |
| gpt-5.1-codex-mini | GPT-5.1-Codex-Mini (Preview) |
| gpt-5-mini | GPT-5 mini |
| gpt-4.1 | GPT-4.1 |
Die Bridge unterstützt sowohl Streaming (stream: true) als auch nicht-streamende Anfragen und wiederverwendet Sitzungen pro Modell, um den pro-Anfrage-Handshake-Overhead zu vermeiden.
/browseZusammensetzen, Speichern und Importieren von AI-Pipelines
[Input: Thema] → [SearXNG] → [AI: Ergebnisse zusammenfassen] → [Exit]
[Bild-Hochladen] → [AI (Vision-Modell)] → [Exit]
[Dokument] → [AI (mit Wisdom-Recall an)] → [Wisdom-Knoten: Ergebnis speichern] → [Exit]
[Input] → [AI Decider] → true-Port → [AI: Erfolg behandeln] → [Exit]
→ false-Port → [AI: Fehler behandeln] → [Exit]
Verbindet die Ausgabe eines beliebigen Knotens mit dem Auslöser-Port eines AI / Brainstorm / Translator / Decider-Knotens. Der nachgelagerte Knoten führt nur aus, wenn das Auslöser-Signal auf true auswertet.
Fertige Vorlagen befinden sich in workflows/. Import über die Import-Schaltfläche in der Symbolleiste.
| Datei | Beschreibung |
|---|---|
| incident_triage_escalation.json | Vorfall-Aufnahme → AI-Schweregrad-Gate → routete Eskalationspfad |
| customer_support_triage.json | Nachrichten-Normalisierung → Auto-Auflösen-Gate → menschliche Übergabe |
| competitive_intel_brief.json | Websuche-Sweep → Quellen-Destillation → strategischer Brief |
| sql_ops_assistant.json | NL→SQL → DB-Ausführung → Qualitäts-Gate → Einblicke |
| deep_research_sweep.json | Mehrquellen-Forschung mit Quellen-Konsolidierung |
| schema_migration_checklist.json | DB-Schema-Diff → Migrations-Checklist-Generierung |
| db_incident_response.json | Datenbank-Vorfall-Erkennung und Antwort-Workflow |
| xlsx2wisdom.json | Tabellenkalkulation parsen → Zeilen in Wisdom-Wissensbasis speichern |
| marketing.json | Marketing-Kopier-Generierungs-Pipeline |
| software.json | Software-Engineering-Workflow-Gerüst |
| agency.json | Mehr-Agentur-Agentur-Workflow |
Die Kategorie workflows/developer/ enthält Software-Liefer-Agentur-Vorlagen. Sie alle sperren zuerst ein Projekt-Codebase mit einem Projekt-Knoten vor der Interpretierung des Kunden-Entwurfs und nutzen Rolle-Knoten plus Governance-Gates, um mehrdeutige Anfragen bei komplexen Kundenanfragen zu reduzieren.
| Datei | Verwenden bei |
|---|---|
| software_development_agency_sota.json | Standard-Hochdisziplin-Software-Agentur-Fluss für komplexe Kundenarbeit. Beste Allround-Vorlage. |
| software_development_agency_enterprise_saas.json | Mehrmandanten-SaaS-Produkt mit Onboarding, IAM, Abrechnung, Migration oder Enterprise-Support-Bedürfnissen. |
| software_development_agency_ai_agent_platform.json | KI-Agentur-Plattform, Orchestrierungs-Ebene, Werkzeug-Runtime, Gedächtnis-System oder Agent-Operations-Stack. |
| software_development_agency_regulated_internal_tool.json | Internes reguliertes Werkzeug mit Genehmigungen, Audits, Politikdokumenten oder kontrollierten Bereitstellungsanforderungen. |
| software_development_agency_parallel_specialists.json | Komplexe Anfrage, die parallele Frontend-, Backend- und AI/Daten-Workstreams rechtfertigt. |
PostgreSQL-gestützte Wissensbasis mit Auto-Recall und Auto-Store
AI-Knoten können automatisch relevante Einträge aus der PostgreSQL-knowledge_base-Tabelle vor der Inferenz abrufen und neue Fakten nach einem erfolgreichen Lauf Speichern.
knowledge_base und messages-Abfragen auf den aktuellen Benutzerusers, sessions, pg_* und information_schema werden durch den Wisdom-Abfrage-Endpunkt nicht exponiertWisdom wird in config.json unter dem wisdom-Schlüssel konfiguriert:
{
"wisdom": {
"host": "192.168.1.4",
"port": 5432,
"database": "prodigy",
"user": "prodigy_user",
"password": "your-password"
}
}
Wenn Sie bereits Legacy-geteilte Wisdom-Zeilen hat, führen Sie docs/sql_wisdom_user_isolation.sql aus und entscheiden, ob Sie diese alten Zeilen einem bestimmten Besitzer zurückfüllen sollen oder sie für normale Benutzer unzugänglich lassen.
Werkzeuge, die AI-Knoten bei der Inferenz verfügbar sind
| Werkzeug | Beschreibung |
|---|---|
| web_search | Websuche über SearXNG-Metasearch |
| fetch_webpage | URL mit Kodierungs-Auto-Erkennung scrapen (CJK, Kyrillisch) |
| playwright_browse | High-level gerenderte-Seite-Browse/Lese über Playwright-HTTP-Bridge |
| inspect_project | Bestehendes Projekt-Ausgabe inspizieren vor Wiederholungen; verhindert Überschreiben von Dateien, es sei denn, explizit angefragt |
| read_project_file | Eine Datei aus dem Projektverzeichnis lesen |
| write_file | Eine neue Datei im Projektverzeichnis schreiben oder erstellen |
| create_directory | Ein Verzeichnis rekursiv im Projektverzeichnis erstellen |
| update_memory | Internes Agent-Gedächtnis bei der Inferenz aktualisieren |
| wisdom_memory | Lese/Schreib gegen die PostgreSQL-Wisdom-Wissensbasis |
Zwei Stufen von Browser-Automatisierung sind auf der Apple-Silicon-Host verfügbar:
copilot_bridge.config.json konfiguriert ist. High-level-API für Navigation und Lesen gererteter Seiten.agent-browser CLI. Low-level strukturierte Automatisierung für open/click/fill/press/wait/snapshot/get/is-Aktionen. Nutzt optional CDP, wenn playwrightCdpTarget oder PLAYWRIGHT_CDP_TARGET konfiguriert ist.Authentifizierung, Datenisolation und Datenschutz-Kontrollen
sessionStorage gespeichert (bei Tab-Schließen gelöscht)X-Session-ID-Header bei jeder Anfrage gesendetusers, sessions, pg_*, information_schema) werden durch Abfrage-Endpunkte niemals exponiertDer Server ist mehrthreadig — jede Anfrage läuft in ihrem eigenen Thread, sodass langlaufende AI-Inferenz-Aufrufe die UI oder andere Anfragen nicht blockieren. Anfragen-Größenbegrenzung: 200 MB (für Dokument-Hochladungen).
Server-Endpunkte und Anfrage/Antwort-Formate
| Method | Pfad | Beschreibung |
|---|---|---|
GET | /health | Gesundheitsprüfung — gibt {status:'ok', server:'prodigy', ts:<unix>} zurück |
GET | /* | Statische Datei-Bereitstellung (UI-Assets) |
POST | /proxy | CORS-Proxy für beliebige URLs (Fetch-Knoten, SearXNG) |
POST | /ai | Alle AI-Aktionen: Auth, Doc-Extraktion, DB-Abfrage, Wisdom-Abfrage, Embed, Werkzeug-Ausführung und KI-Backend-Proxy |
GET /health
X-Session-ID: your-session-token
POST /ai
Content-Type: application/json
X-Session-ID: your-session-token
{
"action": "ai_inference",
"backend": "mlx",
"model": "your-model",
"prompt": "Ihr Prompt hier",
"tools": ["web_search", "fetch_webpage"],
"wisdom_recall": true,
"wisdom_store": true
}
POST /proxy
Content-Type: application/json
X-Session-ID: your-session-token
{
"url": "https://api.example.com/data",
"method": "GET",
"headers": {}
}
Laufzeit-Konfiguration über config.json
config.json trägt die verwaltbaren Standardwerte für:
Jeder SearXNG-Knoten hat zwei optionale Dataset-Attribute, die direkt im Knoten-Einstellungspanel gesetzt werden können:
| Einstellung | Dataset-Schlüssel | Standard |
|---|---|---|
| Such-Motoren | searxngEngines | google,bing,duckduckgo |
| Sprache | searxngLanguage | en-US |
Diese fallen auf config.searxng.engines / config.searxng.language zurück, wenn sie nicht am Knoten gesetzt sind.
{
"embedding": {
"endpoint": "http://192.168.10.3:11434/api/embeddings",
"model": "nomic-embed-text",
"chunkSize": 500,
"chunkOverlap": 50
}
}
E-Mail- und Telegram-Auslieferung aus Communicator-Knoten
Der Kommunikator-Knoten liest Standardwerte aus einem optionalen notifications-Block in config.json. Knoten-Felder können diese Werte zur Laufzeit überschreiben.
{
"notifications": {
"defaults": {
"channel": "email",
"emailTo": "team@example.com",
"emailSubject": "Prodigy Update",
"telegramChatId": "123456789"
},
"smtp": {
"host": "smtp.example.com",
"port": 587,
"user": "mailer@example.com",
"password": "",
"fromAddress": "mailer@example.com",
"starttls": true,
"ssl": false,
"timeout": 30
},
"telegram": {
"botToken": "<telegram-bot-token>",
"chatId": "123456789",
"parseMode": "Markdown",
"disablePreview": false
}
}
}
Industrielles Prototyping mit PLC-artiger Logik
Der eingebaute PLC / SPS-Knoten unterstützt ein Runtime-Modell der zweiten Stufe, das auf industrielles Prototyping abzielt:
| Motor | Beschreibung |
|---|---|
| Eingebaut | Ursprüngliche Blinker / Zähler / Input-Mirror-Muster |
| Regeln | Zeilenbasierte PLC-Logik wie TON, TOF, TP, CTU und Q0.0 := T1.Q |
| Python | Sandboxed Backend-Ausführung über run_cycle(io, state, ctx) |
| Strukturierter Text | Backend-Hochladen an eine OpenPLC-Runtime |
Für die Strukturierten Text-Bereitstellung und Modbus/OpenPLC-Bridge, fügen Sie einen optionalen plc-Block zu config.json hinzu:
{
"plc": {
"openplcApiUrl": "http://192.168.1.50:8080/api",
"modbusHost": "192.168.1.50",
"modbusPort": 502,
"inputCoilOffset": 0,
"outputCoilOffset": 100
}
}
Das Backend-Proxy nutzt diese Konfiguration für ST-Hochladen und Modbus-I/O-Synchronisierung. Dies ist für die remote-Linux/OpenPLC-Seite gedacht; der Browser spricht niemals direkt mit Modbus.
Das VPN-verbundene Torizon-Board wird separat vom PLC-Bridge konfiguriert, damit der SSH-Zugang getestet werden kann, bevor Kamera oder LiDAR-Hardware vorhanden ist:
"port": 22, "user": "", "sshKeyPath": "", "remoteProjectPath": "/home/torizon", "pythonPath": "python3", "connectTimeoutSec": 8, "probeCommand": "uname -a" } }Das Admin-Config-Overlay zeigt diese Felder an und enthält eine Aktion Board-Zugang testen. Diese Sonde prüft zuerst die reine TCP-Erreichbarkeit des SSH-Ports und versucht dann bei konfiguriertem Benutzer einen nicht- интеракtiven SSH-Login.
Erweitern Sie Prodigy mit benutzerdefinierten Knoten und Plugins
plugins/IProdigyNode-Schnittstelleclass MyCustomNode:
id = "my_custom_node"
nodeType = "MY_CUSTOM"
title = "My Custom Node"
description = "Does something awesome"
def Initialize(self, config):
self.config = config
def Execute(self, input_data, ctx):
# Process input
result = "Output based on: " + input_data
return result
def Report(self):
return {"status": "ok"}
def Hibernate(self):
pass
def UpdateConfig(self, new_config):
self.config = new_config
Das Frontend ist modular. Wichtige Erweiterungspunkte:
js/constants.js: Neue Knotentypen zum Enum hinzufügenjs/ui/node_manager.js: Einstellungspanels für neue Knoten hinzufügenjs/logic/execution.js: Ausführungslogik für neue Knotentypen hinzufügenjs/ui/playground.js: Benutzerdefiniertes Rendering für neue Knoten-Visuellen| Taste / Aktion | Wirkung |
|---|---|
| Entfernen | Ausgewählten Knoten entfernen |
| Kopfzeile ziehen | Knoten verschieben |
| Leinwand ziehen (leerer Bereich) | Ansicht verschieben |
| Rechte untere Ecke des Knotens ziehen | Knoten skalieren |
Gewöhnliche Probleme und Lösungen
PORT = 9999 in proxy_server.pypostgres.sql und sql_auth_setup.sql auf der prodigy-Datenbank angewendet wurden192.168.1.4:5432 läuft und die prodigy-DB existiertcurl http://192.168.10.3:5010/v1/modelscopilot-CLI eingeloggt sind: copilot auth loginnode copilot_bridge.mjscurl http://192.168.10.3:5015/healthagent-browser --helpPLAYWRIGHT_CDP_TARGET auf einen anderen Browser-Endpunkt oder mit AGENT_BROWSER_BIN einen anderen CLI-Pfadpip install pypdf.doc, .xls, .ppt) werden nicht unterstützt — konvertieren Sie zu .docx/.xlsx/.pptxsudo apt install tesseract-ocr poppler-utilsexport TESSERACT_LANG=eng (oder eng+chi_sim) bevor Sie den Server startenknowledge_base-Tabelle in der prodigy-PostgreSQL-Datenbank existiertconfig.jsoncurl http://192.168.1.4:8888/search?q=test&format=jsonDas Proxy-Server autodetectiert Kodierungen über chardet. Falls die Probleme bestehen, prüfen Sie das deklarierte Charset der Quell-Website.