Skip to content

エージェント実行環境

エージェント実行環境は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に接続してタスクを 同期してください」)、エージェントは自然な開発ワークフローに従います:

  1. 探索run_commandを使用してAPIエンドポイントをテストし、認証を確認し、 レスポンスの形を理解する
  2. スキャフォールディングwrite_fileを使用してインテグレーションコードを書き、 その横にテストファイルを作成する
  3. テストrun_commandでテストを実行し、失敗を確認し、反復する
  4. 依存関係のインストールrun_commandを使用して必要なパッケージを追加する (npm、pip、deno add)
  5. 反復 — テストが合格してインテグレーションがエンドツーエンドで動作するまで write/run/fixループ
  6. 永続化 — スキルとして保存(メタデータ付きSKILL.mdを書く)またはcronジョブに組み込む
  7. 承認 — 自己作成したスキルはPENDING_APPROVAL状態に入り、レビューして承認する

言語とランタイムサポート

実行環境はホストシステム(WASMではない)で実行され、複数のランタイムへのアクセスがあります:

ランタイム利用方法ユースケース
Deno直接実行TypeScript/JavaScript(ファーストクラス)
Node.jsrun_command nodenpmエコシステムへのアクセス
Pythonrun_command pythonデータサイエンス、ML、スクリプト
Shellrun_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操作に承認を要求する
  • デフォルトの危険コマンドリストを超えるカスタムコマンド拒否リスト