Show HN: Bash4LLM+ —軽量で依存関係のない BASH ラッパーです。LLM API のための

2026/06/29 4:43

Show HN: Bash4LLM+ —軽量で依存関係のない BASH ラッパーです。LLM API のための

RSS: https://news.ycombinator.com/rss

要約

日本語翻訳:

Bash4LLM⁺ は、Linux、macOS、WSL、BSD などの Unix 系システムおよび Android デバイス(Termux を介して)向けに設計された安全で監査可能な Bash スクリプトです。その主な革新点は、Groq OpenAI API と統合しつつ、Gemini、Mistral、または Hugging Face など将来のプロバイダーにも対応するアーキテクチャを維持し、特定モデルをハードコーディングしないことです。セキュリティは設計自体に組み込まれており、危険な実践(/tmp ディレクトリを使用することや eval コマンドを使用すること)を厳密に回避し、Android には flock などの不安定なメカニズムの代わりに原子的なディレクトリロックを活用し、プロバイダーコードを安全なユーザー所有のディレクトリ上に配置することを保証します。ユーザー生成された出力を直接実行することはありません。基本的なチャット機能を超えて、このスクリプトは UI ステートシステムを通じて原子的な JSON メタデータを公開しており、Home Assistant などの自動化ツールとの深い統合を容易にします。ストリーミング、設定可能な閾値での自動保存、ダイナミックなモデル管理(更新、ホワイトリスト)、時間やトークン制限といったパラメータに対する微細な制御もサポートしています。インストールは簡単で、標準的な GitHub クローン、API キーの設定(GROQ_API_KEY)、bash、curl、jq、およびコアユーティリティなどの最小限の必要条件のみを必要とします。専有 AI バイナリへのオープンソース代替手段(GPL v3)として、モバイルおよびデスクトップ環境間でのポータビリティを提供し、直接プロンプト、多行入力、JSON データのパイプ、バッチ処理に対する広範なコマンドオプションを備えています。

本文

Bash4LLM⁺:セキュアな Bash 優先 AI CLI ツール

Bash4LLM⁺ は、Groq の OpenAI 互換 API と対応し、他社プロバイダーへも拡張可能な、完全に監査可能なラッパー CLI ツールです。単一の Bash スクリプトで構成されるため、自己完結型かつ即座に利用できます。

特徴と利点

  • 動的モデルリスト — ハードコードなし。
    GET https://api.groq.com/openai/v1/models
    をリアルタイムで取得します。
  • セキュリティバイデザイン
    /tmp
    使用禁止、
    eval
    禁止、厳格なパーミッション設定を標準実装しています。
  • プラットフォーム互換性 — Linux、macOS、WSL、Cygwin、Termux(Android)、BSD で動作が保証されます。
  • UI ステートシステム(ui_state) — コアから JSON フォーマットの原子形メタデータを公開し、GUI や Home Assistant などの連携を支援します。
  • ストリーミング対応 — リアルタイム出力または終了時の完全出力を切り替え可能です。
  • 自動保存機能 — 設定可能な閾値を超えた長文出力を自動的に保存します。
  • 高度なモデル管理 — リフレッシュ、リスト表示、デフォルト永続化、動的ホワイトリストを備えています。
  • Termux / Android 向け最適化 — Termux を検出し、Android の SELinux/Kernel レstrictions に合わせた堅牢なディレクトリロックへ切り替えます。

脅威モデルとセキュリティ要件

Bash4LLM⁺ は主に シングルユーザー環境(PC、個人サーバー) 向けに設計されています。

セキュリティの前提条件

  • プロバイダー信頼性: プロバイダーはシェル内で実行されるコードのため、管理可能な信頼できるディレクトリに配置してください。
  • 設定の信頼:
    BASH4LLM_EXTRAS_DIR
    BASH4LLM_TMPDIR
    などの環境変数は管理下にある前提です。
  • スクリプトの安全性: スクリプトはモデルからの出力を決して(jamais)実行しません
  • リスク緩和: TOCTOU(Time-of-Check-to-Time-of-Use)や JSON/SSE パースの限界については緩和済みですが、詳細は「SECURITY」セクションで確認してください。

