Skip to content

システムプロンプト改善:専用ツール優先使用の明確化

原文(日本語に翻訳)

システムプロンプトを改善し、bash相当のコマンド(catsedgrepfind)の代わりに専用ツール(Read、Edit、Glob、Grep)を使用するようモデルをより明確に誘導するようにしました。これにより、不要なbashコマンドの使用が削減されます。

原文(英語)

Improved system prompts to more clearly guide the model toward using dedicated tools (Read, Edit, Glob, Grep) instead of bash equivalents (cat, sed, grep, find), reducing unnecessary bash command usage

概要

Claude Codeのシステムプロンプトが改善され、ファイル操作において専用ツールを優先的に使用するよう、AIモデルへの指示がより明確になりました。これにより、パーミッションプロンプトの頻度が減少し、パフォーマンスとユーザー体験が向上します。

基本的な使い方

この改善により、Claude Codeは以下のように動作するようになりました:

bash
# ユーザー:ファイルを読み取るリクエスト
> "README.mdの内容を確認して"

# 以前:bashコマンドを使用する傾向
# $ cat README.md
# (パーミッションプロンプトが表示される可能性)

# 改善後:専用Readツールを優先
# Read tool を使用 → スムーズに実行

実践例

ファイル読み取り:Readツール vs cat

bash
# ファイル内容の確認
> "src/config.tsの設定を確認して"

# 推奨される動作(専用ツール):
# Read tool を使用
# - パーミッション不要
# - 行番号付きで表示
# - 長いファイルの部分読み込みに対応

# 非推奨(bashコマンド):
# $ cat src/config.ts
# - パーミッションプロンプトが発生する可能性
# - 追加の実行ステップ

ファイル検索:Glob vs find/ls

bash
# TypeScriptファイルの検索
> "すべての.tsxファイルを見つけて"

# 推奨される動作(専用ツール):
# Glob tool: pattern="**/*.tsx"
# - 高速
# - パーミッション不要
# - 更新日時でソート

# 非推奨(bashコマンド):
# $ find . -name "*.tsx"
# または
# $ ls -la src/**/*.tsx

コンテンツ検索:Grep vs grep

bash
# コード内の特定パターン検索
> "useEffectを使っているコンポーネントを探して"

# 推奨される動作(専用ツール):
# Grep tool: pattern="useEffect", type="tsx"
# - ripgrep(rg)ベースで高速
# - ファイルタイプフィルタリング
# - 正規表現サポート

# 非推奨(bashコマンド):
# $ grep -r "useEffect" src/
# $ rg "useEffect"

ファイル編集:Edit vs sed/awk

bash
# コードの一部を修正
> "API_URLを変更して"

# 推奨される動作(専用ツール):
# Edit tool: old_string="...", new_string="..."
# - 正確な文字列置換
# - 安全性確認
# - 元の内容を事前に読み取り

# 非推奨(bashコマンド):
# $ sed -i 's/old/new/g' file.ts
# $ awk '{gsub(/old/, "new")}' file.ts

パフォーマンスとUXの向上

パーミッションプロンプトの削減

bash
# シナリオ:複数のファイルを調査
> "プロジェクトの構造を理解したい"

# 以前:複数のbashコマンドでパーミッションプロンプト
# $ cat file1.ts  # → パーミッション確認
# $ cat file2.ts  # → パーミッション確認
# $ ls -la src/   # → パーミッション確認

# 改善後:専用ツールでスムーズに実行
# Read tool × 複数回 → パーミッション不要
# Glob tool で構造把握 → パーミッション不要

実行速度の改善

専用ツールは最適化されており、以下の利点があります:

  • 並列実行: 複数のReadツール呼び出しを同時実行可能
  • キャッシング: 同じファイルへのアクセスを効率化
  • フィルタリング: 必要な情報のみを取得
  • 構造化出力: パース済みのデータ構造を返す

注意点

  • bashコマンドが必要な場合: git、npm、docker、テストツールなど、実際のシェル操作が必要な場合は引き続きbashが使用されます。

    bash
    # これらはbashが適切:
    $ git status
    $ npm install
    $ pytest tests/
  • 専用ツールの制約: すべての操作が専用ツールでカバーできるわけではありません。複雑なパイプライン処理などはbashが適している場合もあります。

  • ユーザーへの影響: この改善はシステムプロンプトレベルの変更のため、ユーザー側で設定変更は不要です。自動的に適用されます。

  • 学習効果: AIモデルの学習により、時間とともにさらに最適な選択が行われるようになります。

利用可能な専用ツール一覧

Claude Codeが提供する主な専用ツール:

ツール用途bash相当
Readファイル内容の読み取りcat, head, tail
Editファイルの部分編集sed, awk
Writeファイルの新規作成・上書きecho >, cat <<EOF
Globファイルパターン検索find, ls
Grepコンテンツ検索grep, rg
NotebookEditJupyterノートブック編集-
WebFetchWeb コンテンツ取得curl, wget

背景:この改善の必要性

従来の問題点

2.1.31以前のバージョンでは、以下の問題がありました:

  1. 頻繁なパーミッションプロンプト: bashコマンド使用のたびに確認が必要
  2. 冗長な実行: 専用ツールで済む操作にシェルプロセスを起動
  3. 一貫性の欠如: 同じ操作に対して異なるアプローチが混在
  4. デバッグの困難: bash経由とツール経由で結果が異なる場合がある

システムプロンプトの役割

システムプロンプトは、AIモデルに対して「どのように動作すべきか」を指示する重要な要素です。この改善により:

  • より明確な優先順位付け
  • 具体的な使用例の提示
  • エラーケースの削減
  • ユーザー体験の向上

が実現されました。

関連情報