Skip to content

✨ feat(display): 完成小智式牛牛屏幕适配 - #226

Draft
ZhaoXingPeng wants to merge 14 commits into
1024XEngineer:mainfrom
ZhaoXingPeng:codex/esp-sparkbot-display-design
Draft

✨ feat(display): 完成小智式牛牛屏幕适配#226
ZhaoXingPeng wants to merge 14 commits into
1024XEngineer:mainfrom
ZhaoXingPeng:codex/esp-sparkbot-display-design

Conversation

@ZhaoXingPeng

Copy link
Copy Markdown
Collaborator

结论

本 PR 提交小智式板端交互与牛牛状态屏代码,补齐唤醒、聆听、思考、说话、错误和待机状态的显示闭环。请 Reviewer 重点检查显示适配器与运行时状态边界,以及牛头点阵的可读性。当前作为 Draft 提交,后续继续完善设计文档和实板显示细节。

Refs #222

变更

  • 接入 SSD1306 状态显示适配器,支持中文字符、状态文字和牛头表情点阵。
  • 完成唤醒、聆听超时、TTS 播放、MCP 事件和 OTA/设备状态的板端联动。
  • 调整牛头为倒梯形脸和弯曲三角牛角,7 个表情同步更新。

明确未包含:

  • 产品/架构方案文档、屏幕状态设计文档和原型文件。
  • 构建产物、设备备份、Wi-Fi 凭据和其他本地未跟踪文件。

架构与兼容

显示逻辑通过 voicelife_display_esp 适配器接入运行时,核心语音、MCP 和服务端协议边界不变;不改变 feat/board-xiaozhi-ux 分支。

验证

  • ./scripts/run_pre_submit_checks.sh
  • 格式、静态规则、公共 API 文档检查通过
  • 43 个主机测试通过
  • esp32s3-devesp32s3-lichuang-audio-probeesp32s3-voicelife-pcb-pcm Profile 检查通过
  • IM Gateway 格式、Lint、TypeScript、文档和 216 个测试通过
  • SparkBot 屏幕最终动画和布局仍需继续实板验收

证据:本地提交前门禁完整输出;PostgreSQL 契约测试因本机未启动 PostgreSQL 按门禁规则跳过。

TDD 记录

  • RED:不涉及,本 PR 主要为已有板端显示链路和点阵资源调整。
  • GREEN:既有主机测试与完整提交前门禁通过。
  • REFACTOR:牛头点阵重绘和显示适配器整理。

风险与回退

  • 当前 PR 保持 Draft,实板动画帧率、布局和不同屏幕批次兼容性仍需继续确认。
  • 回退方式为回退本 PR 提交,不影响 feat/board-xiaozhi-ux 分支。

Review 清单

  • Issue 的验收标准已经逐项回应
  • 没有提交凭据、设备备份、用户隐私或构建产物
  • 未新增第三方代码
  • 文档和注释与实际行为一致
  • AI 生成内容已经由作者理解并完成自动化验证

为本地唤醒、播报结束和待机恢复增加脱敏生命周期事件,验收采集器现在会拒绝乱序事件和失败事件。\n\n主机测试与 ESP32-S3 Profile 构建用于验证证据字段不影响运行链路。
移除汇报文档、过程文档入口和与 Linx 语音链路无关的探针变更,仅保留功能代码、必要测试与实际 Profile 依赖。
提高有界事件队列容量并提升事件 worker 优先级,避免真人语音突发帧使 Linx Transport 溢出并误报 Provider 失败。
- codec 新增 goodbye 与 llm 消息类型,服务端会话告别与表情消息不再触发 provider_error
- WebSocket 分块重组支持 ESP-IDF 对超长单帧的分块投递,TTS 音频帧可完整拼接播放
- runtime 增加脱敏诊断日志 PROVIDER_ERROR_DETAIL,便于板端定位错误来源
- 补充 linx codec/provider 与分块重组契约测试
- OLED 显示牛头表情(neutral/happy/sad/thinking/surprised/speaking/angry)与 23 个中文字形
- 空闲/聆听/思考/播报/停止/重连/错误状态全部中文化
- 唤醒反馈“收到!”、结束反馈“牛牛走了!”
- 唤醒后 12 秒无有效输入自动结束聆听回待机,避免服务端闲聊回复
- 修复 voice_audio_sink 任务栈溢出(3072→16384),消除空闲时崩溃重启
- 脸型从圆角矩形改为上宽下窄的倒梯形
- 牛角改为向两侧上弯的三角形态,更贴近真实牛头
- 7 个表情(neutral/happy/sad/thinking/surprised/speaking/angry)同步重绘
@codecov

codecov Bot commented Aug 11, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 90.00000% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
components/voicelife_mcp/test/mcp_server_test.cc 84.61% 1 Missing and 1 partial ⚠️

📢 Thoughts on this report? Let us know!

@ZhaoXingPeng
ZhaoXingPeng force-pushed the codex/esp-sparkbot-display-design branch 2 times, most recently from 3f00aa8 to dc98b21 Compare August 11, 2026 18:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant