v0.2.0 - Alpha

Aufmerksamkeit ist alles, was das Modell braucht.
Fokussierung ist das, was niuma_code leistet.

2017 hat "Attention is All You Need" das Zeitalter definiert — jede Modellintelligenz basiert auf Attention. Acht Jahre später haben wir erkannt, dass den Modellen nicht die Attention fehlt, sondern die Fähigkeit, sie dort zu platzieren, wo es wirklich zählt. Je länger der Kontext wird, desto mehr verwässert Rauschen die wirklich wichtigen Informationen. niuma_code tut genau eine Sache: Kontext lenken, Fokussierung hinzufügen — damit jedes Token dort ankommt, wo es hingehört.

🔒
Lokal ausgeführt
Daten verlassen Ihren Computer nicht — vollständige Privatsphäre
🛡️
Datenschutz zuerst
API-Schlüssel werden lokal gespeichert, Gespräche werden nicht hochgeladen
📦
v0.2.0 Alpha
Kontinuierlich verbessert, Community-gesteuert
💬
Community-Support
GitHub Issues — direkter Kontakt zu den Entwicklern

So funktioniert es in der Praxis

Echte Bildschirmaufnahme des IDE-Orchestrierungsmodus — testen Sie die Fokussierung von niuma_code in 1 Minute

Warum niuma_code die richtige Wahl ist

Kein Ersatz für Claude Code, sondern ein Ergänzungstool für maximale Fokussierung

⚙️

Autonomer Harness-Modus

Standardmodus — keine Befehle nötig. Das LLM erkundet autonom in einer Tool-Schleife, handelt while es denkt, und führt so lange aus, bis die Aufgabe abgeschlossen ist.

  • Tool-use-Schleife: LLM entscheidet autonom über Dateilesen / Codebearbeitung / Befehlsausführung
  • Automatischer API-Fehler-Neuversuch, Streaming-Rendering + ESC-Abbruch + automatische Komprimierung langer Ausgaben
  • Ideal für vage, schwer zerlegbare Aufgaben — das LLM entscheidet über Abschluss
🔁

Loop-Ingenieurs-Orchestrierung

Mit /loop <ziel> in eine zielgerichtete Selbstschleife eintreten: Planen Sie mit Verifikationsbefehlen, führen Sie sequenziell aus, prüfen Sie jeden Schritt und korrigieren Sie sich bei Fehlern selbst.

  • Planen → Ausführen → Prüfen → Fehler-Neuversuch (maximal 3x, mit Fehlerbegründung)
  • Doppeltes orthogonales Gate: MAX_ROUNDS=20 Aufgabenlimit + MAX_RETRIES=3 Selbstkorrektur
  • Jede Runde ruft Harness für einen Schritt auf — ideal für zerlegbare, prüfbare Engineering-Aufgaben
🖥️

TUI-Vollbildmodus

Basierend auf prompt_toolkit Vollbild-UI. Die Eingabe ist immer unten fixiert, Sie können während des LLM-Streamings jederzeit neue Nachrichten hinzufügen — der Inhalt wird nicht verdrängt.

  • 5 Modal-Overlays: Modelleinstellung, Nachrichtenwarteschlange, Kontextwechsel, Gesprachsverwaltung, Berechtigungsbestätigung
  • Markierung durch Mausziehen, Scrollen zum Lesen, Linksklick zum automatischen Kopieren, Strg+Scrollen für Schriftzoom
  • Echtzeit-Statusleiste: Denkvorschau, Ein-/Ausgabe-Token-Anzahl, Komprimierungsfortschritt + ESC-Abbruch
💻

IDE-Orchestrierungsmodus

Vollbild-Code-Editor. Schreiben Sie Orchestrierungsskripte in nativer Python-Syntax und integrieren Sie LLM-Aufrufe in steuerbare Skript-Workflows.

  • llm_call / llm_confirm / llm_judge Funktionen für steuerbare LLM-Orchestrierung einspritzen
  • F5-Vorschau (AST statische Analyse), F6-Ausführung (autonom, Tool-Berechtigungen automatisch erteilt)
  • Sichere Sandbox-Ausführung + Blacklist gefährlicher Imports (os/subprocess/socket usw.) — das einzige Sicherheitsnetz im autonomen Modus