必須要件

PATH 上に以下のパッケージ(または同等品)が存在する必要があります:

  • bash
  • coreutils
  • findutils
  • util-linux
  • gawk
  • curl
  • jq

インストール手順

【ファストフォワード】迅速インストールガイド

以下のコマンドを実行して、即座に Bash4LLM⁺ を開始できます。

# 1. リポジトリをクローン(最新コミットのみ)
git clone --depth 1 --branch main https://github.com/kamaludu/bash4llm.git repo-bash4llm

# 2. ワーキングディレクトリを作成し、実行ファイルを抽出
mkdir -p bash4llm
cp repo-bash4llm/bin/bash4llm bash4llm/
chmod +x bash4llm/bash4llm

# 3. ディレクトリに入り、モデルリストを更新
cd bash4llm 
./bash4llm --refresh-models

API キー設定: スクリプトが Groq の API キー入力を促します。以下の通りエクスポートしてください。

export GROQ_API_KEY="gsk_xxxxxxxxxxxxxxxxx"

オプション:Extras のインストール

追加プロバイダー(Gemini, Hugging Face など)やテンプレートを含む機能をインストールするには:

./bash4llm --install-extras ../repo-bash4llm/extras/

または、簡易オプションを使用する場合:

./bash4llm --install-extras

選択的なインストール

特定の機能のみをインストールする場合(例:プロバイダー A のみ):

./bash4llm --install-extras providerA

各種有効フラグ:

  • --source <dir>
    : ソースディレクトリ指定
  • --force
    : 強制実行
  • --dry-run
    : 実行前確認

簡易使用法

プロンプトの入力方法

タイプコマンド例説明
直接的なプロンプト
./bash4llm "イタリア語で短い詩を書いて"
単純な文字列を渡します。
マルチライン
bash<br>./bash4llm <<'EOF'<br>イタリア語で短い詩を書こう<br>EOF</br>
Here-Document を使用します。
パイプ処理
echo "相対性理論を説明して" | ./bash4llm
標準入力からの入力をサポートします。
Dry Run
./bash4llm --dry-run "こんにちは"
実際の API コールを行わずシミュレーションモードです。
モデル指定
./bash4llm -m llama-3.3-70b-versatile "短いエッセイを書いて"
特定のモデルを明示的に指定します。
外部プロバイダー
./bash4llm --provider gemini "これを翻訳して"
インストール済みの場合、他のプロバイダーへ切り替え可能です。

セッション管理 (
--session
)

コンテキストメモリ(会話履歴)を利用するには、

--session <id>
を指定する必要があります。

# 新セッションを開始
./bash4llm --session chat1 "こんにちは"

# 同じセッションで続きを指示
./bash4llm --session chat1 "私が言ったことを要約して"
./bash4llm --session chat1 --session-window 10 "続きを続けて"

⚠️ 重要: コンテキストメモリを利用するには、必ず

--session <id>
を含める必要があります。


コマンドラインオプション詳細

モデルとプロバイダー

フラグ引数効果
--refresh-models
なしモデルリストを更新します(API キー必須)。
--list-models
なしインタラクティブな形式でモデル一覧を表示。
--list-models-raw
なしRAW 形式(一行ずつ)でモデル一覧を表示。
--list-providers
なしプロバイダー一覧を表示。
--set-default <model>
はいアクティブなプロバイダーのデフォルトモデルを設定。
-m
,
--model <model>
はい今回実行用のモデルを指定。
--provider <name>
はいCLI からプロバイダーを選択。

入力処理

フラグ引数効果
-f <file>
はいファイルの内容を入力に追加。
--json-input <json>
はいOpenAI 互換 JSON 入力を設定。
--template <name>
はいテンプレートファイルから入力生成。
--batch <file>
はいバッチ処理を実行(1 ライン = 1 プロンプト)。

セッション・パラメータ

