エージェント実行環境
エージェント実行環境はTriggerfishの自己開発機能です — エージェントがコードを書き、実行し、出力と エラーを観察し、問題を修正し、何かが動作するまで反復できるファーストクラスのコードワークスペースです。 これにより、エージェントはインテグレーションを構築し、アイデアをテストし、独自の新しいツールを 作成できます。
プラグインサンドボックスとの違い
実行環境はプラグインサンドボックスとは根本的に異なります。この区別を理解することが重要です:
- プラグインサンドボックスは信頼されていないサードパーティコードからシステムを保護します
- Exec環境はエージェントが自身のコードを書き、実行し、デバッグすることを支援します
プラグインサンドボックスは防御的です。Exec環境は生産的です。それらは反対の目的を持ち、 異なるセキュリティプロファイルを持ちます。
| 側面 | プラグインサンドボックス | エージェントExec環境 |
|---|---|---|
| 目的 | 信頼されていないコードからシステムを保護 | エージェントが物事を構築するのを支援 |
| ファイルシステム | なし(完全サンドボックス化) | ワークスペースディレクトリのみ |
| ネットワーク | 宣言されたエンドポイントのみ | ポリシーによる許可/拒否リスト |
| パッケージインストール | 不可 | 可能(npm、pip、deno add) |
| 実行時間 | 厳格なタイムアウト | 寛大なタイムアウト(設定可能) |
| 反復 | 単一実行 | 無制限のwrite/run/fixループ |
| 永続性 | 一時的 | ワークスペースはセッションをまたいで永続化 |
フィードバックループ
コアの品質差別化要因です。これはClaude Codeのようなツールを効果的にするのと同じパターンです — エージェントが人間の開発者が見るものをそのまま見る、緊密なwrite/run/fixサイクルです。
ステップ1:書く
エージェントはwrite_fileを使用してワークスペースにファイルを作成または変更します。 ワークスペースは現在のエージェントにスコープされた実際のファイルシステムディレクトリです。
ステップ2:実行する
エージェントはrun_command経由でコードを実行し、完全なstdout、stderr、終了コードを受け取ります。 出力は非表示にされたり要約されたりしません。エージェントはターミナルで見るものをそのまま見ます。
ステップ3:観察する
エージェントは全出力を読みます。エラーが発生した場合、完全なスタックトレース、エラーメッセージ、 診断出力が見えます。テストが失敗した場合、どのテストが失敗したか、なぜ失敗したかが分かります。
ステップ4:修正する
エージェントは観察した内容に基づいてコードを編集し、write_fileまたはedit_fileを使用して 特定のファイルを更新します。
ステップ5:繰り返す
エージェントは再度実行します。このループはコードが動作するまで続きます — テストに合格し、 正しい出力を生成し、目標を達成するまで。
ステップ6:永続化する
動作したら、エージェントはその作業をスキルとして保存(SKILL.md + サポートファイル)、 インテグレーションとして登録、cronジョブに組み込む、またはツールとして利用可能にできます。
永続化ステップは実行環境を単なるスクラッチパッド以上のものにします。動作するコードは
ただ消えません — エージェントはそれをスケジュールで実行し、トリガーに反応し、または需要に 応じて呼び出される再利用可能なスキルとしてパッケージ化できます。 :::
利用可能なツール
| ツール | 説明 | 出力 |
|---|---|---|
write_file | ワークスペースのファイルを書き込み/上書き | ファイルパス、書き込みバイト数 |
read_file | ワークスペースからファイルの内容を読み取る | 文字列としてのファイル内容 |
edit_file | ファイルに対象を絞った編集を適用する | 更新されたファイル内容 |
run_command | ワークスペースでシェルコマンドを実行する | stdout、stderr、終了コード、実行時間 |
list_directory | ワークスペースのファイルをリスト表示(再帰的オプション付き) | サイズ付きファイルリスト |
search_files | ファイル内容を検索する(grep的) | file:line参照付きマッチする行 |
ワークスペース構造
各エージェントはセッションをまたいで永続化する分離されたワークスペースディレクトリを持ちます:
~/.triggerfish/workspace/
<agent-id>/ # エージェントごとのワークスペース
scratch/ # 一時的な作業ファイル
integrations/ # 開発中のインテグレーションコード
notion-sync/
index.ts
index_test.ts
package.json
salesforce-report/
main.py
test_main.py
skills/ # 作成中のスキル
morning-briefing/
SKILL.md
briefing.ts
.exec_history # 監査用実行ログ
background/
<session-id>/ # バックグラウンドタスクの一時ワークスペースワークスペースはエージェント間で分離されています。一方のエージェントは他方のエージェントの ワークスペースにアクセスできません。バックグラウンドタスク(cronジョブ、トリガー)はセッションに スコープされた独自の一時ワークスペースを持ちます。
インテグレーション開発フロー
エージェントに新しいインテグレーションを構築するように求めた場合(例えば「Notionに接続してタスクを 同期してください」)、エージェントは自然な開発ワークフローに従います:
- 探索 —
run_commandを使用してAPIエンドポイントをテストし、認証を確認し、 レスポンスの形を理解する - スキャフォールディング —
write_fileを使用してインテグレーションコードを書き、 その横にテストファイルを作成する - テスト —
run_commandでテストを実行し、失敗を確認し、反復する - 依存関係のインストール —
run_commandを使用して必要なパッケージを追加する (npm、pip、deno add) - 反復 — テストが合格してインテグレーションがエンドツーエンドで動作するまで write/run/fixループ
- 永続化 — スキルとして保存(メタデータ付きSKILL.mdを書く)またはcronジョブに組み込む
- 承認 — 自己作成したスキルは
PENDING_APPROVAL状態に入り、レビューして承認する
言語とランタイムサポート
実行環境はホストシステム(WASMではない)で実行され、複数のランタイムへのアクセスがあります:
| ランタイム | 利用方法 | ユースケース |
|---|---|---|
| Deno | 直接実行 | TypeScript/JavaScript(ファーストクラス) |
| Node.js | run_command node | npmエコシステムへのアクセス |
| Python | run_command python | データサイエンス、ML、スクリプト |
| Shell | run_command sh / run_command bash | システム自動化、グルースクリプト |
エージェントは利用可能なランタイムを検出し、タスクに最適なものを選択できます。 各ランタイムの標準ツールチェーンを介してパッケージのインストールが動作します。
セキュリティ境界
実行環境はプラグインサンドボックスより許可的ですが、すべてのステップでポリシーが制御します。
ポリシーインテグレーション
- すべての
run_command呼び出しはコマンドをコンテキストとしてPRE_TOOL_CALLフックを発火させる - コマンドの許可リスト/拒否リストが実行前にチェックされる
- 出力はキャプチャされ
POST_TOOL_RESPONSEフックを通過する - 実行中にアクセスされるネットワークエンドポイントはリネージで追跡される
- コードが分類されたデータにアクセスする場合(例:CRM APIからの読み取り)、セッションTaintがエスカレートする
- 実行履歴は監査のため
.exec_historyにログ記録される
ハード境界
これらの境界は設定に関わらず決して越えられません:
- ワークスペースディレクトリ外への書き込みは不可
- 拒否リスト上のコマンドの実行は不可(
rm -rf /、sudoなど) - 他のエージェントのワークスペースへのアクセスは不可
- すべてのネットワーク呼び出しはポリシーフックにより管理される
- すべての出力は分類され、セッションTaintに寄与する
- リソース制限が強制される:ディスク容量、実行ごとのCPU時間、メモリ
SECURITY エージェントが実行するすべてのコマンドはPRE_TOOL_CALLフックを通過します。
ポリシーエンジンは実行前にコマンドの許可リスト/拒否リストに対してチェックします。危険なコマンドは 確定的にブロックされます — LLMはこの決定に影響を与えられません。 :::
エンタープライズコントロール
エンタープライズの管理者はExec環境に対して追加のコントロールを持ちます:
- 特定のエージェントまたはロールに対してexecを完全に無効にする
- 利用可能なランタイムを制限する(例:Denoのみ許可、PythonとShellをブロック)
- エージェントごとのリソース制限を設定する(ディスククォータ、CPU時間、メモリ上限)
- 分類しきい値を超えるすべてのexec操作に承認を要求する
- デフォルトの危険コマンドリストを超えるカスタムコマンド拒否リスト
