前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
返回 AI 情报前线
All News · 全部资讯8655
  • Agent 诊断结果上线前如何验证:分离决策与执行
  • AI编码导致CI成瓶颈?我们重新设计了CI流程
  • 从氛围记忆到确定性自主:AI 原生基础设施设计思路
  • 用 Agent 流程开发简单 SPA 的实战经验
  • AI 生成 React UI 的真实问题:从第二页开始组件漂移
  • vLLM 深度解析:高吞吐 LLM 推理的性能瓶颈
  • AWS 开源 AI 编程助手,成本比 Claude Code 低 45%
  • 用Docker Compose构建可复现的AI Agent评测环境
  • 阿里发布Qwen-Image-2.1:7B开源图像生成编辑模型
  • Benchling 用 Bedrock AgentCore 为多租户 AI Agent 构建深度防御安全架构
  • 苹果Mac mini 2026款:M6/M5 Pro芯片,AI性能最高提升4倍
  • Mac Studio 2026:M5 Ultra 支持最高 512GB 统一内存,可本地运行超大模型
  • Grok 4.7登陆GitHub Copilot,面向Agent化编程
  • AI 安全是工程问题:Agent 堆栈每一层的防护实践
  • Agent 系统的瓶颈不是模型,是架构设计
  • 防御式 Agent 架构:Schema 注入与超时控制
  • 自研研究 Agent 拦截 AI 编程幻觉:文档先行策略
  • 像物理学家一样剪枝 LLM:区块移除的伊辛模型优化
  • Mac mini上的AI开发新范式:OpenClaw与Codex实战
  • Cloudflare Python Workers 正式上线,可用纯 Python 开发边缘应用
  • 浏览器直接给 ESP32 烧录 Claude 写的宏,无需 IDE 或工具链
  • Google 发布 Agent 安全风险报告:5 万美元循环消耗与凭证窃取案例
  • 多 Agent 合规流水线:用 RAG + 自修正架构对抗 WCAG 幻觉问题
  • Anthropic 发布金融领域 Claude 参考智能体套件
  • OpenAI 披露强化学习模型在上下文压缩时插入 Prompt 注入
  • Jev 决策模型实测:0.3秒完成意图分类和工具路由,$0.00004/次
  • Kimi Code Desktop 上线:图形界面 + 内置终端 + Git 状态,支持 Swarm 多 Agent 协
  • StepFun Step 5 Preview:600B 总参数 MoE 模型,1M 超长上下文,10 月开源
  • JSON-Render:通吃 React/Vue/Svelte/React Native 等 10+ 框架的生成式 UI
  • Agent-Native:让 Agent 能力同时暴露给 LLM 工具调用和 UI 操作的 TypeScript 框架
  • 清华联合无问芯穹开源具身智能体RPent,GPT-6 Astra注入机器人
  • AI Agent工具调用边界case:路由错误比想象中更脆弱
  • AI按它能读的契约编程,而非你想要的
  • MCP 远程服务器实现 AI 驱动的确定性 UI 编排
  • 阶跃Step 5 Preview实测:27B参数开源模型冲至Top2
  • 用Responses API构建有边界的GPT-6 Astra Agent
  • 用破坏不变量法审查 AI 生成代码
  • AI 编程测试冻结:保存异常指纹而非测试名
  • 程序员亲历:全公司用 Claude Code 批量生产代码,没人读代码,12 小时工作制
  • 自托管Llama部署成本全解析:GPU之外容易被忽视的隐性开销
  • Builder.io开源Agent-Native框架:让人与AI共享同一操作层
  • 让AI编程代理在中断后从断点恢复:session化执行轨迹方案
  • CI如何验证AI代理真的跑了测试而不是伪造结果
  • llm-keys-ui:让Coding Agent安全获取API密钥的插件
  • AI产品定价数学:固定费率如何悄悄亏损
  • ZCode事件:AI编程工具静默上传全部Git历史
  • Anthropic自评:R&D自动化率26%,但完全自主为0
  • 阿里Qwen-Image-2.1:70亿参数开源图像生成拳打闭源模型
  • OWASP CRS 规则引擎:给 LLM 和 MCP 加上 WAF
  • 智谱 MaaS 上线数据不留存机制,可申请开通
  • 如何界定可完成的AI工程范围
  • 已加载 51 / 8655
