Echolot
命令行与 CI

echolot agent

在没有 App 的情况下让内置智能体执行任务,用策略文件代替批准,适用于脚本和 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-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。

本页内容