🔌

Multi-Anbieter-Routing

Konfigurieren Sie mehrere API-Endpunkte in settings.json — Anfragen werden automatisch basierend auf dem Modellnamen an den richtigen Anbieter geroutet und können innerhalb der Sitzung frei gewechselt werden.

  • Jeder Anbieter deklariert base_url / api_key / unterstützte Modellliste
  • Modellwechsel über #tag oder /model — Anfragen werden automatisch mit dem richtigen Endpunkt verbunden
  • Dreistufige Konfigurationskaskade (Benutzerebene / Projektebene / Projektlokal), spätere Definitionen haben Vorrang
🗂️

Parallele Kontextverwaltung

Erweitern Sie ein einzelnes Gespräch auf N parallele Kontexte, die unabhängig Historie, Token-Anzahl und Komprimierungszustand verwalten — keine Kreuzkontamination.

  • LRU-Verdrängung, Standardlimit 5 (konfigurierbar über max_contexts) — Verdrängung = archiviert und wiederherstellbar
  • Visuelles Overlay /context zum Wechseln; asynchrone Zusammenfassung beim Verlassen
  • /messages Mehrfachauswahl nach Einheiten — Löschen / Umordnen / LLM-Zusammenfassungsintegration
🕸️

Code-Wissensgraph

Analysieren Sie Code-Strukturen mit tree-sitter, bauen Sie Symboldefinitionen, Aufrufketten und Abhängigkeitsgraphen auf — das LLM findet die genaue Position, bevor es eine Zeile liest.

  • 4 schreibgeschützte Abfragewerkzeuge: Symbolsuche, Dateiabhängigkeiten, Referenzen, Aufrufketten
  • Gibt Datei:Zeilennummer und Signatur zurück — ersetzt den Nadel-im-Heuhaufen-Ansatz von grep
  • On-Demand-Neuaufbau mit 3-Kriterien-Logik — vermeidet vollständiges Parsen beim Start
🤖

Parallele Sub-Agenten-Recherche

Schreibgeschützte Sub-Agenten führen Tools parallel aus, forschen in isolierten Kontexten und geben nur Zusammenfassungen zurück — der Hauptkontext bleibt sauber.

  • Mehrere Sub-Agenten führen schreibgeschützte Tools parallel aus, nicht blockierend
  • Recherche in isolierten Kontexten, nur Zusammenfassungen — kein Verschmutzen des Hauptgesprächs
  • gehört zum Standard-Harness-Paradigma, kein Standalone-Modus, on-demand aufgerufen
🧠

Wahrnehmungsgesteuertes Gedächtnis

Persistentes Gedächtnis durch memory-palace — Ereignisse während der Ausführung werden in Echtzeit als Gedächtnis erfasst und Erfahrungen werden über Sitzungen hinweg angesammelt.

  • 10 Arten von Wahrnehmungsereignissen (visuell/körperlich/Geruch/Geschmack/Ergebnis usw.), Echtzeit-Schreibvorgang statt nach dem Gespräch
  • Fakten-Triplets + Gesprächszusammenfassung, 4-stufiges Abrufverfahren + bayesscher Zerfall
  • Automatische Injektion in den Systemprompt bei der nächsten Sitzung, stabiler Abrufposition
🎯

Ergebnis-Belohnungsverfolgung

Verfolgen Sie den gesamten Lebenszyklus von Aufgabenzielen, berechnen Sie Belohnungswerte basierend auf Abschlussqualität und schreiben Sie diese als Wahrnehmungsereignis ins Gedächtnis.

  • OutcomeTracker berechnet Belohnungswerte von 0.0-1.0 über den gesamten Aufgabenlebenszyklus
  • Belohnungswerte dienen als Signal für die Wiederverwertungsbewertung im Gedächtnis
  • Als eines von 10 Wahrnehmungsereignissen integriert mit read/write/tool-call-Ereignissen

So nutzen Sie beide Modi effektiv

Wenn die Schritte unklar sind, beschreiben Sie sie und iterieren Sie (Harness). Wenn eine Checkliste existiert, verwenden Sie /loop

