>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
C

ElectronもNode.jsも不要。ターミナルでAIコーディングを書く方法

最近のAIコーディングアシスタントは、ほとんど同じアーキテクチャで構築されています。巨大なElectronアプリにNode.js、Python、または重いランタイムを巻き込みながら、数百メガバイトのRAMを最初のリクエスト前から消費し、画面全体を占有しようとします。弱いサーバー、旧型のラップトップ、または高速なUnixユーティリティを好む場合、このアプローチはすぐにフラストレーションになります。

最近、Alexander Chekhovskyによる興味深いプロジェクト「hax」を見つけました。純粋なC言語で書かれたコンパクトなターミナル向けコーディングエージェントです。著者は重いラッパーのトレンドに反旗を翻し、即座に起動し、数メガバイト程度のツールを作成しました。

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

haxとは何か、なぜ必要なのか

haxは単一のネイティブバイナリにコンパイルされたCLIユーティリティです。プロセスはメモリを数メガバイトしか使用しません。ワークステーションで直接llama.cppを通じてローカルニューラルネットワークを実行している場合、モデルのコンテキストと重みにはメモリが必要なため、節約できるギガバイト每一が重要です。

このツールは、プラグインマーケット、大規模なWebダッシュボード、永遠に続く許可確認ダイアログを見たくない人のために設計されています。すべては古典的なUnix哲学に従っています:stdin、stdout、明確な設定、そしてユーティリティを通常のパイプラインに埋め込む機能があります。

このプロジェクトが実践的に興味深い点

多くのAPI用CLIラッパーとは異なり、haxは継続的なコンソール作業のためのツールとして特に設計されています。

ターミナルに優しい設計

haxはターミナルスクロールバックを壊さず、ncursesで画面全体を再描画しません。このユーティリティは折り返しのあるストリーミングMarkdownを出力し、現在の行または入力エリアのみを更新します。ターミナル履歴全体がそのまま残り、マウスで疑似グラフィックアーティファクトなしでテキストを安全にコピーできます。

面倒な設定不要のローカルモデル

ローカル実行の場合、llama-serverをスピンアップするか、ollamaを起動すれば完了です。haxは実行中のllama.cppインスタンスを自動的に検出し、モデルパラメータを決定してコンテキストを調整できます。単なるローカルテストのために複数ページのJSON設定ファイルを書く必要はありません。

ネットワークリクエストの透明性

いつでもインタラクティブセッション中でCtrl+Tを押すことができ、モデルに送信されたものと応答として返ってきたものの正確な記録を確認できます。プロンプトをデバッグしたり、追加ファイルがコンテキストにリークしていないことを確認したい場合は、この機能が多くのフラストレーションを節約します。詳細なネットワークプロトコルログを収集するモードもあります。

さまざまなプロバイダのサポート

このユーティリティは標準的なクラウドAPIとローカルエンジンに対応しています:

  • OpenAIおよび互換性のあるエンドポイント(OPENAI_API_KEYキー経由)
  • Anthropic Claude(ANTHROPIC_API_KEY経由)
  • OpenRouter、OpenCode Zen / Go
  • Codex(インタラクティブなChatGPTサブスクリプションログイン経由)(/login
  • ローカルのllama.cppとOllama

インストールとビルド

haxはLinux、macOS、FreeBSD、OpenBSDで動作します。WindowsユーザーはWSL内で実行できます。

macOSとLinuxでは、Homebrew経由でインストールするのが最も簡単です:

brew install oleksandrchekhovskyi/hax/hax

Arch Linuxでは、パッケージはAURでhaxという名前で利用可能です。

バイナリを手動でビルドし、システムライブラリにリンクしたい場合は:

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

依存関係スクリプトは、Cコンパイラ、libcurljanssonmesonninjapkg-config、および@file構文によるファイル名自動補完用のfzfをプルインします。

使い方

主な操作モードは、プロジェクトディレクトリ内のインタラクティブなREPLです:

hax

内部でスラッシュコマンドを利用できます。例えば、/providerは利用可能なバックエンドとモデルのリストを出力し、/helpはホットキーを表示します。haxは実行間で選択されたモデルとプロバイダを記憶します。

スクリプトや素早い自動化のために、ワンオフモードの-pがあります:

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

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

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

-pモードでは、ユーティリティはクリーンな応答のみをstdoutに出力し、サービスヒントをstderrに送信します。これにより、grepxargs、その他のUnixユーティリティと簡単に組み合わせられます。

内部構造

このプロジェクトは重いフレームワークなしで標準的なC言語で書かれています。ネットワークリクエストはlibcurl経由で処理され、JSONの解析と構築はコンパクトなライブラリであるjanssonに依存しています。

アーキテクチャ全体がコード監査可能性を中心に構築されています。セッションと設定はXDG標準に従ったプレーンテキストファイルとして保存されます。複雑なプラグインシステムの代わりに、OSサブプロセスの生成によって機能が拡張されます。

このプロジェクトの対象ユーザー

組み込みのチャットやビジュアルグラフを備えた重いIDEスイートが必要な場合、haxはあなたに合わないかもしれません。ここにはプラグインやエディタメニュー統合はありません。

しかし、tmuxでの作業、llama-serverを通じて自分のハードウェアでローカルLLMを実行していること、またはSSHでリモートサーバーを管理していることが当たり前になっている場合、haxは確かに試す価値があります。ノイズを立てず、リソースを消費せず、要求されたことを正確に行います。

関連プロジェクト