Show HN: AI-CLI – ローカルLLMを活用した小さなC言語製ターミナルアシスタント
AI-CLIは単一のCファイルで実装されたコマンドラインアシスタントで、ユーザーのリクエストをシェルコマンドに変換し、ローカルLLM経由で実行します。llama.cpp、Ollamaなど多数のLLMエンジンをサポートし、実行前の編集や拒否も可能です。メモリ機能により複雑なタスクにも対応します。
AI-CLIは、わずか1つのCファイル(ai.c)で実装された軽量なコマンドラインアシスタントです。ローカルで動作するLLM(大規模言語モデル)に接続し、ユーザーが自然言語で入力したリクエストを対応するシェルコマンドに変換して実行します。例えば、「slurmノード39で1~2時間前にジョブを実行していたユーザーを表示」と入力すると、複雑なsacctコマンドが生成され、実行結果としてユーザー名の一覧が表示されます。その他にも、ファイル内のテキスト置換、フォルダのアクセス権変更、特定の単語の出現行番号取得、数式計算、WebサイトのIPアドレス取得などの例が提供されています。
このツールの大きな特徴は、LLMが返したコマンドに対して、ユーザーがEnterキーで承認、Ctrl+Cで拒否、または通常のエディタのように矢印キーで編集してから実行できる点です。これにより、不慣れなコマンドでも安全に利用できますが、開発者はシェルコマンドに詳しくないユーザーに対する使用を控えるよう警告しています。
ビルドはgcc ai.c -o aiを実行するだけで完了し、インストールスクリプトを実行すればバイナリとマニュアルページが所定の場所にコピーされます。対応プラットフォームは非常に幅広く、Linux、macOS、Windows(MSYS2/Cygwin)、Android、iOS、FreeBSD、OpenBSD、NetBSD、QNX Neutrino、Haiku、SerenityOS、さらにはAIXやHP-UXなどのレガシーシステムにも対応しています。
LLMエンジンに関しても、llama.cpp、vLLM、Ollama、LM Studio、SGLang、Text Generation Inference、LocalAI、Xinferenceなど、主要なエンジンのほとんどがサポートされています。AI_URL環境変数でエンドポイントを指定するだけで接続でき、例えばllama.cppでGemma-4モデルを使用する際は、思考モードを無効にしてシェルコマンドを直接出力させる設定が必要です。
さらに、--memoryフラグを使用すると、過去の対話履歴をAI_MEMORY.mdに保存し、複数ステップにわたる複雑なタスクを支援します。例えば、最初にOSを尋ね、その応答に含まれる「MINGW」という用語の意味を続けて質問すると、文脈を理解した上で「Windows上でMINGW環境を使用している」といった説明が返ってきます。
AI-CLIは、LLMの力を日常的なコマンドライン操作に直接取り入れることで、開発者やシステム管理者の生産性を大幅に向上させる可能性を秘めています。ただし、実行されるコマンドの内容を常に確認し、慎重に使用することが求められます。