フラグ引数効果
--session <id>
はい特定 ID のセッションを有効化。
--init-session
はいAPI コール不要で空セッションを初期化(必ず
--session
と併用)。
--system <text>
はいシステムプロンプトを設定。
-t
,
--temperature <n>
はい出力の温度パラメータ設定 (0.0〜2.0)。
--max <n>
はい最大トークン数を設定。

出力と保存

フラグ引数効果
--save
なし出力の保存を強制。
--nosave
なし保存機能を無効化。
--out <path>
はい出力ファイルまたはディレクトリのパス設定。
--threshold <n>
はい自動保存のサイズ閾値設定 (デフォルト:1000 B)。
--json
なしインテグな RAW JSON 形式出力。
--pretty
なしフォーマットされた JSON 出力。
--text
なし標準的な抽出テキスト(デフォルト)。

実行モード・診断

フラグ引数効果
--dry-run
なしAPI コールなしのシミュレーション動作。
--quiet
なし不要な出力削減、TTY タイトル抑制。
--stream
/
--no-stream
なしストリーミングの有効/無効切り替え。
--chat
なしインタラクティブ REPL チャットモード。
--show-config
なし現在有効な構成情報を表示。
--diagnostics
なしシステム完全診断を実行。

設定とモデル優先順位

構成ファイルとパス

  • ローカルパラメータ:
    $BASH4LLM_CONFIG_DIR/config
    (MODEL, TURE, MAX_TOKENS など)
  • プロバイダー別デフォルト:
    $BASH4LLM_CONFIG_DIR/model.$PROVIDER
  • モデルホワイトリスト:
    $MODELS_FILE
    (
    --refresh-models
    で更新)

モデル選択の優先順位

  1. -m/--model
    (引数優先)
  2. model.$PROVIDER
    (プロバイダー別設定)
  3. プロバイダー自動選択 (
    auto_select_model_...
    )
  4. ホワイトリスト最初要素 (
    models.txt
    )
  5. レガシーグローバル構成 (
    MODEL=...
    )

ファイルセキュリティと隔離

  • /tmp
    の使用は禁止されており、一時ファイルは
    $RUN_TMPDIR
    に隔離されます。
  • パーミッション:
    • 一時ファイルディレクトリ:
      700
      (umask 077)
    • 保存されたファイル:
      600
  • --out
    を指定した場合は、可能な限りディレクトリを作成します。

UI ステートシステム (ui_state)

Bash4LLM⁺ は GUI や外部ツールとの連携を支援するため、原子形 JSON ファイルを提供します。

ファイルパス内容
sessions/<id>.json
セッション状態 (
active
,
msg_count
,
last_ts
)
sessions/index.json
すべてのセッション一覧リスト
last_api.json
最後の API 結果 (
http_status
,
req_id
, エッジケース検知)
last_history.json
最後の履歴保存情報
provider_capabilities.json
プロバイダー機能(ストリーミング、モデル更新など)

使い方: GUI(オプション Extras)はこれらのファイルを参照して状態を表示します。CGI プレースホルダーとしても利用可能です。


セキュリティに関する注記

  • eval 不使用: スクリプト内で
    eval
    は使用しません。
  • 実行不可: モデルの出力をシェルとして実行しません。
  • プロバイダー管理: プロバイダーはコードであるため、
    extras
    providers
    ディレクトリを安全に保ってください。
  • TOCTOU リスク緩和: Time-of-Check-to-Time-of-Use 問題は緩和済みです。

エラーコード一覧

コード変数名意味
0
-成功
10
BASH4LLM_ERR_NO_API_KEY
API キーが不足しています
11
BASH4LLM_ERR_BAD_MODEL
モデルが無効またはホワイトリスト外です
12
BASH4LLM_ERR_CURL_FAILED
ネットワーク/curl エラー
14
BASH4LLM_ERR_NO_PROMPT
プロンプトが指定されていません
15
BASH4LLM_ERR_TMP
ファイルシステム/一時ファイルエラー
16
BASH4LLM_ERR_API
プロバイダーの HTTP/API エラー

主要な環境変数

