Echolot
AI

外部智能体

让 Claude Code、Claude Desktop、Cursor、VS Code、Codex 等 MCP 客户端经由 Echolot 的 MCP 服务器使用工作区,由你来批准。

Echolot 自带 MCP 服务器。通过它,Claude Code、Claude Desktop、Cursor、VS Code 和 Codex 等 AI 客户端可以列出你存储的请求、发送请求、 读取响应、添加检查并运行文件夹,用的正是 App 自己使用的工具。工作区在 Echolot 中打开时,它们的调用在 App 内运行:任何可能更改数据的操作都由你批准, 每次调用都看得到,机密值也永远不会到达智能体。

工作原理

客户端用工作区的路径启动 echolot mcp serve。接下来会怎样,取决于 App:

  • 工作区已在 Echolot 中打开,且智能体已开启。 该命令连接到 App,客户端的调用在工作区的窗口中运行。需要批准的调用会在表单中询问你, 每次调用都显示在页面标题栏的智能体下。
  • 其他情况(App 已关闭、工作区未打开,或智能体已关闭),该命令自行提供工作区。此时没有人可以询问,所以本该询问的操作会被拒绝。 参见独立运行。

每个打开的窗口只在 127.0.0.1 上提供其工作区,端口由系统选择,并且只面向出示本次会话随机令牌的调用方。命令通过 Echolot 的 Application Support 文件夹中的一个私有文件找到该窗口。不会有任何内容监听你的网络。

开启智能体

打开设置 › 智能体,开启允许智能体使用打开的工作区。该开关在你开启之前是关闭的。工作区窗口页面标题栏中的智能体弹出窗口里也有同一个开关。

在 Echolot 中打开工作区。窗口提供工作区期间,页面标题栏中智能体旁的圆点会变绿;有客户端连接时,它会显示连接数。

按下文连接客户端。每个工作区和客户端只需做一次。

工作区也可以为自己关闭智能体:工作区设置 › 智能体 › 智能体可以使用此工作区。关闭后,客户端无论经由 App 还是独立运行,都无法从该工作区得到任何内容。

连接客户端

点按页面标题栏中的智能体。在连接客户端下,每个客户端都有一个按钮:

页面标题栏中的“智能体”弹出窗口,包含允许智能体访问的开关、一个已连接的客户端、最近的调用以及“连接客户端”按钮
客户端按钮作用
Claude Desktop添加到 Claude为此工作区构建一个 Claude Desktop 扩展,并在 Claude Desktop 中打开,由它请你确认。仅限直接下载版。
Claude Code拷贝命令拷贝一条 claude mcp add 命令。将它粘贴到“终端”中。
Cursor添加到 Cursor打开 Cursor 安装 MCP 服务器的提示。
VS Code添加到 VS Code打开 VS Code 安装 MCP 服务器的提示。
Codex拷贝 config.toml 条目拷贝一个条目,用来粘贴到 Codex 的 config.toml 中。
其他拷贝 JSON拷贝一个 mcpServers 条目,这是大多数 MCP 客户端读取的格式。

它们下方是命令本身和拷贝按钮,适用于任何要求提供命令及其参数的客户端。

服务器在客户端中的名称是 echolot- 加上工作区的名称。以 Alpenglow 工作区为例,Claude Code 的命令如下(echolot 的路径是 App 内的工具):

claude mcp add --scope user echolot-alpenglow -- /Applications/Echolot.app/Contents/Helpers/echolot mcp serve ~/Alpenglow.echolot

Codex 的条目如下:

[mcp_servers.echolot-alpenglow]
command = "/Applications/Echolot.app/Contents/Helpers/echolot"
args = ["mcp", "serve", "/Users/you/Alpenglow.echolot"]

在“终端”中,echolot mcp setup <client> -w <workspace> 会为 claude-code、claude-desktop、cursor、vscode 和 codex 打印相同的设置。 参见 echolot mcp。

Mac App Store 版

App Store 版的 App 内没有命令行工具,也没有 Claude Desktop 扩展。请单独安装命令行工具(设置 › 智能体和“智能体”弹出窗口中的获取命令行工具会带你前往下载); 由客户端运行它,工作区在 Echolot 中打开时,它们的调用仍然在 App 内运行。这些按钮拷贝命令或代码片段,或打开客户端自己的安装提示;它们从不写入其他 App 的文件夹。

