好文集ChatGPT Plus¥119

一条命令没敲,一分钱模型费没花,我用 DSH 把 128 元的 ESP32-S3 刷成了 AI 音箱

文章目录

部分视频或图片暂未收录,已在正文保留提示;需要时可查看原文。查看原文 ↗

前几天我在立创商城买了一块实战派 ESP32-S3 开发板,原价 148,用了新人券 128 块到手,带摄像头和一块 2 寸屏。到手以后我截了张商品页丢给 DSH(DeepSeek Harness),只打了一句"我搞了一个这个"。

四十分钟后,这块板子在桌上跟我说话了。其中十二分钟耗在一根线上。

媒体暂未收录,可在原文中查看

整个过程我没装 ESP-IDF,没编译,终端里一条命令都没自己敲。查固件、校验、烧录、读日志都是 DSH 干的。我负责插线、换线、拿手机配网,最后对着板子喊话。

还有一件事我想先说。这一整轮对话跑的模型是 DeepSeek V4.1 Flash,走 WorkBuddy 海外版的免费额度,倍率标着 x0.00,不扣积分。会话日志里 154 次模型请求全部记在 workbuddy-ai / deepseek-v4.1-flash 名下。壳是国产的 DSH,模型是免费的 Flash,一块开发板从插上电脑到能聊天,模型这边没花一分钱。

先把边界写清楚

我的电脑是 Apple 芯片的 Mac,系统 macOS 26.6。板子型号 LCKFB-SZPI-ESP32-S3-VA,刷的是小智 AI 固件 v2.5.2。Windows 我没测。DSH 能替你跑命令,替不了你换线、收短信验证码和拿手机配网。

零、先把 DSH 接上免费模型

DSH 本身是个桌面端 Agent,模型可以自己选。我用的是一个叫 dsh-workbuddy-connect 的插件,它把 WorkBuddy 国内版和海外版的模型一起塞进了 DSH 的模型列表。模型名后面直接标积分倍率,x0.00 就是免费。我这边 DeepSeek V4.1 Flash 和阶跃星辰的模型都是 x0.00。

配置只有三步。

  1. 装好 WorkBuddy 桌面端并登录,国内版、海外版都行

  2. 在 DSH 桌面端的插件管理里装 dsh-workbuddy-connect

  3. 重启 DSH,在模型列表里找到 WorkBuddy 分组,挑一个 x0.00 的

文章配图

这一轮用的就是 DeepSeek V4.1 Flash,倍率 x0.00

我之前专门发过一条推特,录了完整的配置过程,不会配的同学照着看就行。

嵌入推文(联网查看)

实在配不明白,把插件的 README 丢给 DSH,让它自己装。这个插件走的是非官方接口,自己用没问题,别薅太狠。

有人会担心免费的 Flash 扛不住这种活。我这轮对话里,它查 GitHub 仓库、翻板级源码、比对 SHA256、调 esptool 读芯片、读串口日志定位唤醒词,129 次工具调用一路接下来,没有出现跑着跑着忘了前面在干什么的情况。上下文窗口是 1M,四十轮对话加一堆日志塞进去也够用。

一、这块板子到底能不能跑小智

DSH 认出了板子,给了几个能玩的方向,其中一条是社区里的小智 AI 音箱固件。我挑了这个。

它接着提醒我先别急。商品页的描述只写了"集成了摄像头和液晶屏",一个字没提麦克风,它想让我先翻过板子看看丝印。我觉得立创官方都把它当推荐玩法在卖了,再准备别的没多大意义。

文章配图

我丢给 DSH 的第一张图,描述里只提了摄像头和液晶屏

DSH 没硬拦,换了个办法确认。它去翻小智的开源仓库 78/xiaozhi-esp32,在 main/boards/lckfb/ 下面找到了 szpi-esp32s3 这个目录,就是这块板子的官方板级配置。配置里写着 ES8311 和 ES7210 两颗音频芯片,前一颗管喇叭,后一颗管麦克风,还专门打开了设备端回声消除 CONFIG_USE_DEVICE_AEC=y。

麦克风是板载的,不用外接模块。后来它又挖到立创产品页的原文,"配备ES7210和ES8311芯片,支持双麦输入及回声消除"。我的判断没错,它这一趟也没白查,后面挑固件靠的就是这里拿到的板子代号 lichuang-dev。

这一步还有个小插曲。DSH 自带的网页抓取打不开 GitHub 和立创 wiki,域名全被我本机代理解析成了 198.18 开头的假地址。它自己改用命令行的 curl 去拉 GitHub API,一下就通了。你要是也开着代理,看到它说抓不到网页,等它换条路就行。

二、它帮我选了一条不用装环境的路

我告诉它我用 Mac。它先看了一眼我的环境,arm64 芯片,Homebrew 已装,Python 是 3.14.6。

然后它去读小智仓库的 README,翻出两条对新手很要紧的信息。

第一条,小智固件现在要求 ESP-IDF v6.0.1 以上,5.x 已经不支持了。 网上不少小智教程是照着 5.x 写的,照抄编译会报一堆错,还很难搜到原因。

第二条,官方建议新手直接烧编好的固件,不用搭开发环境。

它去翻最新的 v2.5.2 Release,里面一共 190 个固件包,名字带"立创"的有两个。v2.5.2_lckfb-lichuang-c3-dev.zip 是 ESP32-C3 版本,v2.5.2_lckfb-lichuang-dev.zip 才是这块 S3。两个名字只差一个 c3,自己下很容易点错。

我选了免编译这条路。

三、十二分钟耗在一根线上

我插上板子,问它能不能识别出来。

DSH 查了一圈串口,只有蓝牙口和系统调试口,USB 设备树里也没有任何 ESP32 的影子。它给了几种可能,插错口、线是只能充电的线、板子没上电。

我换了个 USB 口,跟它说"我换了个接口,你试一下"。结果一样,还是没有。

这一次它注意到一个细节。USB 2.1 Hub 的设备 ID 变了,说明系统确实感知到了插拔,电是通的,板子却没有作为 USB 设备枚举出来。这种表现最像只有电源针脚、没有数据针脚的充电线。

我翻出另一根线直连电脑,跟它说"我换了一根数据线直连 你看下"。

/dev/cu.usbmodem21301
USB JTAG/serial debug unit

认出来了。从我第一次问它能不能识别,到换线成功,正好十二分钟。

文章配图

换了根线,它马上认出来了

这是全程唯一一处 DSH 帮不上忙的地方。它能从设备树里推断出是线的问题,线还得我自己换。所以开始之前,请直接拿一根确定能传数据的 Type-C 线,平时给手机传照片那种,插在电脑上,别走扩展坞。

四、烧录之前,它先读了一遍芯片

要和芯片通信得用 esptool。DSH 先试着用系统的 pip 装,被 macOS 的 PEP 668 保护挡了回来,报 externally-managed-environment。它自己建了个虚拟环境,在里面装好 esptool 5.6.0,顺便确认了 Python 3.14 能用。

第一次读芯片又碰到 Operation not permitted。DSH 默认跑在沙盒里,碰串口这种设备要我点允许,它弹出的申请理由写的是"需要访问 /dev/cu.usbmodem21301 这个串口设备来验证 ESP32-S3 芯片能否正常通信"。我点了允许,芯片信息全读出来了。

Chip type:    ESP32-S3 (QFN56) revision v0.2
Features:     Wi-Fi, BT 5 (LE), Dual Core + LP Core, 240MHz
              Embedded PSRAM 8MB
Flash:        16MB
USB mode:     USB-Serial/JTAG

16MB Flash 加 8MB PSRAM,小智要求的是 8MB Flash 起步,空间很宽裕。USB 模式是芯片原生的 USB-Serial/JTAG,所以我电脑上一个串口驱动都没装,也能直接用。

关于授权弹窗

烧录和读日志都要碰串口,前后我点了四次允许,后来嫌烦,把 DSH 的审批策略从"ask"改成了"never"。新手我建议前几次还是看一眼申请理由再点,确认它要做的就是读写这块板子。

五、烧录花了 35 秒

DSH 接下来的动作我照着日志列一遍。

  1. 下载 v2.5.2_lckfb-lichuang-dev.zip,2.7MB

  2. 拿 Release 里官方的 SHA256SUMS 比对,哈希一致

  3. 解压出一个合并好的 merged-binary.bin,9.7MB,不用管分区表和 bootloader

  4. 用 esptool image-info 读固件头,Flash size: 16MB,ESP-IDF: v6.1,和板子对得上

  5. 写入

