Skip to main content

JONAS - Just Operate Nicely And Securely: Ein intelligenter Shell-Assistent mit OpenAI Integration

Project description

JONAS - Just Operate Nicely And Securely

PyPI version Python versions License: GPL v3 Downloads

Beschreibe einfach, was du erreichen willst – JONAS setzt es mit Shell-Befehlen um.

JONAS ist dein intelligenter Shell-Assistent, der das umfangreiche UNIX-Know-how von Large Language Models nutzt, um komplexe Systemaufgaben durch natürliche Sprache zu steuern. Kein mühsames Nachschlagen von Befehlen mehr – sage JONAS einfach, was du brauchst.

Warum JONAS?

🎯 Einfach in der Anwendung

Statt komplizierte Shell-Befehle zu recherchieren, beschreibst du einfach dein Ziel:

  • "Zeige mir alle Python-Prozesse"
  • "Erstelle ein Backup meines Home-Verzeichnisses"
  • "Installiere Docker und starte einen nginx-Container"

JONAS versteht deine Absicht und führt die richtigen Befehle aus.

🔒 Sicherheit an erster Stelle

  • Explizite Freigabe: Jeder Befehl wird vor der Ausführung angezeigt und erklärt
  • Intention transparent: Du siehst, was der Befehl bewirken soll

🚀 Sofort einsatzbereit

pip install jonas
jonas

Das war's! JONAS ist systemweit verfügbar und einsatzbereit.

Beim ersten Start wirst du nach deinem OpenAI API-Key gefragt. Diesen kannst du auf www.openai.com erstellen. Der Key wird lokal und sicher auf deinem System gespeichert.

💡 Intelligente Systemverwaltung

Nutze das gesamte UNIX-Wissen des LLM für:

  • Systemüberwachung: Prozesse, Logs, Ressourcen im Blick
  • Updates & Installationen: Software-Management ohne Handbuch
  • Konfiguration: Erstelle und bearbeite Config-Dateien
  • Automatisierung: Komplexe Workflows in natürlicher Sprache

💰 Sparsamer Token-Verbrauch

  • Große Command-Outputs werden intelligent gespeichert
  • Nur relevante Informationen werden an das LLM gesendet
  • Session-Historie für Kontext ohne Token-Verschwendung
  • new Befehl: Starte neue Unterhaltung und spare Token

Features

  • 🤖 Intelligenter Chat: Natürliche Gespräche mit automatischer Kontext-Verwaltung
  • 🔧 Tool-Calling: Sichere Ausführung von Shell-Befehlen mit Bestätigung
  • 📝 Markdown-Rendering: Schöne Formatierung von Antworten
  • 🔄 Mehrere Tool-Calls: Parallele Ausführung mehrerer Befehle
  • Thinking-Anzeige: Visuelles Feedback während API-Aufrufen
  • 🔒 Sicherheitsabfragen: Farbcodierte Bestätigung (Rot=schreibend, Magenta=lesend)
  • 🎨 Rich Terminal UI: Farbige, formatierte Ausgaben mit Box-Design
  • 📊 Output-Management: Große Outputs werden gespeichert und können durchsucht werden
  • 🔍 Output-Tools: get_output_head(), get_output_tail(), search_output(), display_output()
  • 📜 Session-Historie: Automatische Speicherung der letzten 15 Turns
  • 🌐 Web-Search: Integrierte Web-Suche für aktuelle Informationen
  • 🎯 Auto-Korrektur: Erkennt und korrigiert fehlende Tool-Calls

Installation

Via pip (empfohlen)

JONAS ist auf PyPI verfügbar:

pip install jonas

Nach der Installation ist der Befehl jonas systemweit verfügbar:

jonas

Aus dem Quellcode

  1. Repository klonen:

    git clone https://github.com/peter-filz/jonas.git
    cd jonas
    
  2. Installieren:

    pip install -e .
    

Schnellstart

  1. Installieren:

    pip install jonas
    
  2. Starten:

    jonas
    
  3. Konfigurieren: Beim ersten Start wirst du interaktiv nach folgenden Werten gefragt:

    • OPENAI_API_KEY: Dein OpenAI API-Schlüssel
    • OPENAI_MODEL: Das zu verwendende Modell (z.B. gpt-4o-mini, gpt-4o, o1-mini)
    • TOKENLIMIT: Token-Schwellenwert für Output-Speicherung (Standard: 2000)
  4. Verwenden: Gib einfach Anweisungen in natürlicher Sprache ein!

Konfiguration

Die Konfiguration wird in jonas.cfg gespeichert.

Zum Ändern der Konfiguration verwende im Chat:

config

Verwendung

Starte JONAS einfach mit:

jonas

Verfügbare Befehle:

  • exit, quit, bye - Chat beenden
  • new - Starte neue Unterhaltung (spart Token, löscht Historie und Outputs)
  • config - Konfiguration ändern (API-Key, Model, TokenLimit)
  • delconfig - Konfiguration löschen und beenden
  • history - Gespeicherte Session-Historie anzeigen
  • help - Startbildschirm erneut anzeigen

Kommandozeilen-Parameter:

  • jonas - Startet den interaktiven Chat
  • jonas --version (oder -v) - Zeigt die Version an
  • jonas --help (oder -h) - Zeigt die Hilfe an

Natürliche Sprache:

  • Gebe einfach Anweisungen in natürlicher Sprache ein

