feat: M2.1 客户端骨架、BLE 修复、仓库整理与现状板

- BLE: 修复 BlueZ LocalName 与 Includes 冲突,串行注册与退避
- HTTP: 语音对话补 Live2D talking 标志与 session;Web 补 X-Session-Id
- Flutter: 角色/对话/模型页 + API,Gradle/依赖升级,麦克风权限
- 文档: 新增 docs/STATUS.md,校准 CLAUDE/PROGRESS/README
- 清理: 移除根目录截图与临时模型,运维脚本迁入 scripts/device
This commit is contained in:
2026-07-09 12:41:34 +08:00
parent 7cb8cee70d
commit 6f7e24db63
51 changed files with 2674 additions and 351 deletions

View File

@@ -90,14 +90,17 @@ export PATH="/home/showen/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/bi
## 当前状态
- **质量**: **147/147 已在 Linux ARM64 目标机验证**2026-07-03 实跑lib 105 + example 7 + m1_2_dynamic 15 + m1_2_http 12 + m1_2_service_manager 8Flutter 15/15零 warning。**注**2026-07-04 新增 3 提交README 修正 + P1 Shutdown fix + P2 清理)仅过类型检查,待目标机复验
- **里程碑**: M1.1 完成,**M1.2 收尾完成**147/147 两轮验收全绿、风险3 关闭、老板已提交 2a6e14b、设备已同步并复验零 warning仅差老板打 tag建议在 2a6e14b 上打 `m1.2`
- **DevicePlugin 能力**: Display + SleepInhibit + Backlight + Cursor (Linux ARM64)
- **ScreenPlugin**: 已重构为 thin wrapper
- **Flutter App**: 完成度 ~98%, APK v0.3 (52.6MB) 已编译, cupertino_icons 已修复
- **API 文档**: 已校准(以 routes.rs 为唯一权威重写)
- **示例插件**: 已完善为开发者参考模板 (manifest.json + 请求/响应示范 + 7 个测试)
- **M1.2 进展**: 目标机两轮验收完成2026-07-03147/147 零 warning证据见 TEAM_CHAT.mdHTTP 路由测试实为 12 个(旧记录 9 有误、lib 单测实为 105旧记录 107 有误);剩余 commit+tag、风险3 补派核查
> **功能成熟度权威清单见 `docs/STATUS.md`2026-07-09 整理)**。此处只保留 CEO 一页摘要。
- **质量 (M1.2)**: **147/147 已在 Linux ARM64 目标机验证**lib 105 + example 7 + m1_2_dynamic 15 + m1_2_http 12 + m1_2_service_manager 8零 warning2026-07-04 三提交亦已复验全绿
- **里程碑**: M1.1 ✅ · M1.2 ✅(仅差老板打 tag `m1.2`)· **M2.1 🟡 半成品**
- **DevicePlugin**: Display + SleepInhibit + Backlight + Cursor (Linux ARM64)
- **插件**: video / http / ble / wifi / device / screen / **live2d** / **ai**
- **Flutter App**: M1 控制能力可用;**M2.1 角色/对话/模型页已写代码、debug APK 已出(~146MB真机验收未闭环** → 见 STATUS.md §3.3
- **Web 控制端**: 已切到 `chat.html`/`chat.js`(角色/对话/模型入口有);非旧 WEB_UI 常量
- **BLE**: 广播注册已修(不可 LocalName + Includes 双设);设备 ActiveInstances=1 曾验证
- **AI**: 设备文字对话 API 实测可通;延迟/模型档位/失败体验仍需产品化
- **本机开发环境 (Mac)**: Flutter 3.44.5 + JDK17 + Android SDK36`~/.showen_dev_env`
### 已修复(本轮)
@@ -148,26 +151,30 @@ export PATH="/home/showen/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/bi
7. **Spike 结论2026-07-03 张明远实测,全表见 TEAM_CHAT.md**:可行。设备实为 Radxa Cubie A7AA7332×A78@2.0G + 6×A55@1.8G)。推荐默认 **Qwen2.5-0.5B Q4**16.4 t/s50字回复 ~3.4sRSS 985MGemma3-1B 可选档8.2 t/s**Gemma2-2B 本机不推荐**RSS 3.25G 触发 swap。硬约束**推理必须 t=2 锁大核**全核反而崩且挤死视频、严禁默认上下文长度、部署脚本必须带镜像回退。ASR whisper tiny ~2.2s(需 VAD 防静音幻觉、TTS piper RTF 0.3。端到端:串行热链 ~10s**流式管线首音频 ~5s**(达标"可接受"≤3s 需 A733 的 NPUPhase 2 路径)。现场保留 ~/ai_spike/ 3.5G 可复跑。
✅ PRD 完成docs/M2.1_PRD.md,三轮修订含老板三条补充)+ Spike 完成。进行中:架构设计(王思远)。素材依赖:数字人/歌姬内容包需视频素材,先用现有猫狗包验证切换机制。
✅ PRDdocs/M2.1_PRD.md+ Spike + 后端 AI/模型/角色 API + Web 控制台重构 + App M2.1 页面骨架。
**诚实结论**:能演示链路 ≠ 产品完成。详见 `docs/STATUS.md`
### 待处理
### 待处理(精简 · 2026-07-09
1. **[M1.2 收尾]** ✅ commit老板 2a6e14b→ ✅ 设备同步至 2a6e14b + cargo check 零 warning周雅婷 2026-07-03设备仅剩本地调参文件 configs/dog_state_machine.json 一处差异);**仅剩:老板打 tag建议在 2a6e14b 上打 `m1.2`**
2. ~~**[M1.2 收尾]** tests/m1_2_http.rs 过时注释更新~~ ✅ 赵雨薇完成2026-07-03纯注释改动核实点位后订正为"六种 plugin_* 闭环,唯 check_updates 结果回传属 Phase 2"注意此改动在第二轮验收之后commit 前设备端补一次 cargo check 即可
3. **[M1.2 收尾]** sanitize_filename 集成测试测的是逻辑复制而非产品函数,转正需产品侧小改动(改 pub 或 routes.rs 内加单测)— 赵雨薇上报
4. DevicePlugin 阶段三framebuffer迁移/触摸/音频/多平台)— Phase 2 规划
5. **[设备遗留-代码]** 单实例保护(锁文件/socket 互斥)+ unclutter 僵尸子进程 reap — 派内核/视频工程师
- ~~unclutter reap~~ ✅ 核查确认2026-07-04`linux_arm64.rs:238-254` shutdown() 已做 kill+wait+pkill 兜底,仅 SIGKILL 极端场景残留,不值得加 SIGCHLD handler
- **单实例保护**未做。需目标机实测锁文件行为Windows 开发环境无法验证留给设备端工程师。背景CLAUDE.md:136 记录的 3 实例 P0 已由赵雨薇移除多余自启入口修复,单实例锁是防御性双保险
6. ~~**[设备遗留-系统]** 时钟慢约一年 + 磁盘 9x% 满~~ ✅ 全部解决2026-07-03时钟 — 王浩然修复根因timesyncd 出厂未启用 + RTC hym8563 掉电失效标志;已配 aliyun NTP 持久化 + hwclock 恢复apt 复活重启验证开机即正确遗留RTC 备份电池未验证,冷启动需联网自愈);磁盘 — 赵雨薇两轮清理 96%→35%(删 Flutter/Android/编辑器/kilo 等 ~16G
7. **[环境]** 设备 SSH 已打通:`ssh -p 2222 showen@192.168.31.105` 免密2026-07-02 配置),目标机验收可远程执行
8. ~~**[代码质量-P2]** Shutdown 消息无生产触发者main.rs:117-120 Ctrl+C 只置 AtomicBool主循环阻塞在 rx.recv(),需等下一条任意消息才真正退出(王浩然发现)~~ ✅ 修复2026-07-04提交 ab1dd91三处改动 — run() recv()→recv_timeout(200ms)handle_manager_message Shutdown 分支置 self.running=falsemain.rs Ctrl+C handler 注入 Message::Shutdown。效果Ctrl+C 后最多 200ms 退出。**待目标机复验**
9. ~~**[Phase 2 清理]** SDK 文档教开发者监听永不触发的 WifiProvisioned (plugin-sdk/src/lib.rs:522)CursorVisibility 有消费无生产(实际链路已走 DeviceCommandcheck_updates 结果仅 println 不回传DeviceResponse 广播后核心无人读、Error 静默~~ ✅ 部分完成2026-07-04提交 38dcd21
- ✅ SDK 文档broadcast 示例换成 StateChanged新增 Phase 2 占位消息说明WifiProvisioned/DeviceEvent/CursorVisibility
- ✅ check_updates 结果回传:通过 Custom { kind: "plugin_updates" } 广播
- ✅ DeviceResponse::Error 留痕device/mod.rs handle_message 补 eprintln
- ⏳ CursorVisibility 变体:删除会破坏示例插件和测试,倾向 Phase 2 统一清理(保留现状)
10. ~~**[待复验]** 2026-07-04 三提交4d830c0 README / ab1dd91 P1 Shutdown fix / 38dcd21 P2 清理)仅过 rust-analyzer 类型检查,需在 Linux ARM64 目标机跑 `cargo check --workspace --all-targets && cargo test --workspace` 确认零 warning + 全测试通过~~ ✅ 目标机复验通过2026-07-04`cargo check` 零 warning`cargo test --workspace` 147/147 全过lib 105 + example 7 + m1_2_dynamic 15 + m1_2_http 12 + m1_2_service_manager 8P1 Shutdown 修复实测SIGINT 后 234ms 优雅退出exit_code=0修复前需等下一条消息可能永不退出
**P0 / M2.1 闭环**
1. **工作区提交**:本机有未提交的 BLE 修复 + HTTP 对话修补 + Flutter M2.1 页(老板提交,不代办)
2. **设备代码对齐 + 回归**:同步后 `cargo check/test --workspace`
3. **真机四旅程**:配网 → 角色切换 → 文字/语音对话 → 模型管理App + Web
4. **对话失败态产品化**AI 未就绪/超时/缺模型时客户端明确提示
**P1**
5. App 对话历史本地持久化、release APK
6. 模型下载进度与错误重试 UX
7. 数字人/歌姬素材PRD 外部依赖)
**P2 / 收尾**
8. **[M1.2]** 老板打 tag `m1.2`
9. sanitize_filename 测试转正单实例保护CursorVisibility 清理
10. DevicePlugin 阶段三framebuffer/触摸/音频/多平台)— 更后
**环境**
- 设备:`ssh -p 2222 showen@192.168.31.105` · Web `http://192.168.31.105:5000/`
- 本机 Flutter`source ~/.showen_dev_env`
---
@@ -228,12 +235,14 @@ export PATH="/home/showen/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/bi
| 需要做什么 | 读什么文件 |
|-----------|-----------|
| **功能成熟度 / 不完善清单** | **`docs/STATUS.md`** |
| CEO 深层经验和管理方法论 | `souls/chen-yifei.md` |
| 查看团队最新动态/沟通 | `.showen/TEAM_CHAT.md` |
| 查看/修改公司详细规范 | `.showen/COMPANY_RULES.md` |
| 评估团队绩效/制度详情 | `docs/TEAM.md` |
| 查看工作流程/审核标准 | `docs/WORKFLOW.md` |
| 查看提交历史 | `PROGRESS.md` |
| 里程碑摘要 | `PROGRESS.md` |
| M2.1 产品需求 | `docs/M2.1_PRD.md` |
| 派发任务给 PM | `.showen/inbox/pm.md` |
| 查看某成员详情 | `souls/<name>.md` |
| 代码审核参考 | `docs/CODE_REVIEW.md` |