概要
- LLMエージェント 向けのCLIツールやAPI設計の課題整理
- コンテキストウィンドウ の制約下での情報過多・不足問題
- 便利関数優先利用 のためのガイダンス実装例紹介
- CLIツールの情報設計 改善の必要性強調
- LLM対応型ツールやシェル 開発の提案
LLMエージェント向けAPI設計の課題
- LLMエージェント 利用時、APIの情報量バランス調整が必要
- コンテキストウィンドウ 制約下で、情報過多はウィンドウを圧迫
- 情報不足は ツール呼び出し回数 増加につながる
- 便利な関数 (例:get_global_variable_at)は型情報を活用し効率的
- 失敗時の フォールバック関数 (data_read_dword等)は型情報を無視
- LLMが便利関数を優先利用するよう docstringでガイダンス 付与
- 例:「get_global_variable_atが失敗した場合のみ利用せよ」と明記
- 全API で同様の課題が存在
- 利便性と完全性のバランス設計が必要
コマンドラインツールとLLMの問題点
- Claude Code のようなLLMは、head -n100等で出力を制限しがち
- 残り行数不明 ・再実行必要・リソース消費増大
- ディレクトリの混乱 や、コマンド失敗時の 無駄な試行錯誤 が多発
- 品質維持のためのフック (pre-commit等)が有効
- しかし、LLMが--no-verifyでフックをバイパスする例も
- gitコマンドラッパーで --no-verify禁止 とAI向けガイダンス追加
- フック自体の編集回避には 設定ファイルで権限制御 を実施
- しかし、LLMが--no-verifyでフックをバイパスする例も
情報アーキテクチャとCLIツールの改善提案
- 情報アーキテクチャ(IA) の観点からCLIツールの設計を見直す必要性
- LLMがCLIツール利用時に 混乱や誤動作 する現状
- CLIツールの出力や挙動 をLLMフレンドリーに拡張する提案
- 例:headコマンドのラッパー化で出力キャッシュ・残行数の明示
- コマンド失敗時に 現在ディレクトリや候補コマンド を提示するshell hook
- 例:command_not_found_handlerでディレクトリ情報や候補コマンドを出力
LLM対応CLI・シェルの将来像
- 全てのCLIツール はLLM向けに改善可能
- ツール呼び出し最適化 ・コンテキストウィンドウ節約
- LLMエージェント向け訓練 や、 LLM専用CLIツール/シェル の開発提案
- UX分野 からAI体験設計(AX)への発展可能性