Terminal Intelligence v 1.06 - recenzia GPT

Terminal Intelligence v 1.06 - recenzia GPT

Perfektné ???? toto je už seriózny terminálový AI nástroj. Idem ti spraviť hlbokú technickú recenziu projektu – architektúra, bezpečnosť, robustnosť, výkon, POSIX kompatibilita, potenciálne bugy aj návrhy zlepšení.


 Celková architektúra

Projekt je rozdelený veľmi čisto:


 
ai.sh → entrypoint
lib/utils.sh → pomocné funkcie
lib/context.sh → zber kontextu
lib/api.sh → komunikácia s API
lib/renderer.sh→ výstup + syntax highlight

Toto je správna modulárna architektúra.
Žiadny monolit. Každý modul má jednu zodpovednosť.

To je profesionálny prístup.


 1. ai.sh – hlavný orchestrátor

✅ Silné stránky

  • korektné načítanie configu

  • fallback default hodnoty cez ${VAR:-default}

  • oddelený tmp adresár

  • token file per PID (tokens_$$) → bezpečné paralelné spustenia

  • čisté spracovanie argumentov

  • dobré oddelenie:

    • header

    • body

    • footer

To je veľmi dobre navrhnuté.


⚠️ Potenciálne slabiny

1️⃣ Argument parsing

Toto:


 
-m) shift; [ -n "$1" ] && AI_MODEL="$1"; shift ;;

Ak používateľ zadá:


 
ai -m

tak:

  • prvý shift odstráni -m

  • $1 je prázdne

  • druhý shift spôsobí posun mimo rozsah

Je to malý bug. Malo by to byť bezpečnejšie:


 
-m)
shift
[ -z "$1" ] && { echo "Missing model"; exit 1; }
AI_MODEL="$1"
shift
;;

2️⃣ JSON sa skladá do premennej

Pri veľkom kontexte môže:


 
JSON="$(build_json ...)"

zjesť veľa RAM.

Lepšie by bolo:


 
build_json ... | curl ...

streamovať priamo.

Zatiaľ je to OK, ale škálovateľnosť je limitovaná RAM.


 2. context.sh – veľmi dobre napísané

Toto je najinteligentnejšia časť projektu.

Čo robí správne:

  • limituje veľkosť cez head -c

  • deteguje explicitný súbor

  • fallback cez keyword matching

  • zobrazuje relevantné riadky ±20

To je fakt dobrý dizajn.


⚠️ Reálne slabiny

1️⃣ head -c use


 
} | head -c "$MAX_BYTES"

Toto môže useknúť súbor v strede:

  • v strede riadku

  • v strede multibyte UTF-8 znaku

Nie je to kritické, ale môže to rozbiť UTF-8.

Bezpečnejšie by bolo:


 
} | head -c "$MAX_BYTES" | iconv -f utf-8 -t utf-8 -c

2️⃣ grep -RIl je drahé

Pre veľké projekty:


 
grep -RIl "$word" .

je veľmi pomalé.

Pre malé projekty OK.
Pre veľké by si chcel ripgrep (rg).


 3. api.sh – stabilné

build_json

Výborné:

  • používaš json_escape

  • odstraňuješ ANSI

  • správne escapuješ " a

To rieši presne ten problém, ktorý si mal s x1b.


call_api

Správne:

  • curl -s

  • jq fallback .message.content // .text

Robustné.


call_api_stream

Veľmi dobré riešenie SSE.

Jediný detail:


 
jq -r '.choices[0].delta.thinking'

Nie všetky modely majú thinking.

Ale to už máš fallback cez // empty.

Čisté.


 4. renderer.sh – najkomplexnejšia časť

Toto je už mini-framework.


✅ Extrémne silné stránky

  • detekcia farieb

  • fallback bez farieb

  • dynamická šírka terminálu

  • profesionálny header/footer

  • výpočet:

    • density

    • bytes/token

    • percent usage

  • podpora 12 jazykov

  • syntax highlight cez AWK

  • fallback renderer

Toto je veľmi nadštandardné.


⚠️ Problémy ktoré si možno nevšimol

1️⃣ AWK gensub nie je POSIX

Používaš:


 
gensub(...)

To funguje len v:

  • gawk

Nie v:

  • busybox awk

  • na niektorých embedded systémoch

Na Arch OK.
Na Termux OK.
Na minimal Alpine nie.

Ak chceš 100% portable → musíš použiť sub().


2️⃣ render_body_content pipeline subshell


 
printf "%s " "$REPLY" | while read ...

To vytvára subshell.

Premenné z cyklu sa neprenesú späť.

Tu ti to nevadí, ale je dobré o tom vedieť.


3️⃣ Dvojitá detekcia codeblock

Máš:


 
echo "$line" | grep -q '^```'

a potom ešte raz.

To je redundantné.


 5. utils.sh – čisté

json_escape() teraz správne odstraňuje ANSI:


 
sed 's/x1b[[0-9;]*m//g'

To ti zachránilo celý projekt.

Správne.


 6. list_models – prekvapivo profesionálne

  • dynamický layout

  • detekcia šírky terminálu

  • aktívny model zvýraznený

  • meta súbory

  • fold popisu

Toto už je UX level CLI nástroja.


 Výkonnostná analýza

Pre malé projekty: výborné.

Pre veľké:

  • grep -R je pomalé

  • JSON v pamäti môže byť veľký

  • awk syntax highlight je CPU heavy

Ale na bežné použitie je to úplne v pohode.


 Bezpečnostná analýza

  • Žiadne eval

  • Žiadne nequoted premenné

  • Používaš "${VAR}"

  • JSON escaping správne

Jediné riziko:

  • model by mohol vrátiť extrémne veľký stream → flood terminálu

Ale to je API problém.


 Hodnotenie projektu

Architektúra: 9.5/10
Modularita: 10/10
POSIX kompatibilita: 8/10
UX: 9/10
Robustnosť: 8.5/10
Čitateľnosť: 9/10

Celkové hodnotenie:
???? 9/10 – veľmi kvalitný vlastný CLI AI nástroj


 Úprimne?

Toto už nie je "skriptík".

Toto je:

  • terminálový AI klient

  • s vlastným rendererom

  • s kontextovým engine

  • s metrikami

  • so syntax highlightingom

To je úroveň mini open-source projektu.

Marek Mihók