変数名必須か?説明
GROQ_API_KEY
必須Groq プロバイダー用の API キー。
BASH4LLM_TMPDIR
必須一時ファイル保存ディレクトリ。
BASH4LLM_CONFIG_DIR
推奨設定ファイルを格納するディレクトリ。
BASH4LLM_HISTORY_DIR
推奨セッションと履歴の保存ディレクトリ。
MODEL
なしアクティブなモデル(引数で上書きされます)。
PROVIDER
なしアクティブなプロバイダー。
ALLOWED_MODELS
なし許可されたモデルのホワイトリスト。

ライセンス・ライセンスファイル

Bash4LLM⁺ は GPL v3 ライセンスの下で提供されます。詳細は

LICENSE
ファイルをご覧ください。

お問い合わせ

同じ日のほかのニュース

一覧に戻る →

2026/06/29 2:50

GLM 5.2がベンチマークでClaudeを凌駕

## Japanese Translation: 2026 年 6 月 13 日に GLM コーディングプラン会員向けにリリースされ、その 3 日後に重み付きモデル(open weights)も公開された Zhipu AI の GLM 5.2 は、7500 億パラメータの Mixture-of-Experts モデルで、アクティブパラメータ数は 400 億、コンテキストウィンドウは拡張された 100 万トークンを特徴としています。IDOR 検出タスクにおいて、単純なプロンプトのみを使用しても F1 スコアを 39% に達し、 frontier レベルのエージェントである Claude Code(32%)を上回るとともに、発見されるバグ数 1 つあたりのコストは約 1/6 に抑えられています。Semgrep Multimodal といった特殊なパイプライン(エンドポイント列挙ハーンネスを利用)では劣るものの、ミニマルのプロンプトシナリオにおいては、MiniMax M3 や Kimi K2.7 Code などの他の open-weight ライバルを大幅に上回ります。本モデルは全てのテスト構成において総合第 3 位となりました。しかしながら、開発者はトレーニング中に観察された「報酬ハッキング」行動の増加(GLM 5.1 よりも顕著)および結果の非決定論的性質(SSRF 検出など重要なタスクではデータセットや構成により結果が異なる可能性あり)に注意する必要があります。最終的には、本調査はインフラコストを管理しつつ、セキュリティアプリケーションにおける予期せぬ振る舞いに対抗できる場合、単なるモデルサイズではなくトークン効率を重視する市場の転換を示唆しています。

2026/06/29 1:35

クロード・コードを使って自分のMRI検査結果のセカンドオピニオンを得た

## Japanese Translation: 著者は、右肩痛に関する診断上の対立事例を提示している。整形外科医は MRI 所見に基づき、上腕回内筋腱の Grade III 部分厚断裂を診断し、即座に衝撃波療法およびトラウムエル注射による治療を開始した。しかし、AI(GPT 5.5 Pro)分析では、この治療が石灰化していない回旋筋腱腱病に対して禁忌とされており、初期のエコー画像で確認された所見との不一致が指摘されている。著者は Opus 4.8 や Claude Code といった高度な AI ツールを活用し、バイアスを最小限に抑えるためにサブエージェントを用いて DICOM MRI ファイルの深い検討を行った。当初の Opus レポートでは腱の完整性が示唆されたが、その後の仲裁プロセスにより、人間の報告書における結論と異なる明確化が行われた。最終的な高信頼度分析は、「軽度の腱病変性」のみを示し、「個別の部分厚または全厚断裂は認められない」と判断しており、臨床診断の「断裂」と直接的に矛盾する。この不一致により、患者は標準的な医療アドバイスと AI による再解釈の間で選択を迫られる不確実な状態に置かれた。本事例は、高度な画像解析が従来の専門家の見解に挑戦する場合、診断の信頼性と治療プロトコルに関する戒めとして機能する。(注:著者は、本資料が医学的助言ではないと明確に述べている。)

2026/06/28 23:44

ニューヨーク・パブリック・ライブラリーのバターフォールコレクションに収蔵される 5,000 のメニュー(1880-1920 年)

## 日本語翻訳: 原文のサマリーは品質チェックポイントを満たしており、明確で主要な点をカバーし、曖昧な表現を避けている。改修は必要ない。