はじめに
Linuxの学習中、コマンドエラーが発生する度にマニュアルを確認したり、AIにエラーメッセージをコピー&ペーストして解析していましたが、何度もエラーが発生するのでその度に確認するのが少し面倒でした。
そこで、、
エラーが出たら自動的にAIに連携できれば便利じゃないか?
と考えました![]()
要件
概要
Linuxでコマンド実行時にエラーが発生した場合、その内容を生成AIへ連携し、原因や対策をコマンドライン上へ表示するツール
機能
①ユーザーが実行したLinuxコマンドの終了ステータスを確認
②エラー発生を検知
③AIへの連携前に確認
④ユーザーによる選択後、AIへエラー内容を自動連携
⑤解析結果をコマンドライン上に表示
ポイント
①不要なコストを抑制するために、AIへの連携前にユーザに確認をする
→例)AIに連携するまでもない単純なタイポでのコスト増加を防止
②解析結果は初心者向けを意識した内容にする
実行時イメージ
コマンドエラー検知~解析するかの確認
解析を実行した場合
解析を実行しなかった場合
実施手順
①さくらのAI Engineへの接続準備
・アカウントトークン発行

・使用するAPIを選択
今回は https://api.ai.sakura.ad.jp/v1/chat/completions
を選択しています

・利用するライブラリのインストール
pip install requests
・今回は「config.py」という名称のファイルを作成し、以下を記述
API_KEY = "xxxxxxxx"
BASE_URL = "https://api.ai.sakura.ad.jp/v1/chat/completions"
②解析用のスクリプトを作成
・「config.py」と同じディレクトリに「AI」というファイルを作成し、以下を記述
#!/usr/bin/env python3
import sys
import requests
import subprocess
from config import API_KEY, BASE_URL
command = ""
# ------------------------
# コマンド実行モード
# 例:
# AI "cat aaa.txt"
# ------------------------
if len(sys.argv) > 1:
command = " ".join(sys.argv[1:])
result = subprocess.run(
command,
shell=True,
capture_output=True,
text=True
)
# 正常終了
if result.returncode == 0:
print("✅ 実行成功\n")
print(result.stdout)
sys.exit()
# エラー発生
error_text = f"""
実行コマンド:
{command}
エラー内容:
{result.stderr}
"""
# ------------------------
# パイプ入力モード
# 例:
# cat aaa.txt 2>&1 | AI
# ------------------------
else:
error_text = sys.stdin.read()
prompt = f"""
以下のLinuxエラーを初心者向けに解説してください。
以下の形式で回答してください。
【原因】
【対策】
【実行して確認するコマンド】
【初心者向け解説】
エラー情報:
{error_text}
"""
payload = {
"model": "gpt-oss-120b",
"messages": [
{
"role": "user",
"content": prompt
}
]
}
print("🔍 AI解析中...")
response = requests.post(
BASE_URL,
headers={
"Authorization": f"Bearer {API_KEY}"
},
json=payload
)
if response.status_code != 200:
print("APIエラー")
print(response.text)
sys.exit()
data = response.json()
answer = data["choices"][0]["message"]["content"]
print("\n===== AI解析結果 =====\n")
print(answer)
・「AI」に実行権限を付与
chmod +x AI
③ CLIツールにする
・どのディレクトリからも利用できる場所へ移動
cp AI ~/.local/bin/AI
chmod +x ~/.local/bin/AI
④ Bashから利用できるようににする
・~/.bashrc へ以下記述を追加
auto_ai_error_check() {
LAST_STATUS=$?
# 正常終了なら何もしない
[ $LAST_STATUS -eq 0 ] && return
LAST_CMD=$(history 1 | sed 's/^[ ]*[0-9]*[ ]*//')
# 空入力は無視
[ -z "$LAST_CMD" ] && return
# AI自身は無視
case "$LAST_CMD" in
AI* )
return
;;
esac
echo
echo "❌ コマンドが失敗しました"
echo "実行コマンド: $LAST_CMD"
echo
read -p "AIで解析しますか? (y/N): " ANSWER
case "$ANSWER" in
y|Y)
AI "$LAST_CMD"
;;
*)
echo "解析をスキップしました"
;;
esac
}
PROMPT_COMMAND=auto_ai_error_check
・設定を反映
source ~/.bashrc
⑤実際にコマンド実行して動作確認
苦労した点
・はじめはエラーが出たら即API連携する設計にしていましたが、単純なタイポや改行しただけの場合は除く設計に変更するのに時間がかかりました。
・CLIとして利用できる場所へ移動した後、しばらく移動前のファイルを編集してしまっていました。![]()
まとめ
今回はLinuxコマンドのエラーを検知し、
必要に応じて生成AIへ解析を依頼できるツールを作成しました。
Linux学習中はエラーが発生する機会が多いため、原因調査の手間を減らせるようになりました。



