HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

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)

8 pointsby akashpatel72043 コメント

要約

phpClawは、PHPでAIエージェントを構築するためのランタイムエンジンです。ツール連携、メモリ管理、セキュリティガードが組み込まれており、様々なLLMプロバイダーに対応しています。フレームワーク依存性が少なく、迅速なエージェント開発を可能にします。

全文翻訳

[画像: phpclaw] [画像: phpclaw]

[画像: Core Tests] [画像: PHP Version] [画像: License: MIT] [画像: Version] [画像: Downloads]

PHPのためのユニバーサルAIエージェントエンジン。

ツール、メモリ、セキュリティ、ReActループが組み込まれています。コアにフレームワーク依存性はゼロ。あらゆるLLMプロバイダーに対応。

ドキュメント · アダプター · phpClawとは · インストール · MCP · セキュリティ

[画像: phpClawデモ:composer require phpclaw/phpclaw-laravel、その後エージェントが実際のシェルツールを呼び出してディスク使用量を確認しログをクリーンアップします]


数秒で最初のエージェントを作成

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テーブルのメモリスキーマを提供します。

プラットフォームパッケージインストールバージョン
Laravelphpclaw/phpclaw-laravelComposer10, 11, 12, 13
Symfonyphpclaw/phpclaw-symfonyComposer6.4, 7.x, 8.x
Drupalphpclaw/phpclaw-drupalComposer10, 11
Magento / Adobe Commercephpclaw/phpclaw-magentoComposer2.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テーブル、コード例、アップグレード、トラブルシューティングなど、その他すべては以下にあります:

phpclaw.ai/docs

要件

  • PHP: 8.1、8.2、8.3、8.4
  • 拡張機能: ext-curl、ext-json、ext-mbstring(コアのみ。アダプターはさらに必要になる場合があります。パッケージごとに文書化されています)

ライセンス

MIT、PHPコミュニティのために愛を込めて構築されました。phpClawプロジェクトの一部です。