登録して招待リンクを共有すると、動画再生報酬と紹介報酬を獲得できます。

検索結果 ClaudeAgentSDK
ClaudeAgentSDK コミュニティ
1つのキーワードが1つのコミュニティです。
コミュニティ作成
アカウント
見つかりません
ClaudeAgentSDK を含む検索結果
# Claude Agent SDKの便利で実践的な使い方 🔍 数百〜数千のツールを効率的に管理し、必要なツールだけオンデマンドでロードできます。 ツール検索は、大量のツールをコンテキストに事前ロードする代わりに、必要なツールだけを実行時に検索・ロードする機能です。 📌 タイトル:多くのツールにスケーリングするツール検索 🔗 URL: 🧩 概要 `ENABLE_TOOL_SEARCH=auto` でツール定義がコンテキストを圧迫する場合に自動的にツール検索を有効化します。50ツールで10〜20Kトークン消費、30〜50ツール超で選択精度が低下する問題を解決します。 🛠 使い方 ```bash export ENABLE_TOOL_SEARCH=auto:5 # コンテキストの5%超で有効化 ``` 🏗 実践的な使い方 ・エンタープライズ MCP サーバー(数百ツール)接続時に、必要なツールだけオンデマンド検索してコンテキスト圧迫を防ぎます。 ・`auto:5` で「ツール定義がコンテキストの5%超ならツール検索を有効化」と自動判定。小規模(10ツール未満)なら `false` で事前ロードの方が高速です。 ・ツール説明に「キーワード、チャネル、日付範囲で Slack メッセージを検索」のような具体的キーワードを入れ、検索ヒット率を向上させます。 💡 ユースケース 🏢 大規模 MCP サーバーのツール管理 💰 トークンコストの最適化 🎯 ツール選択精度の維持 ⚠️ 注意点 Claude Sonnet 4 / Opus 4 以降が必要です(Haiku 非対応)。カタログ上限1万ツール、検索ごとに3〜5ツール返却。Vertex AI とサードパーティ `ANTHROPIC_BASE_URL` ではデフォルト無効です。 #ClaudeAgentSDK# #AI#
もっと見る
# Claude Agent SDKの便利で実践的な使い方 🛡 プロンプトインジェクション対策・認証情報プロキシ・最小権限で多層防御を構築しましょう。 セキュアデプロイメントは、分離技術・認証情報プロキシ・ネットワーク制御でエージェントの安全な本番運用を実現するガイドです。 📌 タイトル:AI エージェントの安全なデプロイ 🔗 URL: 🧩 概要 sandbox-runtime / Docker / gVisor / Firecracker の分離技術、認証情報プロキシパターン、ネットワーク・ファイルシステム制御を組み合わせた多層防御を提供します。 🛠 使い方 分離強度に応じて技術を選択:単一開発者/CI は sandbox-runtime、マルチテナントは gVisor/Firecracker。認証情報は Envoy / mitmproxy / LiteLLM で境界外注入します。 🏗 実践的な使い方 ・認証情報プロキシパターン:API キーをエージェント境界外のプロキシで注入し、エージェントは認証情報を見ずに API 呼び出しします。`ANTHROPIC_BASE_URL` でルーティング。 ・最小権限:必要ディレクトリのみ読み取り専用マウント、`.env`・`~/.aws/credentials`・`*.pem` を除外、`--network none` + Unix ソケットプロキシでネットワーク制限。 ・クラウドではプライベートサブネット + クラウドファイアウォールでプロキシ以外の送信を全ブロックし、許可リスト強制・認証情報注入・全トラフィックログを実現します。 💡 ユースケース 🔐 認証情報のエージェント境界外管理 🌐 ネットワーク制限による外部送信の防止 🏢 マルチテナント環境での強分離 ⚠️ 注意点 信頼できないコンテンツ(README、Web ページ、ユーザー入力)にはプロンプトインジェクションが含まれる可能性があります。ネットワーク制御は最後の防衛線として必ず設定してください。 #ClaudeAgentSDK# #AI#
もっと見る
# Claude Agent SDKの便利だけど知られていない機能 🌍 SDK エージェントが読み込む設定ファイルを、setting_sources で細かくコントロールできます。 CLAUDE.md、スキル、フック、settings.json の読み込み元を選択的に制御し、マルチテナント環境での分離も実現できます。 📌 タイトル:setting_sources による .claude/ 設定の選択的ロード 🔗 URL: 🧩 概要 `setting_sources`(TypeScript では `settingSources`)は、SDK がファイルシステムからどの設定を読み込むかを制御するオプションです。3つのソースがあります。`"project"` は `/.claude/` 配下の settings.json、フック、CLAUDE.md、スキルを読み込みます。`"user"` は `~/.claude/` 配下のユーザーレベル設定を読み込みます。`"local"` は `.claude/settings.local.json` や `CLAUDE.local.md` を読み込みます。省略時はすべて(`["user", "project", "local"]`)が有効になります。空配列 `[]` を渡すとすべてのファイルシステム設定を無効化できます。なお、マネージドポリシーと `~/.claude.json` は常に読み込まれます。 🛠 使い方 `setting_sources` にリストを渡して、必要なソースのみを有効化します。 ```python from claude_agent_sdk import query, ClaudeAgentOptions # プロジェクトとユーザーの設定を読み込む async for message in query( prompt="Help me refactor the auth module", options=ClaudeAgentOptions( setting_sources=["user", "project"], # CLAUDE.md, skills, hooks を有効化 allowed_tools=["Read", "Edit", "Bash"], ), ): pass # すべてのファイルシステム設定を無効化(プログラムで渡す設定のみ使用) async for message in query( prompt="Analyze this code", options=ClaudeAgentOptions( setting_sources=[], # ファイルシステムからの設定読み込みを完全に無効化 ), ): pass ``` 🏗 本番システムへの組み込み方 ・マルチテナント環境では `setting_sources=[]` と `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` を組み合わせて、テナント間の設定漏洩を防止できます ・CLAUDE.md を SDK エージェントで活用するには `"project"` を含める必要があります(含めないと読み込まれません) ・各ソースの読み込み先は以下の通りです: - `"project"`: `/.claude/` から settings.json とフック、`` と親ディレクトリから CLAUDE.md とルール - `"user"`: `~/.claude/` からユーザー設定、CLAUDE.md、ルール - `"local"`: `/.claude/settings.local.json` と親ディレクトリの CLAUDE.local.md 💡 ユースケース 🔒 セキュアなマルチテナント:各テナントを独立したファイルシステムで実行し、`setting_sources=[]` で他テナントの設定を遮断する 🏗 CI/CD パイプライン:`"project"` のみを有効にして、リポジトリ固有の CLAUDE.md とスキルだけを読み込む 👤 ユーザーカスタマイズの許可:`"user"` を含めることで、開発者個人の `~/.claude/CLAUDE.md` も反映する ⚠️ 注意点 ・`setting_sources` で制御できないものがあります:マネージドポリシー、`~/.claude.json`、オートメモリ(`~/.claude/projects/` 配下)、 MCP コネクタ ・オートメモリを無効にするには `autoMemoryEnabled: false` または環境変数 `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1` を設定してください ・`setting_sources` を明示的に設定する場合、デフォルトの3ソースすべてが無効化されるため、必要なソースを漏れなくリストしてください ✨ setting_sources を適切に設定することで、エージェントの設定読み込みを精密に制御し、安全で予測可能な動作を実現できます。 #ClaudeAgentSDK# #AIAgent#
もっと見る
# Claude Agent SDKの便利だけど知られていない機能 🌍 システムプロンプトをゼロから書く必要はありません。claude_code プリセットに append で追記する方式を使えば、安全性やツールガイダンスを維持したまま独自の指示を追加できます。 さらに excludeDynamicSections で複数マシン間のプロンプトキャッシュ共有も可能です。 📌 タイトル:システムプロンプトのプリセット+追記方式 🔗 URL: 🧩 概要 Claude Agent SDK のシステムプロンプトには3つの出発点があります。(1) ミニマルデフォルト(`systemPrompt` 未設定時、ツール呼び出しのみカバー)、(2) `claude_code` プリセット(Claude Code CLI と同じフルプロンプト)、(3) カスタム文字列(完全に独自のプロンプト)。特に便利なのが `claude_code` プリセット + `append` の組み合わせで、プリセットが提供するツール使用ガイダンス、安全性ルール、コーディング規約をすべて維持しつつ、末尾に独自の指示を追加できます。CLAUDE.md はシステムプロンプトではなく会話に注入される点も重要です。 🛠 使い方 `system_prompt` に dict 形式でプリセットと append を指定します。 ```python from claude_agent_sdk import query, ClaudeAgentOptions async for message in query( prompt="Help me write a Python function to calculate fibonacci numbers", options=ClaudeAgentOptions( system_prompt={ "type": "preset", "preset": "claude_code", "append": "Always include detailed docstrings and type hints in Python code.", } ), ): pass # メッセージを処理 # excludeDynamicSections でキャッシュ共有を有効化 async for message in query( prompt="Triage the open issues in this repo", options=ClaudeAgentOptions( system_prompt={ "type": "preset", "preset": "claude_code", "append": "You operate Acme's internal triage workflow.", "exclude_dynamic_sections": True, # 環境依存部分を除外 }, ), ): pass ``` 🏗 本番システムへの組み込み方 ・コーディングエージェントを構築する場合は `claude_code` プリセット + `append` を基本形とし、セキュリティルールやツールガイダンスの再実装コストを削減できます ・`exclude_dynamic_sections: True` を指定すると、作業ディレクトリやOS情報などの動的コンテキストがシステムプロンプトからユーザーメッセージに移動し、異なるマシン間でプロンプトキャッシュを共有できます ・CLAUDE.md は `setting_sources` に `"project"` を含めることで自動読み込みされ、システムプロンプトとは独立して機能します 💡 ユースケース 🏢 社内コーディング標準の適用:プリセットの安全性を維持しつつ、社内規約を append で追加する 🌐 多拠点展開のコスト削減:excludeDynamicSections でプロンプトキャッシュを全マシンで共有する 🤖 特化型エージェント:データ分析やサポートボットなど、コーディング以外の用途にはカスタム文字列を使用する ⚠️ 注意点 ・カスタム文字列を使う場合、ツールガイダンスや安全性ルールは自分で記述する必要があります ・`excludeDynamicSections` を有効にすると、環境情報がユーザーメッセージに移動するため、指示としての重みがわずかに低下する可能性があります ・SDK デフォルト(`systemPrompt` 未設定)は Claude Code CLI のデフォルトとは異なります。CLI からの移行時は明示的にプリセットを設定してください ✨ プリセット+追記方式は「安全な既定値を壊さずにカスタマイズする」最もリスクの低い方法です。 #ClaudeAgentSDK# #AIAgent#
もっと見る
# Claude Agent SDKの便利で実践的な使い方 📊 OpenTelemetry でエージェントの全動作を Datadog / Grafana / Langfuse に一元可視化できます。 OpenTelemetry を使用した可観測性は、エージェントのトレース・メトリクス・ログを OTLP で外部監視ツールにエクスポートする機能です。 📌 タイトル:OpenTelemetry を使用した可観測性 🔗 URL: 🧩 概要 `CLAUDE_CODE_ENABLE_TELEMETRY=1` でトレース・メトリクス・ログを有効化し、OTLP プロトコルで Honeycomb / Datadog / Grafana / Langfuse 等にエクスポートします。W3C トレースコンテキストの自動伝播でアプリのトレースと統合できます。 🛠 使い方 ```bash export CLAUDE_CODE_ENABLE_TELEMETRY=1 export CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1 # 詳細スパン export OTEL_EXPORTER_OTLP_ENDPOINT=https://your-collector:4318 ``` 🏗 実践的な使い方 ・「どのツールを呼び、何秒かかり、トークンをいくつ使い、どこで失敗したか」を Datadog で一元監視します。 ・`CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` で `claude_code.interaction` / `llm_request` / `tool` / `hook` のスパンを取得し、サブエージェントの委譲チェーン全体を1トレースで可視化します。 ・`OTEL_RESOURCE_ATTRIBUTES` に ` / ` を注入し、ユーザー毎の監査証跡を構築して SIEM へ転送します。 💡 ユースケース 🔍 エージェント実行の詳細トレース分析 👥 ユーザー毎の監査証跡 🚨 障害発生時のボトルネック特定 ⚠️ 注意点 `console` エクスポーターは SDK のメッセージチャネルと衝突するため使用できません。短命プロセスでは `OTEL_*_EXPORT_INTERVAL` を短縮してフラッシュ漏れを防いでください。 #ClaudeAgentSDK# #AI#
もっと見る
# Claude Agent SDKの便利で実践的な使い方 💰 エージェントのコストをステップ単位・モデル別に追跡し、予算を最適化しましょう。 コストと使用状況の追跡は、`total_cost_usd` や `modelUsage` でエージェント実行のトークン消費とコストをリアルタイムに把握する機能です。 📌 タイトル:コストと使用状況の追跡 🔗 URL: 🧩 概要 ` で呼び出しごとの累積推定コストを取得し、`modelUsage` でモデル別のトークン内訳を確認できます。プロンプトキャッシュの最適化で大幅なコスト削減も可能です。 🛠 使い方 `ResultMessage` の `total_cost_usd` フィールドを読み取ります。`AssistantMessage` の `id` でデデュプリケーションしてステップ単位の正確な集計が可能です。 🏗 実践的な使い方 ・`total_cost_usd` で `query()` 呼び出しごとのコストを監視し、閾値を超えたらアラートを発行します。 ・`modelUsage` でサブエージェント用 Haiku とメイン用 Opus のコストを分解し、どこにコストがかかっているか可視化します。 ・`ENABLE_PROMPT_CACHING_1H=1` で TTL を 5 分→1 時間に延長し、短いセッションを多数回す場合のキャッシュ切れを防止します。 ・複数 `query()` の `total_cost_usd` をアプリ側で累積し、セッション横断のコスト管理を実現します。 💡 ユースケース 📊 ステップ単位のコスト可視化ダッシュボード 🔔 予算超過アラートの自動発行 ⚡ プロンプトキャッシュによるコスト最適化 ⚠️ 注意点 `total_cost_usd` は概算推定値です。権限ある請求管理には Usage and Cost API / Console を使用してください。SDK はセッション合計を提供しないため、アプリ側で累積する必要があります。 #ClaudeAgentSDK# #AI#
もっと見る
# Claude Agent SDKの便利だけど知られていない機能 🌍 サブエージェントにスキルやMCPサーバーを個別に設定したい?AgentDefinitionで細かくカスタマイズできます! Claude Agent SDKのAgentDefinitionでは、skills、memory、mcpServersをはじめとする豊富なフィールドで、エージェント単位の詳細な設定が可能です。 📌 タイトル:エージェント単位の skills / memory / mcpServers 指定 🔗 URL: 🧩 概要 `AgentDefinition` には、`description` と `prompt` の必須フィールドに加え、多数のオプションフィールドがあります。`skills` でスキルをプリロード、`memory` でメモリソース(`user`/`project`/`local`)を指定、`mcpServers` でMCPサーバーを名前またはインライン設定で接続できます。さらに `tools`、`disallowedTools`、`model`(`sonnet`/`opus`/`haiku`/`inherit` またはフルモデルID)、`effort`、`permissionMode`、`maxTurns`、`background`、`initialPrompt` など、エージェントの挙動を包括的に制御できます。 🛠 使い方 ```python # Python - フル構成のエージェント定義 from claude_agent_sdk import AgentDefinition agent = AgentDefinition( description="データベース移行の専門家", prompt="あなたはDB移行のエキスパートです。安全な移行戦略を提案してください。", tools=["Read", "Grep", "Glob", "Bash"], disallowed_tools=["Bash(rm *)"], # 特定操作を禁止 model="opus", # 高品質なモデルを使用 skills=["db-migration"], # スキルをプリロード memory="project", # プロジェクトメモリを使用 mcpServers=["postgres-server"], # MCPサーバーに接続 effort="high", # 推論レベルを高く max_turns=20, # 最大ターン数を制限 permission_mode="acceptEdits", # 編集を自動承認 background=False, # フォアグラウンドで実行 ) ``` ```typescript // TypeScript const agent: AgentDefinition = { description: "Database migration specialist", prompt: "You are a DB migration expert. Propose safe migration strategies.", tools: ["Read", "Grep", "Glob", "Bash"], disallowedTools: ["Bash(rm *)"], model: "opus", skills: ["db-migration"], memory: "project", mcpServers: ["postgres-server"], effort: "high", maxTurns: 20, permissionMode: "acceptEdits", background: false, }; ``` 🏗 本番システムへの組み込み方 ・`skills` でドメイン固有の知識をプリロードし、エージェントの専門性を高めます(未リストのスキルもSkillツール経由で呼び出し可能) ・`memory` で適切なスコープを設定し、エージェント間でのコンテキスト共有を制御します ・`mcpServers` でデータベースや外部サービスへの接続を名前またはインライン設定で管理します ・`maxTurns` でコスト制御と暴走防止を行い、`effort` でタスクの重要度に応じた推論品質を設定します ・`background: true` でノンブロッキング実行にし、並行タスクの効率を上げます 💡 ユースケース 🗄 MCPサーバー接続付きのデータベース移行エージェント 📚 ドメイン固有スキルをプリロードした専門家エージェント ⚡ バックグラウンド実行で並行分析を行う高速ワークフロー ⚠️ 注意点 ・`tools` を省略するとすべてのツールを親から継承します。制限したい場合は明示的に指定してください ・サブエージェントの `permissionMode` は、親が `bypassPermissions`/`acceptEdits`/`auto` の場合、親のモードが強制的に継承されオーバーライドできません ・`skills` にリストしたスキルは起動時にプリロードされますが、リストにないスキルもSkillツール経由で呼び出せます ・Python SDKではフィールド名はcamelCaseでワイヤフォーマットに合わせます ✨ AgentDefinitionの豊富な設定フィールドを活用すれば、汎用エージェントではなく、タスクに最適化された専門家エージェントを構築できます! #ClaudeAgentSDK# #AIAgent#
もっと見る
# Claude Agent SDKの便利だけど知られていない機能 🌍 実行時の条件に応じてエージェントの設定を変えたい?ファクトリ関数で動的にエージェントを生成できます! Claude Agent SDKでは、ファクトリ関数パターンを使って、ランタイム条件に基づいてカスタマイズされたAgentDefinitionを動的に生成できます。 📌 タイトル:動的なエージェント定義(ファクトリ関数) 🔗 URL: 🧩 概要 `AgentDefinition` を返すファクトリ関数を作成することで、実行時の条件(セキュリティレベル、ユーザー権限、環境など)に応じてプロンプト、モデル、ツールセットをカスタマイズしたエージェントを動的に生成できます。エージェントはクエリ時に生成されるため、リクエストごとに異なる構成を適用できます。例えば、厳格なセキュリティレビューでは `opus` モデル、通常レビューでは `sonnet` モデルを使い分けるといった運用が可能です。 🛠 使い方 ```python # Python - セキュリティレベルに応じたエージェント生成 from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition def create_security_agent(security_level: str) -> AgentDefinition: is_strict = security_level == "strict" return AgentDefinition( description="セキュリティコードレビュアー", prompt=f"あなたは{'厳格な' if is_strict else 'バランス重視の'}セキュリティレビュアーです...", tools=["Read", "Grep", "Glob"], model="opus" if is_strict else "sonnet", # 重要度に応じてモデルを変更 ) # クエリ時にファクトリを呼び出し async for message in query( prompt="このPRのセキュリティ問題をレビューしてください", options=ClaudeAgentOptions( allowed_tools=["Read", "Grep", "Glob", "Agent"], agents={ "security-reviewer": create_security_agent("strict") }, ), ): if hasattr(message, "result"): print(message.result) ``` ```typescript // TypeScript function createSecurityAgent(level: "basic" | "strict"): AgentDefinition { const isStrict = level === "strict"; return { description: "Security code reviewer", prompt: `You are a ${isStrict ? "strict" : "balanced"} security reviewer...`, tools: ["Read", "Grep", "Glob"], model: isStrict ? "opus" : "sonnet", }; } for await (const message of query({ prompt: "Review this PR for security issues", options: { allowedTools: ["Read", "Grep", "Glob", "Agent"], agents: { "security-reviewer": createSecurityAgent("strict") } } })) { if ("result" in message) console.log(message.result); } ``` 🏗 本番システムへの組み込み方 ・ユーザーの権限レベルやサブスクリプションプランに応じて、異なるモデルやツールセットを割り当てます ・環境変数や設定ファイルから条件を読み取り、デプロイ環境ごとに適切なエージェントを生成します ・タスクの重要度に応じて `model` を切り替え、コストと品質のバランスを最適化します ・複数のファクトリ関数を組み合わせて、多様なエージェントチームを動的に構成します 💡 ユースケース 🔐 重要なセキュリティレビューではopusモデル、日常のレビューではsonnetモデルを使い分ける 👥 ユーザーの権限に応じて利用可能なツールを動的に変更するマルチテナントシステム 🌐 リージョンや言語設定に応じてプロンプトをローカライズしたエージェントを生成する ⚠️ 注意点 ・ファクトリ関数はクエリ時に同期的に呼ばれるため、重い処理は避けてください ・生成されたエージェントは通常のAgentDefinitionと同じ制約(サブエージェントはサブエージェントを生成できない等)に従います ・動的に生成されるため、デバッグ時にどの構成が使われたかを記録しておくことをお勧めします ✨ ファクトリ関数パターンは、1つのコードベースで多様なユースケースに対応するエージェントを生成できる強力なパターンです。条件分岐をハードコードするのではなく、ファクトリに委ねましょう! #ClaudeAgentSDK# #AIAgent#
もっと見る
# Claude Agent SDKの便利で実践的な使い方 ⏪ エージェントが行ったファイル変更を追跡し、いつでも安全な状態に巻き戻せます。 ファイルチェックポイントは、エージェントが Write/Edit で行った変更を追跡し、`rewind_files()` で任意の時点に巻き戻す機能です。 📌 タイトル:checkpointing でファイル変更を巻き戻す 🔗 URL: 🧩 概要 `enable_file_checkpointing=True` で有効化すると、各ターンの変更が追跡されチェックポイント UUID が発行されます。`rewind_files(checkpoint_id)` で指定時点のファイル状態に復元できます。 🛠 使い方 `enable_file_checkpointing=True` で有効化します。ストリーム中の `UserMessage.uuid` がチェックポイント ID になります。復元は `rewind_files(checkpoint_id)` を呼び出します(CLI では `--rewind-files` フラグ)。 🏗 実践的な使い方 ・リスク操作前に最新チェックポイント UUID を保持し、検証失敗時に直前の安全状態へ即巻き戻します。 ・ターン毎の UUID を配列保存し、「ターン 1 のリファクタは残しつつ、ターン 2 のテスト追加だけ元に戻す」といった選択的ロールバックを実現します。 ・ドキュメントコメント追加後にユーザーへ「巻き戻すか?」を確認する対話的承認フローを構築します。 💡 ユースケース 🛡 検証失敗時の安全な状態への即時復元 🎯 選択的ロールバック(特定ターンのみ巻き戻し) 🔄 試行錯誤サイクルの高速化 ⚠️ 注意点 Bash 経由(`echo >`, `sed -i`)の変更・ディレクトリ操作・リモートファイルは追跡対象外です。会話履歴は巻き戻されません(ファイルのみ)。 #ClaudeAgentSDK# #AI#
もっと見る
# Claude Agent SDKの便利だけど知られていない機能 🌍 サブエージェントの会話を中断して、後から続きを再開したい?resume機能で全履歴を保持したまま再開できます! Claude Agent SDKでは、サブエージェントのセッションIDとエージェントIDを使って、完全な会話履歴を保持したまま処理を再開できます。 📌 タイトル:サブエージェントの再開(resume) 🔗 URL: 🧩 概要 サブエージェントが完了すると、Agentツールの結果に `agentId: ` が含まれます。この `agentId` とセッションの `session_id` を保存しておけば、`resume` オプションで同じセッションを再開し、`"Resume agent "` というプロンプトでサブエージェントの続きから処理を開始できます。再開されたサブエージェントは、以前のすべてのツール呼び出し、結果、推論を保持しています。なお、組み込みの `Explore` / `Plan` エージェントはワンショット(1回限り)のため再開できません。 🛠 使い方 ```python # Python - サブエージェントの再開 import re from claude_agent_sdk import query, ClaudeAgentOptions, AgentDefinition, ToolResultBlock AGENTS = { "endpoint-finder": AgentDefinition( description="APIエンドポイントを探索・カタログ化します", prompt="APIエンドポイントを見つけて文書化してください", tools=["Read", "Grep", "Glob"], ) } # 1回目: サブエージェントを実行し、IDを取得 agent_id = None session_id = None async for message in query( prompt="endpoint-finderエージェントでAPIエンドポイントを探索してください", options=ClaudeAgentOptions( allowed_tools=["Read", "Grep", "Glob", "Agent"], agents=AGENTS, ), ): if hasattr(message, "session_id"): session_id = message.session_id for block in getattr(message, "content", None) or []: if isinstance(block, ToolResultBlock): text = str(block.content) if match := "agentId:\s*([\w-]+)", text): agent_id = # 2回目: 同じセッションで再開し、フォローアップ質問 if agent_id and session_id: async for message in query( prompt=f"Resume agent {agent_id} and list the top 3 most complex endpoints", options=ClaudeAgentOptions( allowed_tools=["Read", "Grep", "Glob", "Agent"], agents=AGENTS, resume=session_id, # 同じセッションを再開 ), ): if hasattr(message, "result"): print(message.result) ``` 🏗 本番システムへの組み込み方 ・長時間の分析タスクを分割し、中間結果を確認してからフォローアップを実行するワークフローを構築します ・`session_id` と `agentId` をデータベースに保存して、後から任意のタイミングで再開できるようにします ・カスタムエージェントまたは `general-purpose` エージェントを使用します(Explore/Planは再開不可) ・再開時には同じエージェント定義を `agents` パラメータに渡す必要があります 💡 ユースケース 🔄 大規模コードベースの調査を段階的に行い、各フェーズの結果を確認してから次に進む 💬 サブエージェントの分析結果に対してフォローアップ質問を行う対話型ワークフロー 📊 初回分析後にスコープを絞った詳細分析を追加実行する ⚠️ 注意点 ・再開には同じ `session_id` が必要です。新しい `query()` はデフォルトで新規セッションを開始します ・組み込みの `Explore` / `Plan` エージェントはワンショットのため `agentId` を出力せず、再開できません ・サブエージェントのトランスクリプトは `cleanupPeriodDays`(デフォルト30日)で自動クリーンアップされます ・メイン会話のコンパクション(圧縮)はサブエージェントのトランスクリプトに影響しません ✨ resume機能を使えば、サブエージェントとの「対話」が可能になります。1回限りの使い捨てではなく、継続的な分析パートナーとして活用しましょう! #ClaudeAgentSDK# #AIAgent#
もっと見る