Wrote 10164192 bytes at 0x00000000 in 26.4 seconds (3079.3 kbit/s)
Hash of data verified.
Hard resetting via RTS pin...

写 Flash 26.4 秒,加上握手和校验一共 34.7 秒,写完自动重启。

第四步是我最放心的地方。它烧之前先确认固件就是给 16MB 板子编的,没有拿到文件就直接往里写。

六、板子自己告诉我该怎么配网

DSH 装了个 pyserial 去读串口日志,板子启动后打印得很清楚。

WifiConfigurationAp: Access Point started with SSID Xiaozhi-B545
WifiBoard: WiFi config mode entered
配网模式: 手机连接热点 Xiaozhi-B545,浏览器访问 http://192.168.4.1
Adev_Codec: Open codec device OK

前三行是配网提示,最后一行说明音频芯片初始化成功。之前从源码推断出来的板载麦克风,到这里有了运行时的证据。

板子屏幕上也显示着同样的提示。

文章配图

烧完自动进入配网模式

剩下的我用手机完成。

  1. 手机连上板子的热点 Xiaozhi-B545,你的后缀会不一样,以屏幕为准

  2. 手机提示"受限无线局域网"是正常的,这个热点本来就不通外网

  3. 浏览器打开 http://192.168.4.1,选自己家的 Wi-Fi,填密码,点连接

文章配图

配网页面会自动扫出附近的 Wi-Fi

页面上写着"从下面列表选择 2.4G Wi-Fi"。ESP32 只认 2.4GHz,路由器双频合一时如果死活连不上,先往这个方向查。

文章配图

看到"配置成功"就可以了

连上网以后,板子屏幕上出现一个 6 位数字。我顺手把它发给了 DSH,它读完日志告诉我方向反了。

激活设备: xiaozhi.me
811139
Activating... 1/10

这个码要拿到 xiaozhi.me 去输入。我登录控制台,点"添加设备",填上 811139,板子那边一直在轮询,几秒钟就激活了。

七、第一次喊它,它没理我

激活完我对着板子说了几句,没反应。

DSH 先看待机日志,只有心跳,没有任何唤醒记录,板子根本没"听到"。它又把板子重启了一遍,抓完整的启动日志,麦克风、回声消除、语音检测和唤醒引擎全部就绪,问题出在唤醒词上。

AFE_CONFIG: Set WakeNet Model: wn9_nihaoxiaozhi_tts

这块板子的唤醒词是「你好小智」,四个字。我照着喊了一遍,它回话了。

答案一直写在日志里,我自己是不会去翻的。所以板子不理你的时候,直接问 DSH 唤醒词是什么,比对着板子换着花样喊快得多。

我用下来的感受是,声音挺清晰,没有回声,也没有断断续续,从说完到它开口延迟很短。屏幕上是一张表情脸,对话时表情会跟着变。麦克风孔一个在侧边,一个在底部,别用手或者壳子挡住。

文章配图

聊完它自己说"好啦,那我先不打扰你了,拜拜!"

DSH 动手前担心过一件事。这类带喇叭的板子如果回声消除没调好,可能把自己的声音当成新指令,自问自答停不下来。它从日志里看到固件默认开的是 NLP_VERY_AGGRESSIVE,抑制得很狠。我实际用下来没碰到回声。

八、它跑偏的时候,喊一声就行

DSH 很勤快,勤快过头的时候需要人喊一声。

板子能聊天以后,它开始研究板子上的孔。它让我拍侧面、拍底部,猜这个孔是复位键,那个口是 USB-HUB,猜完又让我捂住孔测麦克风。来回拍了三张照片以后,我跟它说:"咱们天天研究这些孔干嘛呀?……能用怎么用?怎么更好的用?"

它回我"你说得对,我跑偏了",马上收住,转去整理这块板子能怎么玩。

Agent 会把每个细节都当成必须搞清楚的事。你要的是能用、好用,就直接告诉它,它不会跟你较劲。

九、换 Wi-Fi 要不要重新绑定

第一次配网时我没截图。第二天早上我想补,问 DSH 还能不能让板子重新进配网模式。

它先试了温和的办法,重启板子,结果板子记得 Wi-Fi,直接连上了。它跟我确认以后,用 esptool 擦掉了存 Wi-Fi 配置的 NVS 区域,没碰固件。板子重启,回到了配网模式,上面那几张配网截图就是这次补拍的。