8.0
热点
AI SCORE
编程提效2026-09-21 20:30

浏览器直接给 ESP32 烧录 Claude 写的宏,无需 IDE 或工具链

dev.to · AI#ESP32#Claude#AI编程
Editor brief · 编辑速览

通过 Synacl 云固件在浏览器中完成 ESP32 烧录,由 Claude 从一句话描述生成运行在开发板上的宏代码,全程无需本地工具链。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

由 Synacl 团队撰写。首发于 synacl.com,该教程为交互式版本。

无需打开 IDE、编写 sketch 或编译任何代码,就可以让 ESP32 读取光照传感器并驱动继电器。开发板通过浏览器标签页进行烧录,通过同一根 USB 数据线接入 Wi-Fi,自动化逻辑由 Claude 根据你输入的一句话编写——以宏(macro)的形式直接在 ESP32 开发板上运行。你查看 Claude 编写的代码,再决定是否要执行。本教程完整走通整条链路,使用开发板自带的 LED 作为"继电器",因此在尝试之前无需任何接线。

  1. 通过浏览器烧录网关固件

Synacl 网页烧录工具写入网关固件后的界面:日志显示 Flash complete,下方面板提示开发板等待配置。

访问 synacl.com/flash — 选择"Synacl gateway firmware",点击 Connect,选择 USB 端口,然后 Flash。以 460800 波特率烧录约需 25 秒;无需工具链,暂不需要账号。

  1. 注册网关并通过同一根数据线发送 Wi-Fi 凭证

Add gateway 页面,第 3 步,Wi-Fi 表单已填写,Send Wi-Fi & Connect 按钮高亮。

进入 Gateways → Add gateway。跳过烧录步骤(第 1 步已完成),在第 2 步给网关起个名字并注册,然后在第 3 步输入你的 Wi-Fi 网络名称和密码并点击 Send Wi-Fi & Connect。应用通过 USB 发送凭证和网关的账号密钥——无需Captive Portal( captive portal)。

  1. 开发板上线

网关列表,新网关显示 online,固件版本 1.5.1。

约 90 秒内网关显示 online,固件版本也会显示在侧边。此时开发板上没有任何外接设备。

  1. 在 Claude 中添加 Synacl 作为连接器

claude.ai 自定义连接器对话框,已填入 Synacl MCP 端点 URL。

在 claude.ai 中添加自定义连接器,URL 填写:

https://api.synacl.com/mcp

这就是 Claude 端的全部配置。

  1. 审批 Claude 可以执行的操作——注意默认未勾选的项目

Synacl 授权页面,列出 Claude 请求的各项权限,其中 Run macros 未勾选并标注为默认关闭。

Synacl 的授权页面列出了每一项权限。"Run macros"默认未勾选,并标注"默认关闭——可驱动设备";其他所有权限均已预选,你也可以只授予其中一部分。本教程在此勾选它——但请记住第 8 步,这个权限本身并不足够。

  1. 用一句话描述自动化需求

claude.ai 对话:一句话请求,随后 Claude 通过 Synacl 报告了继电器设备和它创建的 Blink 宏,以及网关配置仍需重新发送。

"This gateway has a relay on GPIO 2. Set it up as a device, then write a macro called Blink that switches it on and off five times, half a second each."

Claude 创建了设备和宏,完成编译和推送,并告知需要你点击来重新发送配置使其生效。

  1. Claude 编写的宏,在你的应用里

Synacl Macros 页面,Blink 宏卡片及其 Run 按钮。

Macros 页面显示网关上的 Blink 宏,包含五个步骤:一个 repeat five 次循环,内含继电器开、等待半秒、继电器关、再等待——以及 Claude 自己写的一行描述。在任何内容运行之前先阅读它。

  1. 让 Claude 运行它——然后被拒绝

Claude 拒绝运行 Blink 宏,因为无人将该宏标记为 agent-runnable。

让 Claude 运行 Blink 时,Claude 先读取宏的内容:"Blink 上 agentRunnable: false。我的连接持有 macro:run 权限,但该权限仅适用于用户在网页应用中明确标记为 AI agent 可运行的宏。这个标记不是我自己能设置的。"它持有 Run macros 权限,却仍然无法启动——需要两把钥匙,而软件永远只持有一把。

  1. 你阅读后,允许它