🧭

Harness-Kernpunkte

Harness hat keinen Neuplanungs-Loop — je klarer die Eingabe, desto genauer die autonome Erkundung.

Einsatzszenario: Sie haben eine grobe Idee, können die Schritte aber nicht klar formulieren und möchten iterativ vorgehen. Beispiel: "Finde den Fehler auf der Login-Seite und behebe ihn"
  • Beschränkungen vorab klar dokumentieren: Ziel + betroffene Dateien/Funktionen + Annahmekriterien — keine Änderung der Anforderungen während der Ausführung
  • Ideal wenn Grenzen vage aber das Ziel klar ist; je klarer die Schritte, desto schneller die Konvergenz
  • Steuerelemente nutzen: Jederzeit mit ESC stoppen, lange Ausgaben werden automatisch komprimiert, API-Fehler werden automatisch wiederholt
  • "Fertig" und "wirklich fertig" sind verschieden — nach wichtigen Änderungen selbst testen/kompilieren
🎯

Loop-Kernpunkte

Selbstkorrektur hängt vollständig von der Verifikation ab — nur prüfbare Ziele machen 3 Korrekturen sinnvoll.

Einsatzszenario: Sie können die Aufgabe in Schritte zerlegen und jeder Schritt hat eine Prüfmethode. Beispiel: "/loop Pagination zur Benutzer-API hinzufügen und nach Änderungen py_compile ausführen"
  • Ziele müssen in Schritte mit Verifikationsbefehlen zerlegbar sein — "Mach es raffinierter" ist nicht prüfbar
  • Prüfmethoden direkt im Ziel dokumentieren (py_compile / Tests) für höchste Planungsgenauigkeit
  • 3 fehlgeschlagene Korrekturen bedeuten in der Regel unzureichende Verifikationsinformation — lieber weiter zerlegen als härter versuchen
  • 3 Fehler bedeuten nicht Stopp — es wird protokolliert und der Loop läuft weiter; prüfen Sie die [!!]-Marker in der Zusammenfassung

In 3 Schritten starten

Herunterladen, Konfigurieren, Starten — in Sekunden startklar

01 Herunterladen
⬇ niuma.exe herunterladen
Windows · Keine Installation · Sofort ausführbar
02 Konfigurieren
# ~/.niuma/settings.json
{
  "factories": [{
    "api_key": "your-key"
  }]
}
03 Starten
$ niuma.exe
niuma_code v0.2.0 gestartet

settings.json Parameterübersicht

Konfigurationsdatei-Pfad: ~/.niuma/settings.json