重新配好网,我有点慌,跑去跟它说没看到设备连接,问是不是要去后台把智能体删了重新添加。它读完日志让我别删。

WifiBoard: Connected to WiFi: TP-LINK_2836
Application: Activation done
StateMachine: State: activating -> idle

板子连上网以后自己就激活了,屏幕上也没再出现配对码,后台还是原来那个智能体。我这台的情况是,清掉 Wi-Fi 重新配网,绑定关系还在。搬家、换路由器、改密码,直接重新配网就行。

文章配图

后台显示"在线",最近对话 1 分钟前

十、后台能调的东西比我以为的多

板子能聊天以后,DSH 想帮我看看 xiaozhi.me 控制台。它用内置浏览器打开了登录页,卡在短信验证码和图形验证码上,这两样只能我自己来。我当时也觉得控制台没什么可配的,就让它算了。

后来我在手机上登进去一看,能调的东西不少。

角色。 支持普通话、英语、日语、粤语、越南语、法语、阿拉伯语、西班牙语,切成英语就是个口语陪练。音色有 6 种,每个都能先试听。右上角打开"自定义"开关,就能直接改那段用 Markdown 写的角色设定。

模型与记忆。 默认是小智 Lite。下拉列表里写着"GitHub 认证 以下模型免费用",有 Qwen 3.6、DeepSeek V4 和豆包 Seed 2.0,官方自己标了"响应快速""性格丰富""延迟较大"。记忆开着的话,它能跨对话记住你说过的话,我这台已经攒了 2 条。

文章配图

板子这边也能免费换大模型,要先做 GitHub 认证

扩展能力。 天气、笑话、音乐、新闻、知识库都能勾选,下面还有个 MCP 接入点,可以接外部服务。

文章配图

扩展能力页

声纹识别和换模型这两项我还没实测,有兴趣可以自己试。

算下来,从电脑到板子全程没花模型费。电脑上 DSH 跑的是 WorkBuddy 免费的 DeepSeek V4.1 Flash,板子上小智做完 GitHub 认证也能免费用 DeepSeek V4。花掉的钱只有那块 128 元的板子。

十一、照着做,可以这样跟 DSH 说

我当时的说法都很随意,下面是整理过的版本,直接复制就能用。

插上板子以后

我买了一块立创实战派 ESP32-S3 开发板,已经用数据线插到 Mac 上了,你看下能不能识别出来。

识别成功以后

帮我把它刷成小智 AI 音箱,用官方编好的固件,不装开发环境。烧之前先读一下芯片信息,确认固件和板子匹配,下载的文件也校验一下。

烧完以后

读一下串口日志,告诉我板子现在是什么状态,下一步我该做什么。

喊它没反应

我对它说话没反应,帮我从日志里看看唤醒词是什么,麦克风有没有正常初始化。

想重新配网

我想重新配网,帮我清掉板子里存的 Wi-Fi 配置,别动固件。

还有一个习惯很管用。每做一个物理动作,就告诉它你做了什么,"我换了个口""我换了根线"。它会重新检测,对比前后两次的结果,我那根充电线就是这么揪出来的。

十二、常见问题速查

  • 插上电脑没反应 先换一根确定能传数据的线,直连电脑,不走扩展坞

  • DSH 弹出授权申请 它要访问串口,看清理由是读写这块板子再点允许

  • 固件烧进去跑不起来 检查下的是不是 lichuang-c3-dev,那是 ESP32-C3 版本

  • 对它说话没反应 唤醒词是「你好小智」,四个字说全,别挡住麦克风孔

  • 配网时密码对却连不上 ESP32 只认 2.4G,看看路由器是不是双频合一

  • 屏幕上出现 6 位数字 拿到 xiaozhi.me 控制台的"添加设备"里输入

  • 重新配网后没出现配对码 绑定还在,板子会自己激活,后台不用删

  • 不会给 DSH 配免费模型 看上面插进来的那条推特,或者把插件 README 丢给 DSH

写在最后

这块板子还有摄像头和触摸屏没用上,后面再慢慢折腾。

国产的壳,免费的模型,一块 128 元的板子,四十分钟能聊天。你要是手里也有块吃灰的开发板,先找一根能传数据的线,再把 DSH 接上免费模型,剩下的跟它说就行。遇到卡住的地方欢迎丢在评论区。

用到的链接

全文完
查看原文