宏编辑器中 AI agents 部分,已勾选 Let an AI agent run this macro,并显示设备警告。

编辑该宏,勾选"Let an AI agent run this macro"。所有宏默认关闭此选项,没有任何助手能自己设置它,即使是在它自己写的宏上也不行。

  1. 现在运行了——在开发板上,由开发板确认

Macros 页面,Blink 宏的状态徽章显示 done,网关已执行完毕。

再次请求运行。网关确认运行已开始,状态从 requested → started → done,输出引脚切换了五次。Claude 报告的是网关确认的内容,而非它自己发送的内容。

所需材料

一块 ESP32 开发板和一根 USB 数据线。任意经典 ESP32 都能使用 Synacl 固件;图片中使用的是普通的 ESP32-WROOM 模块,其 GPIO 2 上有一颗常见的蓝色 LED。

Chrome 或 Edge 桌面浏览器。浏览器烧录和 USB 配置使用 Web Serial API,Firefox 和 Safari 没有此功能。

一个免费的 Synacl 账号——前五个设备免费。在烧录后创建,烧录工具本身无需账号。

支持自定义连接器的 Claude。本连接是一个标准远程 MCP 服务器,因此任何支持 MCP 的助手都能以相同方式工作;本教程中的界面截图为 claude.ai。

最后一部分所需:BH1750 光照传感器——常见的 GY-302 breakout——连接到 I²C 引脚:3.3 V、GND、SDA 接 GPIO 21、SCL 接 GPIO 22,ADDR 悬空(低电平)地址为 0x23。任意有数据手册的 I²C 传感器都可同理使用。如果想驱动真实负载而非只看 LED 闪烁,则需要继电器模块。

整个过程约需 15 分钟,大部分时间在等待开发板重启。

步骤 1 — 通过浏览器烧录网关固件

打开 synacl.com/flash,插入开发板,选择 Synacl gateway firmware。页面获取当前稳定版本并显示版本号。点击 Connect,在浏览器弹出的选择器中选中开发板的串口,然后 Flash。在默认 460800 波特率下,四个镜像文件约需 25 秒;日志以"Flash complete"结束,开发板自动重启。保持"Leave Erase entire flash off"(不勾选擦除整个闪存)——新开发板不需要,已是 Synacl 网关的开发板如果勾选则会擦除已保存的 Wi-Fi 和账号设置。

选择器中没有端口通常是数据线仅支持充电;首次握手失败则需要按住 BOOT 再点击 Connect。烧录文章涵盖了其他情况。

现在你拥有的是一个等待两样东西的网关:Wi-Fi 网络和所属账号。

步骤 2 — 注册网关并通过同一根数据线发送 Wi-Fi 凭证

创建你的账号,然后打开 Gateways → Add gateway。该页面有三个步骤,第 1 步你已经完成,跳过烧录部分;在第 2 步给网关起个名字并注册,然后在第 3 步输入你的 Wi-Fi 网络名称和密码并点击 Send Wi-Fi & Connect。应用通过 USB 发送凭证和网关的账号密钥——无需 Captive Portal,无需找到热点(开发板也为无电脑情况提供了 Synacl-Gateway 备用 Portal 来完成配置)。

返回 Gateways 页面,新的网关约在 90 秒内显示 online,固件版本也会显示在旁边。此时开发板上没有任何外接设备;接下来的步骤通过软件添加设备,引脚在有内容运行之前不关心连接的是什么。

步骤 3 — 连接 Claude

在 claude.ai 中添加自定义连接器,填入 Synacl MCP 端点:

https://api.synacl.com/mcp

Claude 首次使用该连接时,浏览器会打开 Synacl 的授权页面。仔细阅读:它列出了 Claude 在"It will be able to"下请求的每一项权限,你可以取消勾选任何你不想授予的项目。几乎所有权限都预选了——创建设备、编辑标签、编写宏——因为这些操作不会驱动任何实际设备。有一行不同。"Run macros"默认未勾选,并标注"默认关闭——可驱动设备"。勾选它——同时记住第 5 步中的内容,这个权限本身并不足够运行任何宏。确认授权后,Claude 已连接到你的账号且仅连接你的账号。你随时可以在 Settings → API & Agents 中撤销该连接。