factoriesMulti-Anbieter API-Konfiguration. Jeder Anbieter deklariert base_url / api_key / unterstützte Modellliste; Anfragen werden automatisch per Modellname geroutet
💡 Konfigurationsbeispiel
{
  "factories": [
    {
      "base_url": "https://api.anthropic.com",  // Anthropic offizieller Endpunkt
      "api_key": "sk-ant-xxx",                   // Erforderlich; alle drei Felder müssen vorhanden sein
      "options": ["claude-sonnet-4-6", "claude-opus-4-8"]  // Unterstützte Modelle für diesen Anbieter
    },
    {
      "base_url": "https://your-proxy.example.com",  // Anthropic-kompatibler Proxy-Endpunkt
      "api_key": "sk-proxy-xxx",
      "options": ["claude-sonnet-4-6"]  // Unterstützte Modelle für diesen Endpunkt
    }
  ]
}
Parameter Typ Standard Beschreibung
base_url string --- API-Endpunkt-URL (erforderlich)
api_key string --- API-Schlüssel (erforderlich)
options string[] [] Unterstützte Modellnamen für diesen Anbieter
llmModell, Effekt-Level, Denk-Budget und Kontextverwaltung
💡 Konfigurationsbeispiel
{
  "llm": {
    "default_model": "claude-sonnet-4-6",   // Standardwert für /model Umschaltung
    "default_effort": "high",               // Bestimmt welches thinking_budget verwendet wird
    "max_contexts": 5,                      // Maximale parallele Kontexte; LRU-Verdrängung bei Überschreitung
    "resume_latest_context": true,          // Letzten aktiven Kontext beim Start wiederherstellen
    "options": [                            // Modell -> Effekt-Zuordnung
      {"claude-sonnet-4-6": ["low", "medium", "high"]},
      {"claude-opus-4-8": ["low", "medium", "high", "max"]}
    ],
    "thinking_budget_low": "0",             // 0 = Erweitertes Denken deaktivieren
    "thinking_budget_medium": "0",
    "thinking_budget_high": "10000",        // Denk-Budget für high effort
    "thinking_budget_max": "20000"           // Denk-Budget für max effort (tiefste Reasoning)
  }
}
Parameter Typ Standard Beschreibung
default_model string "claude-sonnet-4-6" Standardmodell (während der Sitzung fix, umschaltbar über /model)
default_effort string "high" Standard-Effekt-Level — steuert die Tiefe des Denk-Budgets
max_contexts integer 5 Maximale aktive parallele Kontexte; bei Überschreitung wird der älteste per LRU verdrängt
resume_latest_context boolean true Letzten aktiven Kontext beim Start wiederherstellen; false = Neustart
options object[] [] Modell→Effekt-Zuordnung, zur Validierung der /model-Umschaltung verwendet
thinking_budget_low string/int "0" Denk-Token-Budget bei low effort (0 = deaktiviert)
thinking_budget_medium string/int "0" Denk-Token-Budget bei medium effort
thinking_budget_high string/int "10000" Denk-Token-Budget bei high effort
thinking_budget_max string/int "20000" Denk-Token-Budget bei max effort (tiefste Reasoning)
envIn os.environ geschriebene Umgebungsvariablen. Steuern Persona, Debugging, Netzwerk und Berechtigungsverhalten
💡 Konfigurationsbeispiel
{
  "env": {
    "PERSONA_NAME": "niuma",              // KI-Personenname, wird in den Systemprompt injiziert
    "MODEL_BACKGROUND": "claude-haiku-4-5", // Modell für Hintergrundaufgaben (Gedächtnisextraktion, Komprimierung usw.)
    "LANG": "de",                        // UI-Sprache (zh/en/de); steuert auch LLM-Antwortsprache
    "TEMPERATURE_ZERO": "true",            // Hinweis: alle Werte sind Strings
    "API_TIMEOUT": "30",                   // Streaming-Stillstand-Timeout (Sekunden)
    "API_ROUND_MAX": "120",                // Hartes Zeitlimit pro Runde (Sekunden)
    "API_STALL_MAX_RETRIES": "10",        // Maximale Auto-Neuversuche bei Streaming-Stillstand
    "PERMISSION_MODE": "auto",             // auto=Whitelist+Bestätigung / manual=nur Whitelist / skip=alles erlauben
    "ALLOWED_TOOLS": ""                    // Whitelist der erlaubten Tools (kommagetrennt); leer = integrierte Standards
  }
}
Parameter Typ Standard Beschreibung
PERSONA_NAME string "niuma" Personenname, wird in den Systemprompt injiziert
MODEL_BACKGROUND string "claude-haiku-4-5" Modell für Hintergrundaufgaben wie Gedächtnisextraktion, Komprimierung usw.
LANG string "en" UI-Sprache (zh/en/de), steuert auch LLM-Antwortsprache
TEMPERATURE_ZERO string(bool) "true" temperature=0 fixieren für deterministische Ausgabe; false = Modellstandard
API_TIMEOUT string/int "30" Streaming-Stillstand-Timeout (Sekunden) — bei keiner weiteren Ereignissen wird neu verbunden
API_ROUND_MAX string/int "120" Hartes Zeitlimit pro Runde (Sekunden) — erzwingt Beendigung alter Streams
API_STALL_MAX_RETRIES string/int "10" Maximale Auto-Neuversuche bei Streaming-Stillstand
PERMISSION_MODE string "auto" Berechtigungsmodus: auto (Whitelist+Bestätigung) / manual (nur Whitelist) / skip (alles erlauben)
ALLOWED_TOOLS string "" Kommagetrennte Tool-Whitelist; leer = integrierte Standards
compactKontextkomprimierung: Lange Gespräche automatisch komprimieren und wichtige Informationen bewahren
💡 Konfigurationsbeispiel
{
  "compact": {
    // -- Inline-Komprimierung (blockiert Hauptschleife bis Fertigstellung) --
    "inline_trigger": 0.8,      // Wird bei 80% von MAX_TOKENS ausgelöst
    "inline_keep_ratio": 0.4,   // Die neuesten 40% der Nachrichten nach Komprimierung beibehalten

    // -- Asynchrone Komprimierung nach Antwort (nicht blockierend, läuft im Hintergrund) --
    "idle_trigger": 0.5,        // Wird bei 50% von MAX_TOKENS ausgelöst
    "idle_keep_ratio": 0.4,     // Die neuesten 40% der Nachrichten nach Komprimierung beibehalten

    // -- LLM-Zusammenfassung Ausgabe-Limit --
    "max_summary_tokens": 4096  // Max Tokens für generierte Zusammenfassung
  }
}
Parameter Typ Standard Beschreibung
inline_trigger float 0.8 Inline-Komprimierungsauslöser — blockiert die Hauptschleife bei Erreichen
inline_keep_ratio float 0.4 Anteil der neuesten Nachrichten nach Inline-Komprimierung
idle_trigger float 0.5 Idle-Komprimierungsauslöser — wird asynchron nach Antwortausführung ausgeführt
idle_keep_ratio float 0.4 Anteil der neuesten Nachrichten nach Idle-Komprimierung
max_summary_tokens integer 4096 Maximale Ausgabe-Tokens für LLM-generierte Komprimierungszusammenfassung
memory_palaceMemory Palace LLM-Einstellungen; unabhängig vom llm-Block, wird separat geparst
💡 Konfigurationsbeispiel
// Basismodus: Nur regelbasierte Extraktion (kein LLM, keine Kosten)
{
  "memory_palace": {
    "enable_v9": false,        // V9 deaktivieren; Rückgriff auf Legacy V8-Modus
    "llm_enabled": false        // LLM-Verstärkung deaktivieren
  }
}