Beispiel-Interaktion:

Du: Zeige mir den Inhalt von /Users
Intention: Verzeichnisinhalt anzeigen
Befehl:    ls /Users
Ausführen? [j/N] j

Jonas: Das Verzeichnis /Users enthält: Applications, Library, Users, ...

Du: Welche Python-Version verwendest du?
Intention: Python-Version prüfen
Befehl:    python3 --version
Ausführen? [j/N] j

Jonas: Ich verwende Python 3.12.0

Du: history
─────────────────────────────────────────────────────────
Session-Historie:
─────────────────────────────────────────────────────────

Du: Zeige mir den Inhalt von /Users
Jonas: Das Verzeichnis /Users enthält...
Ausgeführte Befehle:
  • ls /Users → out1

Du: exit
Auf Wiedersehen!

Features im Detail

Tool-Calling mit Sicherheit

  • Readonly-Flag: Befehle werden als lesend (Magenta) oder schreibend (Rot) markiert
  • Intention-Anzeige: Zeigt, was der Befehl tun soll
  • Bestätigungs-Prompts: Jeder Befehl erfordert explizite Bestätigung
  • Auto-Korrektur: Erkennt, wenn das Modell Aktionen behauptet ohne Tool-Call
  • Timeout: 5 Minuten für längere Befehle (apt-get upgrade, docker build, etc.)

Output-Management

  • Automatische Speicherung: Outputs >300 Tokens werden als out1, out2, etc. gespeichert
  • get_output_head(output_id, num_lines): Zeigt die ersten N Zeilen
  • get_output_tail(output_id, num_lines): Zeigt die letzten N Zeilen
  • search_output(output_id, pattern): Durchsucht Output mit Regex
  • display_output(output_id): Zeigt kompletten Output an
  • Automatische Bereinigung: Alte Outputs werden beim History-Trimming gelöscht

Session-Historie

  • Automatisches Trimming: Maximal 15 User/Assistant-Paare werden gespeichert
  • Persistente Output-IDs: Zugriff auf frühere Befehlsausgaben
  • JSON-Struktur: {"answer": "...", "executed_commands": [...]}
  • History-Befehl: Zeigt alle gespeicherten Turns mit ausgeführten Befehlen

Markdown-Rendering

  • Tabellen werden korrekt formatiert
  • Code-Blöcke mit Syntax-Highlighting
  • Listen, Links und andere Markdown-Elemente
  • Rich Terminal-Ausgaben mit Farben

Projekt-Struktur

jonas/
├── jonas.py             # Haupt-Chat-Anwendung mit Dialog-Logik
├── shell_tools.py       # Tool-Definitionen und Shell-Ausführung
├── requirements.txt     # Python-Abhängigkeiten
├── jonas.cfg           # Konfigurationsdatei (wird beim ersten Start erstellt)
├── venv/               # Virtuelle Umgebung
└── README.md          # Diese Datei

Abhängigkeiten

  • openai: OpenAI API-Client (Responses API)
  • pydantic>=2.7.0: Datenvalidierung
  • rich>=13.7.0: Schöne Terminal-Ausgaben mit Markdown-Support
  • tiktoken>=0.5.0: Token-Zählung für Output-Management
  • typer[all]>=0.12: CLI-Framework

Sicherheitshinweise

  • ⚠️ API-Keys niemals committen!
  • ⚠️ Jeder Shell-Befehl erfordert explizite Bestätigung
  • ⚠️ Timeout (5 Minuten) verhindert hängende Prozesse
  • ⚠️ Readonly-Flag signalisiert Risiko (Rot vs. Magenta)
  • ⚠️ Auto-Korrektur verhindert Halluzinationen von Befehlsausführungen
  • ⚠️ Output-Bereinigung beim History-Trimming

Links

Autor

Peter Filz
📧 peter.filz@googlemail.com

Lizenz

GNU General Public License v3.0 oder später - siehe LICENSE-Datei für Details.

JONAS ist freie Software: Sie können sie unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren Version.

Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird, aber OHNE JEDE GEWÄHRLEISTUNG. Siehe die GNU General Public License für weitere Details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jonas-1.4.3.tar.gz (42.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jonas-1.4.3-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

File details

Details for the file jonas-1.4.3.tar.gz.

File metadata

  • Download URL: jonas-1.4.3.tar.gz
  • Upload date:
  • Size: 42.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for jonas-1.4.3.tar.gz
Algorithm Hash digest
SHA256 9941e79e2dff801609411c4af7e9b3cfe8f5b29437339c2a5cecfa0bd69aa19b
MD5 927d5a99cf96e16ab2e2f81c147a86f3
BLAKE2b-256 f80e74a64cfdb82947a9b7a5cddcee1eb4aa8b4975ba5e848b6a6d3324f61299

See more details on using hashes here.

File details

Details for the file jonas-1.4.3-py3-none-any.whl.

File metadata

  • Download URL: jonas-1.4.3-py3-none-any.whl
  • Upload date:
  • Size: 39.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for jonas-1.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 21e0b2dee60138b041c4fdbedc3dfa2065c857c03786a604e3cbefa785774c3d
MD5 2c75a19b9cce902c9b4b173bf14929bd
BLAKE2b-256 805bbc31eeb15f516c04add8b16024108b059858fb3587a2d0e9d5a831ec96f8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page