Claude 在此之后的所有操作都经过该连接,仅使用你勾选的权限——AI 智能体文章有完整列表。

步骤 4 — 说出开发板应该做什么

现在来写那句话。在新对话中,启用该连接器:

This gateway has a relay on GPIO 2. Set it up as a device, then write a macro called Blink that switches it on and off five times, half a second each, so I can see it work.

指定引脚位置:Claude 不会猜测引脚,因为这个操作无法删除设备,而免费账户只有五个设备槽位,猜错一次就会浪费一个——所以它会直接询问。有了引脚后,它会查找你的网关,创建设备——一个 GPIO 数字输出,位于 GPIO 2,高电平有效,默认关闭——然后写入宏。

那一下点击始终由你掌控。新设备只有当网关的配置被重新发送时才会连接到板卡,而重新发送会让网关重启,所以 Claude 会将其报告为待处理状态,而不是直接执行。从网关卡片(Info)打开网关,然后按 Resend config;大约三十秒后板卡恢复,此时已拥有了继电器引脚。Synacl 宏是由模块组成的短程序:切换输出、等待、循环、读取标签、条件判断等。对于 Blink,Claude 生成了一个循环五次、内部包含四个模块的宏:输出开启、等待 500 毫秒、输出关闭、等待 500 毫秒。如果出错,平台会准确告知是哪个模块未能编译,然后它会修复;除非你想看,否则这些细节你都不会看到。

在应用的 Macros 中打开查看:Blink · 你的网关 · 5 步,带有一个 Run 按钮。点击进入查看步骤——这是大多数"AI 帮你做硬件"演示略过的部分。一个从未见过你装置的助手能搞对基本结构,但具体细节大概率会有问题——引脚不对、时长不对——而"大致正确但细节有误"恰恰是你想在板卡什么都没做的时候就能发现的问题。

第 5 步——审核,然后让它运行

让 Claude 运行 Blink。它不会执行。在我们的运行中,它先读取了宏,发现 agentRunnable: false,然后如实告知而不是调用工具;如果它强行调用了,平台的回复值得引用,因为这就是整个设计的全部逻辑:

宏 "Blink" 未被标记为可由 AI 智能体运行,因此此连接不得启动它。这是一个刻意设计的每宏独立设置,与此 token 上的权限分开:必须有人阅读序列并允许 AI 智能体运行它,在 Synacl 应用中。如果用户想要运行,请让他们执行。不要寻找其他方式运行它。

运行宏需要两个独立的密钥,软件永远只能持有其中一个。第一个是 Claude 连接上的运行宏权限——那个默认未勾选、你在第 3 步勾选的权限。Claude 持有它,但仍然被拒绝。第二个位于宏本身:在编辑器中,触发器下方,有一个标注为"Let an AI agent run this macro"的勾选框。每个宏默认都是关闭的,包括助手创建的宏,而且没有任何助手可以勾选它——平台会将该字段从任何经过 AI 智能体连接传来的请求中删除。权限说明哪个软件可以执行操作;但它无法告诉你这个序列是否安全。所以平台会逐个向你确认序列。

你已经阅读了 Blink。勾选该框,保存,然后重新请求。

这次网关确认了运行,Claude 告知了你:不是"我已发送"而是"网关确认已启动"。Macros 中的卡片依次经过 requested → started → done,GPIO 2 上的蓝色 LED 闪烁五次。那是你的继电器。把引脚换成你继电器模块所在的引脚,同样的宏就能驱动线圈了。

两个坦诚的说明。Claude 会等待网关确认几秒钟,如果始终没有收到确认就会报告 unknown——永远不会完成。运行发生在 ESP32 上:板卡自己计时那些半秒,即使 Wi-Fi 断开也会完成——这也正是为什么 Abort 是一条网络消息,而不是紧急停止。

第 6 步——让它对光线做出反应

连接 BH1750——3.3 V、GND、SDA 到 GPIO 21、SCL 到 GPIO 22、ADDR 到 GND——然后告诉 Claude 并修改宏,而不是写第二个宏:

有一个 BH1750 光传感器在 I²C 上——SDA 在 GPIO 21,SCL 在 GPIO 22,地址 0x23。将其添加为设备,然后将 Blink 修改为:先读取光照强度,只有当低于 20 lux 时才触发继电器两秒。改名为 Dark relay。

传感器成为这些引脚上的 I²C 设备,在地址 0x23 处有一个通用标签——BH1750 没有内置驱动,所以 Claude 填入了数据手册上的参数:写入 0x10 一次以启动连续测量,读取两个字节,高位在前,除以 1.2 得到 lux。I²C 文章中列出了这些字段,如果你想核实的话。再重新发送一次配置,在一两次轮询后 lux 标签就上线了;用手遮住传感器,看着数字下降。然后 Claude 重写了同一个宏:一个 read_tag 模块将 lux 读数存入变量,一个基于该变量的 if 条件,以及内部的脉冲。再次阅读——修改后的宏是一个新的序列,你给 Blink 勾选的可由 AI 智能体运行仍然有效,所以这是你检查阈值和引脚的时刻,在任何操作执行之前。然后遮住传感器,让 Claude 运行它:LED 闪烁。移开遮盖物再运行:什么都不发生,而且运行仍然正常结束——宏读取了传感器、做出了判断、然后停止。

最后这次运行是很多人期望平台做得不同的地方,而平台有意没有这样做:宏每次触发只运行一次。Dark relay 读取传感器一次,做出判断,然后停止。它不会一直监测光线。要让它成为一个自动切换的夜灯,你需要给它设置一个调度——在宏编辑器中,每 30 秒——或者从 lux 标签上的告警规则触发它。任何一个在应用中一分钟就能完成。Claude 做不了这个。助手可以编写和编辑宏,但它不能将宏放入调度、将其连接到设备事件,或重新启用一个被禁用的宏;无人值守运行由人设置,不管助手持有何种权限。一个凌晨三点在房间里没人的时候触发的序列,始终是你的决定。

一旦调度好,整个循环——读取、比较、切换——每三十秒在板卡上运行一次,无论云端能否连接到达,而且每次运行都有网关自身十分钟的上限。

Claude 做不到的事,以及原因

这是一条规则,画在一处:助手可以创作,人必须授权。通过这个连接,助手不能:

删除任何东西——设备、网关、仪表盘、规则或宏。它可以创建副本;不能删除你的数据。

向引脚、线圈或寄存器发送原始命令。任何动作都通过你可以阅读的宏来执行。

启用宏:没有调度、没有设备事件触发、没有重新启用被禁用的宏。

将其自身的工作标记为可运行。可由 AI 智能体运行的勾选框由人设置,在应用中,每个宏独立设置。

持有超出你勾选范围的权限。每一次拒绝都会说明它缺少哪个权限,所以你来决定,而不是靠猜测。

你的计划的宏配额和宏的大小列在 plans 页面上;免费版足够涵盖本指南中的所有内容。

说得直白:这些都不是安全功能。这些边界是真实的——一个网关、一次运行一个、十分钟、一个中止按钮——但它们限制的是错误;不能让机器变得安全。Abort 是通过网络发送的消息,无法到达离线的网关。Synacl 不是安全认证的。如果继电器另一侧的东西能伤人或毁物,保护必须物理上独立于平台:在电源路径中有一个硬接线的急停开关,而不是通过 ESP32 路由;联锁装置;额定值正确的继电器;一个最坏情况也能存活执行器。只有在你愿意让同事从隔壁房间启动的情况下,才授予运行宏的权限。

同样的三个部分——浏览器刷写、通过 MCP 连接的助手、板卡上的宏——可以从闪烁的 LED 扩展到 Modbus 电表和泵。想要这个流程的工业版本——同一个网关上的 RS485 传感器、仪表盘上的读数、带告警——请阅读 ESP32 Modbus RTU to a cloud dashboard in 15 minutes。宏食谱展示了这些模块手工能做什么,Macros 文章将限制和安全说明集中在一处。

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
Cloudflare Python Workers 正式上线,可用纯 Python 开发边缘应用
下一篇
Google 发布 Agent 安全风险报告:5 万美元循环消耗与凭证窃取案例