// Vollmodus: LLM-verstärkte Extraktion (alle drei Felder erforderlich; sonst Rückgriff auf regelbasiert)
{
  "memory_palace": {
    "enable_v9": true,
    "llm_enabled": true,       // Wenn aktiviert, sind die folgenden drei Felder erforderlich
    "base_url": "https://api.anthropic.com",
    "api_key": "sk-ant-xxx",
    "model": "claude-haiku-4-5"    // Empfehlung: Leichtgewichtiges Modell zur Token-Einsparung
  }
}
Parameter Typ Standard Beschreibung
enable_v9 boolean true V9 wahrnehmungsgesteuertes Gedächtnis aktivieren; false = Legacy V8-Modus
llm_enabled boolean false LLM-verstärkte Gedächtnisextraktion aktivieren; false = nur regelbasiert
base_url string "" Gedächtnis-LLM API-Endpunkt (alle drei Felder erforderlich, sonst Rückgriff auf regelbasiert)
api_key string "" Gedächtnis-LLM API-Schlüssel
model string "" Modell für Gedächtnis-LLM (leichtgewichtiges Modell wie Haiku empfohlen)
memory_qualitySchwellenwerte für Gedächtnisqualitätskontrolle; steuern Schreibfilterung und Abrufgenauigkeit
💡 Konfigurationsbeispiel
{
  "memory_quality": {
    "min_store_importance": 0.4,  // Schreib-Gate: Fakten unter diesem Schwellenwert verwerfen
    "min_recall_score": 0.35,     // Abruf-Gate: Erinnerungen unter diesem Schwellenwert überspringen
    "dedup_threshold": 0.3        // Deduplizierung-Schwellenwert: Jaccard-Ähnlichkeit darüber = Duplikat
  }
}
Parameter Typ Standard Beschreibung
min_store_importance float 0.4 Schreib-Gate: Fakten mit Importance unter diesem Schwellenwert werden bei der Extraktion verworfen
min_recall_score float 0.35 Abruf-Gate: Erinnerungen unter diesem Wert werden nicht in den Prompt injiziert
dedup_threshold float 0.3 Deduplizierung-Schwellenwert: Jaccard-Ähnlichkeit darüber = Duplikat, Neuestes beibehalten

