>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
C

Code schrijven met AI in de terminal zonder Electron en Node.js

De meeste moderne AI-codeerassistenten zijn ongeveer op dezelfde manier gebouwd. Ze worden verpakt in kolossale Electron-apps, met Node.js, Python of zware runtimes erachteraan, die honderden megabytes aan RAM verbruiken voordat het eerste verzoek wordt gedaan, en die proberen het hele scherm over te nemen. Als je op een zwakke server werkt, een oude laptop hebt, of gewoon de voorkeur geeft aan snelle Unix-hulpprogramma's, wordt deze aanpak snel frustrerend.

Onlangs stuitte ik op een interessant project hax van Alexander Chekhovsky. Het is een compacte terminal-codeerassistent geschreven in pure C. De auteur koos ervoor om tegen de stroom van zware wrappers in te gaan en creëerde een hulpprogramma dat direct opstart en slechts een paar megabyte weegt.

hax answering a question about its own source using a local llama.cpp model

Wat het is en waarom je het nodig hebt

Hax is een CLI-hulpprogramma gecompileerd tot één enkele native binary. Het proces neemt slechts een paar megabyte aan geheugen in beslag. Als je lokale neurale netwerken via llama.cpp direct op je werkstation uitvoert, is elke bespaarde gigabyte aan RAM belangrijk, aangezien geheugen nodig is voor de modelcontext en gewichten.

Het hulpprogramma is ontworpen voor degenen die geen plugin-marktplaatsen, logge webdashboards en eindeloze toestemmingsdialogen willen zien. Alles hier volgt de klassieke Unix-filosofie: er is stdin, stdout, duidelijke configuraties en de mogelijkheid om het hulpprogramma in gewone pipelines in te bedden.

Wat dit project in de praktijk interessant maakt

In tegenstelling tot veel CLI-wrappers rond API's, is hax specifiek ontworpen als een hulpprogramma voor continu console-werk.

Vriendelijk voor de terminal

Hax breekt de terminal scrollback niet en tekent het hele scherm niet opnieuw via ncurses. Het hulpprogramma voert streaming Markdown uit met regelomloop en werkt alleen de huidige regel of het invoergebied bij. Je volledige terminalgeschiedenis blijft op zijn plaats en tekst kan veilig met de muis worden gekopieerd zonder pseudografische artefacten.

Lokale modellen zonder gedoe

Voor lokaal uitvoeren hoef je alleen llama-server te starten of ollama te launchen. Hax kan automatisch draaiende llama. cpp-instanties detecteren, modelparameters bepalen en de context aanpassen. Je hoeft geen meer pagina's tellende JSON-configs te schrijven voor alleen een lokale test.

Transparantie van netwerkverzoeken

Op elk moment kun je Ctrl+T drukken in de interactieve sessie en de exacte transcriptie zien van wat naar het model werd gestuurd en wat er als antwoord terugkwam. Als je prompts aan het debuggen bent of wilt verifiëren dat er geen extra bestanden in de context zijn gelekt, bespaart deze functie veel frustratie. Er is ook een modus voor het verzamelen van gedetailleerde netwerkprotocol logs.

Ondersteuning voor verschillende providers

Het hulpprogramma werkt met standaard cloud API's en lokale engines:

  • OpenAI en compatibele endpoints via de OPENAI_API_KEY key
  • Anthropic Claude via ANTHROPIC_API_KEY
  • OpenRouter, OpenCode Zen / Go
  • Codex via interactieve ChatGPT subscription login (/login)
  • Lokale llama. cpp en Ollama

Installatie en bouwen

Hax werkt op Linux, macOS, FreeBSD en OpenBSD. Windows-gebruikers kunnen het binnen WSL draaien.

Op macOS en Linux is de gemakkelijkste manier om het hulpprogramma te installeren via Homebrew:

brew install oleksandrchekhovskyi/hax/hax

In Arch Linux is het pakket beschikbaar in AUR onder de naam hax.

Als je de binary handmatig wilt bouwen en koppelen met systeembibliotheken:

git clone https://github.com/OleksandrChekhovskyi/hax.git
cd hax
scripts/install_deps.sh
make
make install

Het afhankelijkheidsscript haalt de C-compiler, libcurl, jansson, meson, ninja, pkg-config en fzf op voor bestandsnaam-autocompletie via @file syntax.

Hoe ermee te werken

De primaire werkmodus is een interactieve REPL right in de projectmap:

hax

Slash-commando's zijn beschikbaar binnenin. Bijvoorbeeld, /provider geeft een lijst van beschikbare backends en modellen, terwijl /help hotkeys toont. Hax onthoudt het geselecteerde model en de provider tussen runs.

Voor scripts en snelle automatisering is er een eenmalige modus -p:

# Задать разовый вопрос по коду в текущей папке
hax -p "найди места с утечками памяти в main.c"

# Передать данные через пайп
git diff | hax -p "напиши понятный commit message по этому диффу"

# Продолжить последнюю сессию для этого каталога
hax -c

In -p modus voert het hulpprogramma alleen de schone respons uit naar stdout, waarbij service-hints naar stderr worden gestuurd. Dit maakt het gemakkelijk te combineren met grep, xargs en andere Unix-hulpprogramma's.

Onder de motorkap

Het project is geschreven in standaard C zonder zware frameworks. Netwerkverzoeken worden afgehandeld via libcurl en JSON-parsing en -constructie vertrouwen op een compacte bibliotheek jansson.

De hele architectuur is gebouwd rond code-auditbaarheid. Sessies en instellingen worden opgeslagen als platte tekstbestanden volgens de XDG-standaard. In plaats van een complex plug-insysteem wordt functionaliteit uitgebreid door OS-subprocessen te spawnen.

Voor wie dit project bedoeld is

Als je een zware IDE-suite nodig hebt met ingebouwde chats en visuele grafieken, is hax waarschijnlijk niets voor jou. Er zijn geen plugins of editor-menuint dere integraties hier.

Maar als je gewend bent om in tmux te werken, lokale LLM's via llama-server op je eigen hardware draait, of externe servers via SSH beheert, is hax zeker het proberen waard. Het maakt geen lawaai, verbruikt geen resources en doet precies wat ervan gevraagd wordt.

Gerelateerde projecten