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.
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.
- 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.
- 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
settings.json Parameterübersicht
Konfigurationsdatei-Pfad: ~/.niuma/settings.json
factories — Multi-Anbieter API-Konfiguration. Jeder Anbieter deklariert base_url / api_key / unterstützte Modellliste; Anfragen werden automatisch per Modellname geroutet
{
"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 |
llm — Modell, Effekt-Level, Denk-Budget und Kontextverwaltung
{
"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) |
env — In os.environ geschriebene Umgebungsvariablen. Steuern Persona, Debugging, Netzwerk und Berechtigungsverhalten
{
"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 |
compact — Kontextkomprimierung: Lange Gespräche automatisch komprimieren und wichtige Informationen bewahren
{
"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_palace — Memory Palace LLM-Einstellungen; unabhängig vom llm-Block, wird separat geparst
// 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_quality — Schwellenwerte für Gedächtnisqualitätskontrolle; steuern Schreibfilterung und Abrufgenauigkeit
{
"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 |