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 | 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 или получайте их при
запуске команды:
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Политики
Инструменты агента — это инструменты MCP-сервера Echolot, с той же защитой: секретные значения никогда не доходят до модели, и всё, что видит модель, проходит через то же вычищение. Что можно каждому виду действий, определяет политика:
--policy | Что выполняется |
|---|---|
standard (по умолчанию) | Чтение и безопасные отправки (например, GET). Прочие отправки, новые хосты и изменения рабочего пространства отклоняются. |
readonly | Только чтение. |
permissive | Отправки и изменения рабочего пространства. Удаление, неизвестные рабочему пространству хосты и отправки в защищённые окружения отклоняются. |
Когда человека нет, «спросить» означает «отказать».
Файл политики смягчает или ужесточает базовую политику для каждого вида действий. Он принимает те же правила, что и
раздел [agents] рабочего пространства, с обрамляющим [agents] или без него:
# ci-policy.toml: разрешить агенту отправлять что угодно на хосты рабочего пространства, но не менять само рабочее пространство
[rules]
unsafe-send = "allow"
workspace-write = "refuse"
destructive = "refuse"| Действие | Что охватывает |
|---|---|
read | Чтение запросов, ответов, окружений и остального. |
safe-send | Отправку запросов, которые ничего не меняют, например GET. |
unsafe-send | Отправку запросов, которые могут что-то изменить, например POST или 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. |
--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.
Коды выхода
| Код | Когда |
|---|---|
0 | Модель выполнила задачу. |
1 | Прогон не удался, модель отказалась либо достигнут лимит шагов, бюджет токенов или лимит вывода. |
64 | Неверный параметр, неизвестный провайдер или политика, отсутствующий --model, нет API-ключа или неизвестное окружение. |
Данные вашего рабочего пространства уходят провайдеру модели, которого вы выберете. Если они должны остаться на
вашем Mac, используйте openai-compatible с сервером на нём.