Echolot
コマンドラインとCI

echolot agent

アプリなしで内蔵のエージェントにタスクを実行させます。承認の代わりにポリシーファイルを使うので、スクリプトやCIで使えます。

echolot agent は、内蔵のエージェント(アシスタントと同じもの)にタスクを渡し、終わるまでワークスペースのツールで作業させます。 承認する人がいないため、何をしてよいかはポリシーで決まります。CI(「すべてのリクエストをチェックして、失敗したものを報告して」)やスクリプトで使えます。

echolot agent [<options>] <task>

<task> は、エージェントにしてほしいことを普通の言葉で書いたものです。

タスクを実行する

export ANTHROPIC_API_KEY=…
echolot agent "Check every request of the Catalog folder and report what fails" -w Alpenglow.echolot

モデルの回答は、書かれるそばから標準出力にストリーミングされます。最後に概要が標準エラーに出力されます。

Agent finished: 9 tool calls, 18234 in, 1210 out.

-v を指定すると、すべてのツール呼び出しとその結果も標準エラーに出力されます(→ send_request …、← send_request ok in 82 ms)。--json を指定すると、代わりにセッション全体をJSONで出力します: すべてのメッセージ、ツール呼び出しと結果、トークンの使用量、終了の仕方。

プロバイダとモデル

--providerキーの取得元モデル
anthropic(デフォルト)ANTHROPIC_API_KEY--model で指定しない限り claude-opus-5-5。
openaiOPENAI_API_KEY--model が必須です。
geminiGEMINI_API_KEY--model が必須です。
openai-compatible設定されていれば OPENAI_API_KEY。なくても構いません--model が必須です。Ollama、LM Studio、OpenRouterなど、OpenAI APIを備えたサーバ用です。--base-url でサーバを指定します。デフォルトは、このMac上のOllama(http://127.0.0.1:11434/v1)です。

--key-env で、キーを入れた別の環境変数を指定できます。キーはCIのシークレットに保存するか、コマンド実行時に取得してください。

op run --env-file agent-keys.env -- echolot agent "Save every product as CSV" \
  -w Alpenglow.echolot --provider openai --model gpt-5.5 --policy-file ci-policy.toml --json

自分のMacで無料で実行する例です。

echolot agent "List the requests that have no checks" -w Alpenglow.echolot \
  --provider openai-compatible --model qwen3:4b

ポリシー

エージェントのツールはEcholotのMCPサーバのツールで、安全性も同じです:シークレットの値がモデルに渡ることはなく、モデルに見えるものはすべて同じ伏せ字処理を通ります。 各種類の操作で何ができるかは、ポリシーで決まります。

--policy実行される操作
standard(デフォルト)読み取りと安全な送信(GET など)。その他の送信、新しいホスト、ワークスペースへの変更は拒否されます。
readonly読み取りのみ。
permissive送信とワークスペースへの変更。削除、ワークスペースが知らないホスト、保護された環境への送信は拒否されます。

人がいない場合、「確認」は「拒否」を意味します。

ポリシーファイル は、操作の種類ごとにベースのポリシーを緩めたり厳しくしたりします。ワークスペースの [agents] セクションと同じルールを、[agents] で囲んでも囲まなくても書けます。

# ci-policy.toml: let the agent send anything to the workspace's hosts, but never change the workspace
[rules]
unsafe-send = "allow"
workspace-write = "refuse"
destructive = "refuse"
操作対象
readリクエスト、レスポンス、環境などの読み取り。
safe-sendGET など、何も変更しないリクエストの送信。
unsafe-sendPOST や DELETE など、何かを変更する可能性のあるリクエストの送信。
protected-send保護された環境での送信。
new-hostワークスペースが知らないホストへの送信。
workspace-writeリクエスト、フォルダ、環境、その他のファイルの作成と変更。
destructive削除。

それぞれに allow、ask、refuse を指定できます。protected-send と new-host は厳しくできますが、完全に許可することはできません。

ポリシーファイルはあなた自身のものとして扱われるため、ポリシーを緩められます。ワークスペース自身の [agents] ルールは、--trust-workspace-policy を指定しない限り、厳しくする方向にしか働きません。

制限

--max-steps は、モデルのターン数がその回数に達したところで実行を止めます(デフォルトは30)。--token-budget は、そのトークン数を使い切ったところで止めます。 制限に達して止まった実行は、終了コード1で終了します。

オプション

オプション意味
-w、--workspace <folder>ワークスペースのフォルダ。デフォルトはカレントフォルダ。
--env <env>環境を指定しない呼び出しが使う環境:ファイル名から .toml を除いたもの。
--provider <provider>anthropic、openai、gemini、openai-compatible。デフォルトは anthropic。
--model <model>モデル。anthropic 以外のプロバイダでは必須です。
--base-url <url>プロバイダのURL。openai-compatible サーバ用。デフォルトはOllamaのURL。
--key-env <name>APIキーを入れた環境変数。プロバイダの通常のものと異なる場合に指定します。
--policy <policy>ベースのポリシー:standard、readonly、permissive。デフォルトは standard。
--policy-file <file>操作ごとのルール(allow、ask、refuse)を書いたTOMLファイル。ワークスペースの [agents] セクションと同じ形式です。
--trust-workspace-policyワークスペースの [agents] ルールが、ポリシーを厳しくするだけでなく緩めることも許可します。
--toolsets <list>提供するツールグループ(カンマ区切り)、または all:requests(常時)、flows、workspace、environments、specs、mocks、mcp-servers、history、flow-editing。デフォルトは all。
--max-steps <n>実行が止まるまでのモデルのターン数。デフォルトは30。
--token-budget <n>実行が止まるまでに使えるトークン数。
--json書き起こしの代わりに、セッション全体をJSONで出力します。
-v、--verboseすべてのツール呼び出しとその結果を標準エラーに出力します。

ツールセットについては、echolot mcpのページで説明しています。

終了コード

コード条件
0モデルがタスクを完了しました。
1実行が失敗した、モデルが拒否した、またはステップ数の上限、トークンの予算、出力の上限に達しました。
64オプションが正しくない、不明なプロバイダまたはポリシー、--model がない、APIキーがない、または不明な環境。

ワークスペースのデータは、選んだモデルプロバイダに送信されます。データをMacの外に出したくない場合は、自分のMac上のサーバで openai-compatible を使ってください。

このページの内容