Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

仅计划模式 vs 远程构建

espctl 有两种运行方式。同一个程序、同一组功能 —— 只是它们实际能做 什么不同。

远程构建是默认行为。 当你运行 espctl build 时,它把你的项目 发给构建服务器并编译。只有你明确要求时,才会进入仅计划模式。

远程构建模式(默认)

这是你大部分时间用的模式。

espctl 把你的项目发给构建服务器,构建服务器(在一个安全的沙箱里) 编译它,编好的固件回到你这里。

你能得到:

  • “构建“真的会构建。
  • 你能看实时构建日志。
  • 编好的固件文件出现,你可以下载或者烧录。
  • 你可以在构建服务器上打开一个交互式串口监视器。

espctl 把构建发到哪里? 按以下顺序检查:

  1. --remote <url> 参数,如果你传了的话。
  2. espctl login 保存的服务器地址(在 ~/.config/espctl/credentials.json 里)。
  3. https://esphome.cloud(内置默认值)。

所以如果你跑过一次 espctl login --token <你的令牌>,之后每次 espctl build 都会自动发到你保存的服务器。

仅计划模式

你需要主动要求 —— 传 --local 参数:

espctl build --local --target esp32s3

这种模式下,espctl 可以:

  • 看你的项目文件,检查设置是不是合法的
  • 一步一步告诉你一次构建做什么
  • 读你硬盘上已有的构建输出(日志、固件文件)
  • 告诉你构建服务器用哪些 ESP-IDF 版本和工具(如果它在线的话)

这种模式下,espctl 不能真的编译任何东西。没有构建在跑。

什么时候有用:

  • 你在离线(飞机、火车、会议 WiFi)。
  • 你在跑构建之前先审查一下。
  • 你在学这个工具能做什么,还不想真正动手。

登录

设置远程构建最简单的方式:

espctl login --token <你的访问密钥>

这会把你的令牌和服务器地址保存到 ~/.config/espctl/credentials.json。从此以后,每次 espctl build 都用这些凭据。

凭据文件限制为只有所有者可读写(0600 权限)。如果 espctl 检测到 不安全的权限,会发出警告。

必须 HTTPS。 espctl 默认拒绝非 HTTPS 的服务器地址。 仅在本地开发时,你可以设置环境变量 ESPCTL_ALLOW_INSECURE=1 来覆盖这一限制。


MCP 服务器模式(给 AI 工具用的)

当 espctl 作为 MCP 服务器运行(espctl mcp serve)时,模式检测 方式不同 —— 它用环境变量而不是命令行参数:

环境变量设了什么模式
CONTROL_BASE_URL + MCP_AUTH_SECRET 都设了远程构建
缺少其中任何一个仅计划

这是你的 AI 工具配置文件控制的。当你编辑 .claude/settings.json.cursor/mcp.json 等时,你就是在为 MCP 服务器进程设置这些环境变量。


在两种模式之间切换

CLI 用户: 想用仅计划模式就传 --local,不传就是远程构建。 不需要改配置。

MCP 服务器用户: 编辑 AI 工具的配置,在 env 块里加上或删掉 CONTROL_BASE_URLMCP_AUTH_SECRET,然后重启 AI 工具。 不能在会话中间切换。

如果你想两种模式都同时可用,就配置两个不同名字的 espctl 条目 (例如 espctl-localespctl-remote)。大多数 AI 工具允许同时 注册多个 MCP 服务。


espctl 怎么知道自己在哪种模式?

CLI(espctl build

你做了什么模式
espctl build(已通过 espctl login 登录)远程构建(用保存的服务器)
espctl build(未登录)远程构建 → https://esphome.cloud
espctl build --remote https://my-server.com远程构建到指定地址
espctl build --local仅计划

MCP 服务器(espctl mcp serve

你设了什么模式
CONTROL_BASE_URL + MCP_AUTH_SECRET远程构建
缺少其中任何一个环境变量仅计划

你随时可以让助手“运行 doctor“来确认 —— 报告里包含你是否已登录 以及构建服务器是否可达。


另见

  • 前置条件 —— 你电脑上需要什么。
  • 快速开始 —— 一份用远程构建模式的 5 分钟流程。
  • 系统总览 —— 一次构建离开你的电脑 之后会发生什么。