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

検索結果 INIVT_Guide/他界隈の方でフォローリポスト等された場合はブロックいたします
INIVT_Guide/他界隈の方でフォローリポスト等された場合はブロックいたします コミュニティ
1つのキーワードが1つのコミュニティです。
コミュニティ作成
アカウント
見つかりません
INIVT_Guide/他界隈の方でフォローリポスト等された場合はブロックいたします を含む検索結果
TL;DR: 同じ Claude Opus でも、ハーネスなしは20分で$9の失敗、ハーネスありは6時間で$200のプロダクト。この差を体系的に教えるオープンソースカリキュラムです。 learn-harness-engineering 「モデルは賢い。ハーネスが信頼性を作る」——このリポジトリはAIコーディングエージェント向けのハーネス工学を14レクチャー・8プロジェクトで学ぶ教材です(⭐️ 13.7k)。 ポイント 🔧 5つのサブシステムがハーネスの骨格 ・Instructions: AGENTS.md など構造化ガイダンスでリポジトリを真実源に ・State: claude-progress.md とgit履歴でマルチセッション継続性を確保 ・Verification: テスト・lint・E2Eで「完了したふり」を防ぐ ・Scope: 明示的な完了基準で1フィーチャーずつ確実に進める ・Session Lifecycle: init → 実装 → 検証 → コミット → ハンドオフの構造的フロー 📚 段階的なカリキュラム設計 基礎(問題の直視・構造化)から発展(ループ自動化・グラフ設計・Human-in-the-Loop)まで段階的に構成。共有の Electron アプリを題材に、コードを通じてハーネスを習得します。 ⚡ すぐ既存プロジェクトに適用できる AGENTS.md・ の3ファイルをテンプレートからコピーするだけで即座に効果が出る設計。 🌐 最新のフロンティア設計も収録 Pi・Claude Code・Codex・DeepSeek の実際のハーネス設計の分析(2026年8月追加)、ループエンジニアリング・グラフエンジニアリング(2026年7月追加)と、現場の最新実践を継続的に反映しています。 エージェントを「プロンプトで動かす」から「ハーネスで信頼させる」へ、という発想の転換を13.7kのエンジニアが支持しています。 #CodingAgent# #AIエンジニアリング#
もっと見る
# ADKの便利で実践的な使い方 ## 🔌 全エージェントに一括適用!ADKのPlugins機能 個別のエージェントにコールバックを設定するのは面倒…ADKの **Plugins** なら、Runnerレベルで全エージェント・全ツール・全LLM呼び出しに横断的な制御を一括適用できます!🎯 ## 📌 タイトル Plugins(プラグイン) ## 🔗 URL ## 🧩 概要 Pluginsは、Runnerレベルで動作するクロスエージェントモジュールです。エージェント個別のCallbacksとは異なり、**一度登録するだけで全エージェント・全ツール・全LLM呼び出しに適用**されます。セキュリティガードレール、ロギング、レート制限などの横断的関心事に最適です。 プラグインはエージェントレベルのコールバックよりも**先に実行される**ため、グローバルポリシーの適用に適しています。 ADKには組み込みプラグインも用意されています:Reflect and Retry Tools、BigQuery Analytics、Context Filter、Global Instruction、Logging Pluginなど。 ## 🛠 使い方 `BasePlugin` を `google.adk.plugins.base_plugin` からインポートし、`InMemoryRunner` を `google.adk.runners` からインポートします。`SecurityGuardPlugin` クラスを `BasePlugin` のサブクラスとして定義し、`__init__` で `super().__init__(name="security_guard")` を呼びます。`before_model_callback` メソッドでは `llm_request.contents[-1].parts[0].text` からユーザー入力を取得し、`detect_injection()` でインジェクションを検出した場合に拒否メッセージ入りの `LlmResponse` を返します。`before_tool_callback` メソッドでは `is_authorized( で権限チェックを行い、未認可ならエラー辞書を返します。いずれも問題なければ `None` を返して通常続行します。最後に `InMemoryRunner` を作成し、`plugins=[SecurityGuardPlugin()]` を渡すだけで全エージェントにこのセキュリティガードが適用されます。 ## 🏗 実践的な使い方 **「Gemini as a Judge」パターンでのインジェクション検出:** `InjectionDetectorPlugin` は `BasePlugin` を継承し、`name="injection_detector"` で初期化します。`self.judge_model = "gemini-flash-lite"` をジャッジモデルとして保持し、`before_model_callback` で `llm_request.contents[-1].parts[0].text` からユーザー入力を取得して `judge_with_flash_lite()` に渡します。判定結果が `"INJECTION"` であれば `audit_log()` で記録し、拒否メッセージ入りの `LlmResponse` を返してブロックします。問題なければ `None` を返します。 `RateLimitPlugin` は `BasePlugin` を継承し、`max_calls_per_minute` パラメータ(デフォルト60)で初期化します。` リストで呼び出し履歴を管理し、`before_model_callback` で直近60秒間の呼び出し回数をカウントします。上限に達していればレート制限メッセージ入りの `LlmResponse` を返し、そうでなければ現在時刻を `call_log` に追加して `None` を返します。 最後に `InMemoryRunner` の `plugins` パラメータに `InjectionDetectorPlugin()` と `RateLimitPlugin(max_calls_per_minute=30)` を渡して、複数プラグインを組み合わせて登録します。 ## 💡 ユースケース - 🛡️ **セキュリティガードレール**:全エージェントに対するインジェクション検出・PII保護を一元管理 - 📊 **統合ロギング**:BigQuery Analyticsプラグインで全エージェントの実行ログを集約 - ⏱️ **レート制限**:API呼び出し回数を制御してコスト爆発を防止 - 🔄 **自動リトライ**:Reflect and Retry Toolsプラグインでツール失敗時のインテリジェントなリトライ - 📝 **グローバルインストラクション**:全エージェントに共通のポリシーや指示を注入 ## ⚠️ 注意点 - プラグインはエージェントレベルのコールバックより**先に**実行されます(優先順位に注意) - プラグインで値を返すと、対応するエージェントレベルのコールバックも含めてスキップされます - 全エージェントに適用されるため、特定エージェントだけに適用したいロジックはCallbacksを使ってください - `on_model_error_callback` / `on_tool_error_callback` フックでエラーハンドリングも可能です - Python v1.7.0+、TypeScript v0.2.5+、Go v0.4.0+、Java v0.3.0+ で利用可能です ## ✨ まとめ Pluginsは「一度書けば全エージェントに適用」を実現する強力な仕組みです。セキュリティ、ロギング、レート制限などの横断的関心事はPluginsに任せ、エージェント固有のロジックはCallbacksに集中させましょう。この分離により、保守性とセキュリティの両方が向上します! #ADK# #AIAgent#
もっと見る
# ADK 2.0の便利だけど知られていない機能 🌍 エージェントの実行フロー全体にフックを仕掛けて、監視・介入・拡張できたら便利だと思いませんか? ADK 2.0のプラグイン機能は、`BasePlugin` を拡張してRunnerに登録することで、エージェントのライフサイクル全体にわたるコールバックをグローバルに適用できる仕組みです。個別エージェントのコールバックとは異なり、全エージェントに横断的に作用します。 📌 タイトル:プラグイン (Plugins) 🔗 URL: 🧩 概要 プラグインは `BasePlugin` を継承して作成し、Runnerに登録します。エージェント個別のコールバックとは異なり、グローバルスコープで全エージェントに適用されます。ライフサイクルフックは多岐にわたり、ユーザーメッセージの受信、Runner開始、エージェント実行、モデル呼び出し、ツール実行、イベント処理、Runner終了の各タイミングに介入できます。動作モードは3種類あり、Observe(監視のみ)、Intervene(処理を変更・中断)、Amend(結果を後から修正)です。プラグインのコールバックはエージェントのコールバックよりも先に実行されます。 🛠 使い方 `BasePlugin` を継承し、必要なライフサイクルフックをオーバーライドします。 ```python from adk.plugins import BasePlugin class LoggingPlugin(BasePlugin): def __init__(self): super().__init__(name="logging_plugin") async def on_before_model_call(self, callback_context, llm_request): print(f"Model call: {llm_request.model}") return None # Noneを返すと通常の処理が続行 async def on_after_tool_call(self, tool_context, tool_response): print(f"Tool executed: {tool_context.tool_name}") return None # Runnerに登録 runner = Runner( agent=my_agent, plugins=[LoggingPlugin()] ) ``` Interveneモードではコールバックから値を返すことで処理を置き換え、Amendモードではイベント処理後に結果を修正できます。 🏗 本番システムへの組み込み方 ・ログ収集やメトリクス記録をObserveモードのプラグインとして実装し、エージェントコードを汚さない ・ガードレールやコンテンツフィルタリングをInterveneモードで実装し、不適切な入出力をブロックする ・分析用データの収集をAmendモードで後処理として組み込む ・プリビルトプラグイン(Reflect/Retry、BigQuery Analytics、Context Filtering、Global Instructions等)を活用して開発を効率化する 💡 ユースケース 📊 全エージェントのモデル呼び出しとツール実行をBigQueryに記録する 🛡 入力内容のガードレールをプラグインで一元管理し、有害なリクエストをブロックする 🔄 モデル呼び出し失敗時のリトライロジックをReflect/Retryプラグインで実装する 📋 グローバルな指示(コンプライアンスルール等)をGlobal Instructionsプラグインで全エージェントに適用する ⚠️ 注意点 プラグインのコールバックはエージェントのコールバックよりも先に実行されるため、プラグインで処理をブロックするとエージェントのコールバックは呼ばれません。Interveneモードで不適切な値を返すとエージェントの動作が壊れる可能性があるため、返り値の型と意味を正確に理解してから使用してください。また、プラグインの実行順序はRunnerへの登録順に依存します。 ✨ プラグインを活用することで、横断的な関心事(ログ、セキュリティ、分析)をエージェントのコアロジックから分離でき、保守性の高いシステムを構築できます。 #ADK# #AIAgent#
もっと見る
# OpenCodeの機能と実践的な使い方 📜 「うちのプロジェクトの作法、毎回説明するの面倒…」を解決するのが `AGENTS.md` です。一度書けば、エージェントが常にそのルールを踏まえて動いてくれます。 🏷️ タイトル: AGENTS.md 🔗 URL: 📘 概要 `AGENTS.md` はOpenCodeにカスタム指示を与えるためのファイルです。プロジェクトの規約・アーキテクチャ・ビルド手順などを書いておくと、その内容がLLMのコンテキストに常時含まれ、エージェントの振る舞いをチームの流儀に合わせられます。 ⚙️ 機能の説明 ルールは2つのレベルで管理できます。 ・プロジェクト単位: リポジトリ直下の `AGENTS.md`。そのディレクトリ配下にのみ適用されます。 ・グローバル単位: `~/.config/opencode/AGENTS.md`。全セッション共通で、個人の好みに向いています。 起動時の探索順は、ローカルの `AGENTS.md` または `CLAUDE.md`(現在地から上位へ遡る)→ グローバルの `~/.config/opencode/AGENTS.md` → Claude Code互換の `~/.claude/CLAUDE.md` の順で、各カテゴリで最初に見つかったものが採用されます。Cursor風の運用にも近く、移行もしやすい設計です。 🛠️ 実践的な使い方 外部のドキュメントを指示として取り込みたい場合は、`opencode.json` の `instructions` に `["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]` のようにファイルを列挙します。グロブも使えます。 ゼロから書くのが大変なら `/init` を実行すると、重要なファイルを走査し、必要に応じて質問しながら `AGENTS.md` を自動生成・改善してくれます。生成後はGitにコミットしてチームで共有しましょう。 💡 ユースケース 「コミットメッセージは日本語」「テストは pytest で書く」「この層を直接importしない」といった暗黙知を `AGENTS.md` に明文化しておけば、新メンバーにもエージェントにも同じ前提が伝わり、レビューの手戻りが減ります。モノレポでは `instructions` のグロブでパッケージごとの規約を束ねられます。 ⚠️ 注意点 `AGENTS.md` 内に手書きしたファイル参照は自動では展開されません。複数ファイルを確実に読ませたいときは `opencode.json` の `instructions` を使うのが堅実です。既存の `CLAUDE.md` がある場合は互換として認識されますが、新規は `AGENTS.md` に寄せると整理しやすいでしょう。リモートURL参照は5秒のタイムアウトがある点も覚えておきましょう。 #OpenCode# #AGENTSmd#
もっと見る
# Claude Agent SDKの便利で実践的な使い方 🔌 MCP で Playwright・DB・GitHub 等の外部ツールをエージェントに接続して、能力を無限に拡張できます。 MCP(外部ツール接続)は、Model Context Protocol を介して外部の MCP サーバー(ブラウザ・DB・API 等)をエージェントに接続する機能です。 📌 タイトル:MCP を使用して外部ツールに接続する 🔗 URL: 🧩 概要 `mcp_servers` に stdio / HTTP / SSE トランスポートで外部 MCP サーバーを指定します。`allowedTools` でアクセス可能なツールを制御し、`env` や `headers` で認証情報を注入します。 🛠 使い方 `mcp_servers` に stdio / HTTP / SSE トランスポートでサーバーを指定します。例えば Playwright は `{"command": "npx", "args": ["@playwright/mcp@latest"]}`、Postgres は `"env": {"DATABASE_URL": "..."}` で接続情報を注入します。`allowed_tools=["mcp__postgres__query"]` で利用可能なツールを制御します。 🏗 実践的な使い方 ・Playwright MCP サーバーを接続し「 を開いて内容を説明して」で E2E テストや Web スクレイピングエージェントを構築します。 ・Postgres MCP サーバーに接続し「先週のサインアップ数を日別で」と尋ねると、Claude がスキーマ検出→ SQL 生成→実行します。`allowedTools: ["mcp__postgres__query"]` で読み取りのみ許可。 ・GitHub MCP サーバーで Issue トリアージや自動対応ボットを構築します。 ・`system/init` メッセージの `mcp_servers[].status` で接続状態を起動前に検証します。 💡 ユースケース 🌐 Playwright によるブラウザ自動化 🗄 自然言語での DB クエリ実行 📋 GitHub Issue の自動トリアージ ⚠️ 注意点 `permissionMode: "acceptEdits"` は MCP ツールを自動承認しません。`allowedTools` のワイルドカード(`mcp__github__*`)で必要なサーバーのみ許可するのが安全です。接続タイムアウトはデフォルト 60 秒です。 #ClaudeAgentSDK# #AI#
もっと見る
# Claude Agent SDKの便利で実践的な使い方 🔌 MCP で Playwright・DB・GitHub 等の外部ツールをエージェントに接続して、能力を無限に拡張できます。 MCP(外部ツール接続)は、Model Context Protocol を介して外部の MCP サーバー(ブラウザ・DB・API 等)をエージェントに接続する機能です。 📌 タイトル:MCP を使用して外部ツールに接続する 🔗 URL: 🧩 概要 `mcp_servers` に stdio / HTTP / SSE トランスポートで外部 MCP サーバーを指定します。`allowedTools` でアクセス可能なツールを制御し、`env` や `headers` で認証情報を注入します。 🛠 使い方 `mcp_servers` に stdio / HTTP / SSE トランスポートでサーバーを指定します。例えば Playwright は `{"command": "npx", "args": ["@playwright/mcp@latest"]}`、Postgres は `"env": {"DATABASE_URL": "..."}` で接続情報を注入します。`allowed_tools=["mcp__postgres__query"]` で利用可能なツールを制御します。 🏗 実践的な使い方 ・Playwright MCP サーバーを接続し「 を開いて内容を説明して」で E2E テストや Web スクレイピングエージェントを構築します。 ・Postgres MCP サーバーに接続し「先週のサインアップ数を日別で」と尋ねると、Claude がスキーマ検出→ SQL 生成→実行します。`allowedTools: ["mcp__postgres__query"]` で読み取りのみ許可。 ・GitHub MCP サーバーで Issue トリアージや自動対応ボットを構築します。 ・`system/init` メッセージの `mcp_servers[].status` で接続状態を起動前に検証します。 💡 ユースケース 🌐 Playwright によるブラウザ自動化 🗄 自然言語での DB クエリ実行 📋 GitHub Issue の自動トリアージ ⚠️ 注意点 `permissionMode: "acceptEdits"` は MCP ツールを自動承認しません。`allowedTools` のワイルドカード(`mcp__github__*`)で必要なサーバーのみ許可するのが安全です。接続タイムアウトはデフォルト 60 秒です。 #ClaudeAgentSDK# #AI#
もっと見る
# ADKの便利で実践的な使い方 🔧 標準ワークフローでは実現できない独自のオーケストレーションロジックが必要な場面、ありますよね。ADKのCustom Agentsなら、`BaseAgent`を継承して自由自在に制御フローを組み立てられます! 📌 タイトル:Custom Agents — BaseAgent継承による自由な制御フロー設計 🔗 URL: 🧩 概要 Custom Agentsは、`google.adk.agents.BaseAgent`を継承し、`_run_async_impl`メソッドを実装することで、任意のオーケストレーションロジックを構築できる仕組みです。SequentialAgentやParallelAgentなどの定型パターンでは対応できない、条件分岐・ループ・外部状態同期といった高度なワークフローを実現します。サブエージェントの呼び出し、セッション状態の共有、イベントの伝播がフレームワーク標準で管理されます。 🛠 使い方 Custom Agentの基本構造は以下のとおりです。 `google.adk.agents.BaseAgent` を継承して `MyCustomAgent` クラスを定義します。フィールドとして `story_generator`、`critic_agent`、`tone_checker` の3つの `LlmAgent` を宣言します。`_run_async_impl` メソッド内で、まず `self.story_generator.run_async(ctx)` でストーリーを生成し、次に `self.critic_agent.run_async(ctx)` を `for i in range(2)` で最大2回ループして批評・修正を行います。最後に `self.tone_checker.run_async(ctx)` でトーンを確認し、`ctx.session.state.get("tone_result")` が `"negative"` の場合は `self.story_generator.run_async(ctx)` で再生成する条件分岐を行います。各サブエージェントの実行は `async for event in ... yield event` パターンでイベントを伝播します。 サブエージェント間のデータ共有には`ctx.session.state`を使います。 エージェントAが `ctx.session.state["analysis_result"] = result` で結果を書き込み、エージェントBが `ctx.session.state.get("analysis_result")` でそれを読み取ります。 🏗 実践的な使い方 **レガシーステートマシンの再現**: 既存の状態遷移ロジックをCustom Agentに移植できます。`_run_async_impl`内でPythonの標準的な制御構文(if/elif/while/try-except)を使い、状態ごとに異なるサブエージェントを呼び分けます。 `_run_async_impl` 内で `state = "INIT"` から開始し、`while state != "DONE"` でステートマシンを実装します。`"INIT"` 状態では `self.init_agent.run_async(ctx)` を実行し、`ctx.session.state.get("next_state", "PROCESS")` で次の状態を決定します。`"PROCESS"` 状態では `self.process_agent.run_async(ctx)` を実行後 `"REVIEW"` に遷移します。`"REVIEW"` 状態では ` を実行し、`ctx.session.state.get("approved")` が真なら `"DONE"` に、偽なら `"PROCESS"` に戻ります。 **外部状態との同期**: データベースやAPIから取得した状態に基づいて実行パスを動的に切り替えられます。例えば、外部システムのステータスを確認してから次のエージェントを選択するパターンが実現可能です。 💡 ユースケース 🔄 レガシーシステムの状態遷移ロジックをAIエージェントとして再実装 🔀 中間結果に基づく条件分岐ワークフロー(品質チェック → 不合格なら再生成) 🔗 外部API/DBの状態に応じたエージェント選択 🔁 批評・修正の反復ループ(最大N回で打ち切り) ⚠️ 注意点 - `sub_agents`リストには、`_run_async_impl`内で直接呼び出すすべてのサブエージェントを含める必要があります。含めないとフレームワークのライフサイクル管理が正しく動作しません。 - `ctx.session.state`は全サブエージェント間で共有されるため、キー名の衝突に注意してください。プレフィックスをつけるなどの規約を決めておくと安全です。 - 無限ループを防ぐため、ループ処理には必ず最大回数や終了条件を設けてください。 ✨ Custom Agentsは、定型パターンでは収まらない独自のビジネスロジックをエージェントに組み込むための最も柔軟な手段です。ステートマシンの移行や複雑な条件分岐が必要な場面で、ぜひ活用してみてください! #ADK# #AIAgent#
もっと見る