Verfügbare Befehle

Schnellaktionen mit Slash-Befehlen ausführen

Befehl Beschreibung
/ide Vollbild-Code-Editor starten
/context Mehrere Kontexte verwalten (Neu/Umbenennen/Wechseln/Löschen)
/help Hilfeinformationen anzeigen
/copy Letzte Antwort in die Zwischenablage kopieren
/resume Unvollständige Aufgaben fortsetzen
/clear Gesprächskontext löschen
/restart niuma neu starten
/model Modell anzeigen/umschalten
/quit Programm beenden

#tag Schnellbefehle

Verwenden Sie #tag, um vordefinierte Anweisungen schnell einzufügen — einmal definiert, unbegrenzt wiederverwendbar

💡

Was ist #tag

Benutzerdefinierte Tags sind benutzerdefinierte Abkürzungen, die bei Eingabe von #tagname in voreingestellten Text expandiert werden.

  • #de wird automatisch zu "Antworte auf Deutsch" expandiert
  • Unterstützt beliebige benutzerdefinierte Tags, case-insensitive
  • Tags können an jeder Stelle der Eingabe platziert werden, werden nach dem Parsen automatisch entfernt
  • Der expandierte Text wird an die Eingabe angehängt und ist für das LLM verständlich
Beispiel: #de Berechnungskomplexität von Bubblesort → [Antworte auf Deutsch] Berechnungskomplexität von Bubblesort
⚙️

Zwei Tag-Typen

Systemtags steuern Betriebsmodi, benutzerdefinierte Tags fügen voreingestellte Anweisungen ein. Sie ergänzen sich gegenseitig.

  • #plan_mode — Nur Analyse erzwingen, keine Ausführung (höchste Priorität)
  • #skip_mode — Alle Berechtigungen überspringen, Tools direkt ausführen
  • #custom — Beliebige benutzerdefinierte Abkürzung
  • Wenn plan_mode und skip_mode gleichzeitig eingegeben werden, hat plan_mode Vorrang
📋

/tag Befehlsverwaltung

Verwenden Sie den /tag-Befehl zum Hinzufügen, Ändern, Löschen und Anzeigen von benutzerdefinierten Tags.

  • /tag — Tag-Verwaltungspanel (TUI) öffnen oder Tag-Liste (CLI) anzeigen
  • /tag add <name> <text> — Neues Tag hinzufügen
  • /tag mod <name> <text> — Vorhandenes Tag ändern
  • /tag rm <name> — Tag löschen
  • /tag ls — Alle Tags auflisten
🎯

Häufige Anwendungsfälle

Häufig verwendete Anweisungen als Tag kapseln, um die Gesprächseffizienz zu steigern.

  • #de — Antwort auf Deutsch erzwingen
  • #fix — Standard-Fehlerbehebungsanweisung
  • #review — Standard-Code-Review-Anforderungen
  • #explain — Detaillierte Code-Logik-Erklärung
Kombination: #plan_mode #de Analysieren Sie den Performance-Engpass dieser Funktion
💾

Speicherort & Konfiguration

Tags werden in einer JSON-Datei gespeichert, die sich am selben Ort wie settings.json befindet.

  • Speicherort: ~/.niuma/custom_tags.json
  • Einfaches Schlüssel-Wert-Format, Schlüssel werden automatisch in Kleinbuchstaben umgewandelt
  • Atomares Schreiben, Windows-kompatibel
Dateibeispiel:
{
  "de": "Antworte auf Deutsch",
  "fix": "Behebe den Fehler"
}
🔄

Parsing-Pipeline

Die Eingabe durchläuft eine 3-Wege-Weiterleitung, die sicherstellt, dass LLM-Verständnis, Gedächtnisabruf und Wahrnehmungsspeicherung jeweils die benötigten Informationen erhalten.

  • raw_input — Originaleingabe, für Trace-Speicherung
  • llm_input — Nach Tag-Expansion, Eingabe für das LLM-Verständnis
  • filter_input — Eingabe ohne Tags, für Gedächtnisabruf
  • Gedächtnis wird durch Tags nicht verschmutzt, Abruf bleibt präzise