比较两个版本

一键添加到 Claude Desktop

仅限直接下载版

Claude Desktop 扩展(.mcpb)内含命令行工具,因此只在直接下载版中提供。

比较两个版本

设置 › 智能体 › Claude Desktop 列出你最近使用的工作区。点按某个工作区旁的添加到 Claude,会开启智能体,为该工作区构建扩展,并交给 Claude Desktop, 由它请你确认。Claude Desktop 收到后,该行会显示已添加;以后要更新扩展,请按住 Control 键点按已添加并选取再次添加。

如果未安装 Claude Desktop,该部分会说明,并附上获取 Claude Desktop链接,而添加到 Claude会改为在访达中显示扩展。

工具集

智能体能看到的每个工具都会占用它的上下文空间,所以 Echolot 把工具分成几组提供。在设置 › 智能体 › 供智能体使用的工具中选取。请求始终开启;请求和流程 在你更改之前默认开启。这些复选框决定智能体能看到哪些工具,而不是它们无需询问就能做什么:每个工具在更改数据或访问新主机之前仍会询问。对于内置助手, 设置 › 助手 › 询问时机决定它询问哪些操作。

工具集智能体可以用它做什么
请求列出、读取、创建和发送请求;响应、历史记录、GraphQL、正在运行的模拟服务器
流程运行提供给智能体的流程,回答它们提出的问题
工作区创建、重新命名、移动、复制和删除文件夹与请求;文件夹的认证;工作区变量;将收集到的数据存储为文件
环境创建、更改和删除环境
规范读取、编写 OpenAPI 规范并对其做 Lint;将文件夹链接到规范并应用更改
模拟服务器创建、更改和删除模拟服务器及其路由,使用示例数据;根据路由创建请求;将响应存储为示例
MCP 服务器添加、更改、检查和删除 MCP 服务器
历史记录打开、比较和删除过去的交换记录
流程编辑读取、绘制和删除流程;在你批准后试运行一次

使用默认工具集时,智能体得到的工具可以列出、读取、创建、更新和发送请求,运行带检查的文件夹,逐段读取响应,查看历史记录,检查 GraphQL 查询, 将请求拷贝为 cURL 或代码,导入,对规范做 Lint,启动和停止模拟服务器,以及运行提供给智能体的流程。它还会得到两个提示词:debug_request 和 write_tests。

更改工具集后,打开的窗口会用新的工具集重新开始提供服务;请重新连接客户端以获取它。

任何工具集都从不提供以下内容:更改智能体规则、代理、证书、工作区的认证、除认证之外的文件夹设置、脚本(请求脚本、文件夹脚本和模拟脚本), 以及使用机密获取或签名的认证(OAuth 2.0、AWS、JWT 等)。这些只属于你自己。

智能体可以为请求和文件夹设置 Bearer、Basic 或 API 密钥认证,并让请求保留响应中的值(比如登录返回的令牌,供之后的请求使用): create_request 和 update_request 接受 auth 和 captures,而 save_folder_auth 设置文件夹中的请求继承什么。凭据必须是 {{variables}}; 智能体自己写入密码或令牌会被拒绝,因此它们绝不会落入文件。名称看起来像凭据(token、password、key…)的捕获值会被保存为机密。

智能体通过各自的工具启动提供给它们的流程(在“流程”列表中以闪光图标标记),每次都要在你批准该流程当前的样子之后;参见运行流程。 开启流程编辑后,try_flow 会将任何其他流程运行一次,包括智能体正在绘制的那个:你会看到它发送、存储和运行的内容,并且无论规则如何,每次都要批准这次运行, 而在本次会话中允许只涵盖该流程的这个版本。

查看智能体的操作

窗口提供工作区期间,页面标题栏中的智能体弹出窗口会显示:

  • 每个调用过的客户端,包括其调用次数和失败次数以及上次出现的时间。关闭它的开关,今后会拒绝该客户端的调用,以及它正在等待的所有批准。
  • 最近的调用:最新的调用,包含工具、客户端、时间、持续时间和任何错误。

在客户端调用之前,它显示尚无智能体使用过此工作区。 智能体关闭时,它会说明客户端仍可独立工作,只是没有你的批准。

