Show HN: phpClaw – AI agent runtime for PHP with tools, memory and guards
Show HN: phpClaw – AI agent runtime for PHP with tools, memory and guards (github.com)
要約
phpClawは、PHPでAIエージェントを構築するためのランタイムエンジンです。ツール連携、メモリ管理、セキュリティガードが組み込まれており、様々なLLMプロバイダーに対応しています。フレームワーク依存性が少なく、迅速なエージェント開発を可能にします。
全文翻訳
[画像: Core Tests] [画像: PHP Version] [画像: License: MIT] [画像: Version] [画像: Downloads]
PHPのためのユニバーサルAIエージェントエンジン。
ツール、メモリ、セキュリティ、ReActループが組み込まれています。コアにフレームワーク依存性はゼロ。あらゆるLLMプロバイダーに対応。
ドキュメント · アダプター · phpClawとは · インストール · MCP · セキュリティ
数秒で最初のエージェントを作成
composer require phpclaw/phpclaw
export ANTHROPIC_API_KEY="sk-ant-..."
$agent = PhpClaw\Claw::builder()->build();
echo $agent->send('What can you help me with?')->text;
1つの環境変数、1つのビルダー、1つのsend()。ビルダーはANTHROPIC_API_KEY、次にOPENAI_API_KEY、GROQ_API_KEY、GEMINI_API_KEY、MISTRAL_API_KEY、DEEPSEEK_API_KEY、OLLAMA_HOSTの順にチェックし、最初に見つかったものを使用します。YAML不要、学習するエージェントフレームワーク不要、ベンダーロックインなし。
エージェントにツールを与える
ツールを持たないエージェントは話すことしかできません。アプリケーションが必要とするツールを登録すれば、実作業を開始できます。
use PhpClaw\Claw;
use PhpClaw\Tools\ShellTool;
use PhpClaw\Tools\HttpTool;
use PhpClaw\Tools\FileReadTool;
use PhpClaw\Tools\DatabaseQueryTool;
use PhpClaw\Tools\CodeSearchTool;
$agent = Claw::builder()
->tools([
new ShellTool(allowlist: ['ls', 'df', 'tail']),
new HttpTool(),
new FileReadTool(),
new DatabaseQueryTool($pdo),
new CodeSearchTool(),
])
->build();
> ディスク使用量を確認し、エラーログの最後の20行をtailする
> api.example.comは現在応答していますか?
> 本日の注文数をカウントする読み取り専用SELECTを実行する
> このコードベースのUserServiceが使用されているすべての場所を見つける
エージェントは、どのツールをどの順序で呼び出すかを決定し、回答が得られるかイテレーションキャップに達するまでReActループ(推論、実行、観察、繰り返し)を実行します。これは、ツールがシェル、データベース、HTTP API、またはコードベースに触れるかどうかにかかわらず、同じように機能します。
なぜphpClawなのか
「PHPでのAI」のチュートリアルはすべて同じように終わります:プロバイダーAPIにボルト留めされたHTTPクライアント、手作りのツール呼び出しループ、そしてプロンプトが本番環境で通用することを祈るだけです。汎用LLM SDKはAPIクライアントを提供します。phpClawは、ループ、ガード、メモリ、フレームワーク配線がすでに組み立てられたエージェントランタイムを提供します。
| phpClaw | 汎用LLM SDK | |
|---|---|---|
| ツール呼び出しループ | ReAct、組み込み済み | あなたが書く |
| フレームワークネイティブアダプター | 8つ、各フレームワークに最適化 | なし |
| プロンプトインジェクション防御 | 8つのデフォルトガード + オプトインレート制限 | なし |
| メモリ抽象化 | スワップ可能なドライバー | なし |
| ストリーミング + ツール呼び出しの同時実行 | ハイブリッドモード | 場合による |
| MCPサーバーバンドル | あらゆるアプリをClaude Desktopに公開 | なし |
| チェーンとマルチエージェントグラフ | PipelineとGraph:ループ、人間のポーズと再開、ファンアウト | あなたが構築する |
| コアにフレームワーク依存性なし | ext-curl、ext-json、ext-mbstring、完了 | 依存関係による |
| コアライセンス | MIT、何も制限なし | 場合による |
すべてをやろうとしているわけではありません。 phpClawはRAGフレームワークではありません:埋め込みやベクトルストアはありません。LLMにツール、メモリ、セキュリティコントロールを実際のアプリケーションに対して提供し、1回の呼び出しで十分でない場合にそれらのエージェントをパイプラインやグラフにチェーンするように構築されています。
phpClawが提供するもの
エージェントランタイム。 ハードイテレーションキャップ(デフォルト20のmax_iterations)、プラグ可能なツール、プラグ可能なメモリ、モデルがload_skillツールを通じてオンデマンドでロードするスキルを備えたReActループ。すべて単一の推論サイクル内で実行されます。
パイプラインとグラフ。 Pipelineはステップ(プロンプトテンプレート、エージェント、構造化出力、独自のコール可能オブジェクト)をリトライとフォールバックでチェーンします。Graphはループ、分岐、人間の介入による一時停止、別のプロセスでの再開、インラインで実行されるか、cron、キュー、またはCLIからワーカーによって処理されるファンアウトノードを実行します。パイプラインとグラフを参照してください。
プロバイダーの柔軟性。 環境変数から自動検出される7つのプロバイダー:Anthropic、OpenAI、Groq、Gemini、Mistral、DeepSeek、Ollama。カスタムOpenAI互換エンドポイントもサポートされており、PHPCLAW_PROVIDER=customでオプトインできます。コードの他の場所を変更せずに、->provider()と->model()でプロバイダーを切り替えます。
本番環境のコントロール。 8つのセキュリティガードがデフォルトで有効(プロンプトインジェクション、PII、コードインジェクション、Unicode、ホモグラフ、ロールスイッチ、破壊的SQL、メッセージ長)、さらにレート制限がオプトインガードとして利用可能です。ツール結果はToolOutputGuardによって無条件にサニタイズされ、これはガードレジストリの外側に配置されます。LLM出力のサニタイズはデフォルトでオンになっており、->sanitiseOutput(false)で無効にできます。ShellToolは許可リストのみを使用し、ハードコードされたコマンドブロックリストは上書きできません。HttpToolは解決されたIPアドレスのみを検証し、プレフィックスブロックリストだけでは見逃されるDNSリバインディングギャップを閉じます。FileReadTool/FileWriteToolはワークスペースサンドボックス化されており、機密パスや拡張子を拒否します。
開発者体験。 トークンごとのストリーミング、プロンプトキャッシュ(キャッシュされた入力トークンはAnthropicの割引キャッシュ読み取りレートで課金されます。正確な金額についてはAnthropicの価格設定を参照)、拡張された思考(Claudeの推論チェーンが$response->thinkingで公開されます)。
エコシステム。 8つのフレームワークおよびCMSアダプター、ツールをClaude DesktopおよびClaude Codeに公開するためのMCPサーバー、ホストされた継続的に更新されるプロンプトスキャンガードのためのオプションのクラウドトランスポート。
フレームワーク & CMSアダプター
各アダプターは、phpClawをホストのイディオムに配線します:Laravelの場合はEloquent、Symfonyの場合はDoctrine、WordPressの場合はWP-CLI、Drupalの場合はDrushなど。すべての СMSアダプターは、管理チャットまたはCLIと、その下に同じ3テーブルのメモリスキーマを提供します。
| プラットフォーム | パッケージ | インストール | バージョン |
|---|---|---|---|
| Laravel | phpclaw/phpclaw-laravel | Composer | 10, 11, 12, 13 |
| Symfony | phpclaw/phpclaw-symfony | Composer | 6.4, 7.x, 8.x |
| Drupal | phpclaw/phpclaw-drupal | Composer | 10, 11 |
| Magento / Adobe Commerce | phpclaw/phpclaw-magento | Composer | 2.4.x |
| WordPress + WooCommerce | -- | ZIPアップロード | 6.2+ |
| Joomla | -- | ZIPアップロード | 4, 5, 6 |
| OpenCart | -- | ZIPアップロード | 3.x, 4.x |
| PrestaShop | -- | ZIPアップロード | 8.x, 9.x |
CMSアダプターは、ホストプラットフォームが拡張機能をインストールする方法であるため、ReleasesからZIPダウンロードとして提供されます。
php artisan phpclaw "deploy staging and notify #ops" # Laravel
bin/console phpclaw "check all database connections" # Symfony
drush phpclaw:run "list recently-active users" # Drupal
bin/magento phpclaw:run "check order-queue status" # Magento
wp phpclaw send "summarise today's posts" # WordPress
php cli/joomla.php phpclaw "list recent articles" # Joomla
php cli/phpclaw.php send "check low stock products" # OpenCart
php modules/phpclaw/cli/phpclaw.php send "check stock levels" # PrestaShop
アダプターごとの完全なリファレンス(ツール、RESTルート、CLIコマンド、設定、メモリドライバー)はドキュメントサイトにあります。各アダプター自身のREADMEは短いポインターであり、マニュアルではありません。新しいアダプターを構築しますか?コミュニティアダプターガイドを参照してください。
MCPサーバー
phpclaw/phpclaw-mcpは、既存のToolRegistryをModel Context Protocol経由で公開するため、Claude Desktop、Claude Code、Cursor、またはMCP互換クライアントは、デフォルトのガードが各ツール呼び出しの引数をスキャンした状態で(プロンプトのみのコードインジェクション、PII、および長さガードはチャットメッセージに適用され、ツール引数には適用されません)、ツールを直接呼び出すことができます。ツール自体に変更は不要です。
composer require phpclaw/phpclaw-mcp
完全なクイックスタート、トランスポート、およびセキュリティの詳細:phpclaw.ai/docs/mcp。
すべてのメッセージは、プロバイダーに到達する前にデフォルトのガードチェーンを通過します。ShellToolは、許可リスト(デフォルトls、pwd、df、wc、date、uptime、hostname、whoami)にあるコマンドのみを実行し、正確かつ大文字小文字を区別して一致させます。固定の、上書き不可能な危険なコマンドのブロックリストが、許可リストに関係なく最初にチェックされます。HttpToolはホスト名プレフィックスでリクエストをブロックし、解決されたすべてのIPアドレスを再検証して、ホスト名チェックだけでは見逃されるCGNATおよびDNSリバインディングの試みを捕捉します。FileReadToolおよびFileWriteToolは、設定されたワークスペースルートにサンドボックス化されており、認証情報、キー、およびセキュリティディレクトリ(.git、.ssh、wp-adminなど)を無条件に拒否し、デフォルトでvendor/およびnode_modules/も拒否します。
完全なガードリファレンス、正確なShellToolブロックリスト、およびSSRF/サンドボックス実装の詳細:phpclaw.ai/docs/security。脆弱性を見つけましたか?SECURITY.mdを参照してください。公開された問題を開かないでください。
アーキテクチャ
Message
→ Guards (LLMが見る前にインジェクション/PIIをブロック)
→ Hooks (ライフサイクルイベントの発火、ループ全体で44個)
→ Agent (ReActループ: プロバイダー + ツール + メモリ + スキル)
→ AgentResponse (テキスト、トークン、ツール呼び出し、タイミング)
プロバイダー、ツール、メモリ、ガード、スキルはすべてレジストリを介してプラグ可能であり、各アダプターはそれらを独自の構成または環境から配線します。完全なアーキテクチャ図と設計ルール:phpclaw.ai/docs/architecture。
拡張性
5つの静的レジストリ(GuardRegistry、HookRegistry、MemoryRegistry、ProviderRegistry、SkillRegistry)と、エージェントごとのToolRegistryインスタンスがあります。packages/core/src/<Subsystem>/にクラスをドロップし、対応する属性(#[Tool]、#[Provider]、#[Memory]、#[Skill]、#[Hook]、#[Guard])を付け、composer dump-autoloadを実行すれば、ライブになります。またはコードから登録します:GuardRegistry::register()、HookRegistry::on()、$toolRegistry->register([...])。
すべてのサブシステムに対応する作業コードを含む完全な拡張レシピ:phpclaw.ai/docs。
テスト
for pkg in core cloud mcp; do (cd packages/$pkg && composer test); done
単体テストでは、HTTPクライアント、\Redis、ファイルシステム用のモックとスタブを使用します。コア、クラウド、またはMCPのスイートを実行するために外部ネットワーク呼び出しやAPIキーは必要ありません。アダプターを介したコア変更のテスト方法を含む、完全なテストルールはコントリビューティングガイドに記載されています。
ドキュメント
このREADMEはインストールを案内します。アーキテクチャ、完全なプロバイダー/ツール/ガード/フック/メモリ/スキルリファレンス、アダプターごとのツールとRESTテーブル、コード例、アップグレード、トラブルシューティングなど、その他すべては以下にあります:
要件
- PHP: 8.1、8.2、8.3、8.4
- 拡張機能:
ext-curl、ext-json、ext-mbstring(コアのみ。アダプターはさらに必要になる場合があります。パッケージごとに文書化されています)