# echolot agent (/ru/docs/cli/agent)

`echolot agent` даёт задачу встроенному агенту — тому же, что и [Ассистент](/docs/ai/assistant), — и позволяет ему
работать с инструментами рабочего пространства, пока он не закончит. Одобрять некому, поэтому всё, что ему можно,
решает политика. Используйте его в CI («проверь каждый запрос и сообщи, что не проходит») или в скриптах.

```sh
echolot agent [<options>] <task>
```

`<task>` — то, что агент должен сделать, обычными словами.

## Запуск задачи [#run-a-task]

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

Ответ модели идёт в стандартный вывод по мере написания. В конце в стандартный поток ошибок выводится сводка:

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

`-v` дополнительно печатает в стандартный поток ошибок каждый вызов инструмента и его результат (`→ send_request …`,
`← send_request ok in 82 ms`). `--json` вместо этого печатает весь сеанс как JSON: каждое сообщение, вызов инструмента и
результат, расход токенов и чем всё закончилось.

## Провайдеры и модели [#providers-and-models]

| `--provider` | Ключ из | Модель |
| --- | --- | --- |
| `anthropic` (по умолчанию) | `ANTHROPIC_API_KEY` | `claude-opus-5-5`, если `--model` не говорит иного. |
| `openai` | `OPENAI_API_KEY` | `--model` обязателен. |
| `gemini` | `GEMINI_API_KEY` | `--model` обязателен. |
| `openai-compatible` | `OPENAI_API_KEY`, если задан; не нужен | `--model` обязателен. Для Ollama, LM Studio, OpenRouter и других серверов с API OpenAI. `--base-url` — это сервер; по умолчанию Ollama на этом Mac (`http://127.0.0.1:11434/v1`). |

`--key-env` называет другую переменную окружения для ключа. Храните ключи в секретах вашего CI или получайте их при
запуске команды:

```sh
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:

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

## Политики [#policies]

Инструменты агента — это инструменты MCP-сервера Echolot, с той же защитой: секретные значения никогда не доходят до
модели, и всё, что видит модель, проходит через то же вычищение. Что можно каждому виду действий, определяет политика:

| `--policy` | Что выполняется |
| --- | --- |
| `standard` (по умолчанию) | Чтение и безопасные отправки (например, `GET`). Прочие отправки, новые хосты и изменения рабочего пространства отклоняются. |
| `readonly` | Только чтение. |
| `permissive` | Отправки и изменения рабочего пространства. Удаление, неизвестные рабочему пространству хосты и отправки в защищённые окружения отклоняются. |

Когда человека нет, «спросить» означает «отказать».

**Файл политики** смягчает или ужесточает базовую политику для каждого вида действий. Он принимает те же правила, что и
раздел `[agents]` рабочего пространства, с обрамляющим `[agents]` или без него:

```toml
# ci-policy.toml: разрешить агенту отправлять что угодно на хосты рабочего пространства, но не менять само рабочее пространство
[rules]
unsafe-send = "allow"
workspace-write = "refuse"
destructive = "refuse"
```

| Действие | Что охватывает |
| --- | --- |
| `read` | Чтение запросов, ответов, окружений и остального. |
| `safe-send` | Отправку запросов, которые ничего не меняют, например `GET`. |
| `unsafe-send` | Отправку запросов, которые могут что-то изменить, например `POST` или `DELETE`. |
| `protected-send` | Отправку в [защищённое окружение](/docs/workspaces/protected-environments). |
| `new-host` | Отправку на хост, неизвестный рабочему пространству. |
| `workspace-write` | Создание и изменение запросов, папок, окружений и других файлов. |
| `destructive` | Удаление. |

Каждое принимает `allow`, `ask` или `refuse`. `protected-send` и `new-host` можно ужесточить, но нельзя разрешить
безоговорочно.

Файл политики считается вашим, поэтому он может смягчать политику. Собственные правила `[agents]` рабочего
пространства только ужесточают её, если вы не передали `--trust-workspace-policy`.

## Лимиты [#limits]

`--max-steps` останавливает прогон после стольких ходов модели (по умолчанию 30). `--token-budget` останавливает его,
когда израсходовано столько токенов. Прогон, остановленный лимитом, завершается с кодом 1.

## Параметры [#options]

| Параметр | Значение |
| --- | --- |
| `-w`, `--workspace <folder>` | Папка рабочего пространства. По умолчанию — текущая папка. |
| `--env <env>` | Окружение, которое используют вызовы, не назвавшие своего: имя его файла без `.toml`. |
| `--provider <provider>` | `anthropic`, `openai`, `gemini` или `openai-compatible`. По умолчанию `anthropic`. |
| `--model <model>` | Модель; обязательна для каждого провайдера, кроме `anthropic`. |
| `--base-url <url>` | URL провайдера, для серверов `openai-compatible`. По умолчанию — Ollama. |
| `--key-env <name>` | Переменная окружения с API-ключом, если это не обычная переменная провайдера. |
| `--policy <policy>` | Базовая политика: `standard`, `readonly` или `permissive`. По умолчанию `standard`. |
| `--policy-file <file>` | Файл TOML с правилами для каждого действия (`allow`, `ask`, `refuse`), как раздел `[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`](/docs/cli/mcp#echolot-mcp-serve).

## Коды выхода [#exit-codes]

| Код | Когда |
| --- | --- |
| `0` | Модель выполнила задачу. |
| `1` | Прогон не удался, модель отказалась либо достигнут лимит шагов, бюджет токенов или лимит вывода. |
| `64` | Неверный параметр, неизвестный провайдер или политика, отсутствующий `--model`, нет API-ключа или неизвестное окружение. |

<Callout>
  Данные вашего рабочего пространства уходят провайдеру модели, которого вы выберете. Если они должны остаться на
  вашем Mac, используйте `openai-compatible` с сервером на нём.
</Callout>