智能体的每次发送也会以客户端的名称出现在工作区的历史记录中。

批准

当客户端想要执行规则要求询问的操作时,工作区的窗口中会出现一个表单:客户端想要发送可能更改数据的请求,并显示请求发出时的样子,机密已被遮盖。 选取允许一次、在本次会话中允许(在窗口关闭之前,再次发出同样的调用无需询问)或拒绝。五分钟内无人回答的问题会被拒绝。该表单与助手使用的是同一个。

没有工作区规则时,询问的情况如下:

操作默认
读取请求和环境允许
安全的发送(GET、GraphQL 查询、MCP 读取)允许
其他发送询问
发送到受保护的环境询问,始终如此
发送到新主机询问,始终如此
对工作区的更改询问
删除询问

新主机是指窗口开始提供服务时,工作区中没有任何请求或环境使用过的主机。智能体读取的数据可能经由它外泄,所以总会询问, 发送到受保护的环境也是如此。

工作区规则

工作区设置 › 智能体(在边栏底部的工作区菜单中选取工作区设置…)为此工作区设定规则。规则存储在 workspace.toml 中, 因此会随它一起通过 Git 传递,并且同时适用于外部智能体和助手。

  • 智能体可以使用此工作区:关闭后,智能体无法从该工作区得到任何内容。
  • 智能体可以做什么:针对上表中每个操作的规则:默认(并注明默认值是什么)、允许、询问或拒绝。发送到受保护的环境和新主机只能是询问或拒绝。
  • 主机和限制:
    • 允许的主机:智能体可以发送到的主机,用逗号或空格分隔。
    • 每个会话发送次数:智能体在一个会话中最多可以发送的次数。留空表示没有限制。
    • 每分钟发送次数:智能体在一分钟内最多可以发送的次数。留空表示没有限制。

更严格的规则始终生效。随文件而来的较宽松规则(来自队友,经由 Git)只有在你信任之后才会在你的 Mac 上生效:在此之前,“智能体”弹出窗口会说明工作区的规则会允许哪些操作无需询问, 而智能体仍然会询问。选取信任这些规则即可接受。你自己在“工作区设置”中设定的规则是受信任的。

智能体永远得不到的内容

  • 机密值。 Echolot 会替换智能体收到的所有内容中的每个机密值,包括错误,无论是纯文本、JSON、URL 编码还是 Base64 形式。智能体只能按名称看到机密变量。
  • 历史记录中的凭据。 过去的交换记录送达智能体时,凭据标头已被遮盖,也不含传输捕获。
  • 你的机密不会发给别人的主机。 智能体的发送如果重定向到工作区未使用的主机,会在途中丢弃其凭据标头。

独立运行

当 App 没有打开该工作区,或使用 --headless 时,echolot mcp serve 自行提供工作区,由策略单独决定:

--policy运行拒绝
standard(默认)读取和安全的发送其他发送、更改、删除、受保护的环境、新主机
readonly读取所有发送、更改和删除
permissive读取、所有发送、更改删除、受保护的环境、新主机

机密从这台 Mac 的钥匙串和 ECHOLOT_SECRET_… 变量中解析,永远不会到达智能体。--toolsets 选取工具集(all 表示全部),--env 指定调用未指明环境时使用的环境, --http 0 则在 127.0.0.1 上提供带令牌的 Streamable HTTP,而不是标准输入输出。工作区自己的规则会收紧策略;--trust-workspace-policy 让它们也可以放宽策略。 参见 echolot mcp。

echolot mcp serve ~/Alpenglow.echolot --policy readonly --toolsets requests,history

疑难解答

  • 客户端已连接,但没有任何询问,更改被拒绝。 命令在独立运行:请在 Echolot 中打开工作区并开启设置 › 智能体 › 允许智能体使用打开的工作区,然后重新连接客户端。
  • 客户端完全得不到工具。 工作区设置 › 智能体中的智能体可以使用此工作区已关闭,或者你在“智能体”弹出窗口中关闭了该客户端的开关。
  • 智能体需要的工具缺失。 在设置 › 智能体 › 供智能体使用的工具中开启它所在的工具集,然后重新连接客户端。
  • “添加到 Claude”呈灰色。 此构建内没有命令行工具;echolot.dev 上的发行版有。

本页内容