feat: M1.1 完成 + M1.2 启动 — 全量更新
M1.1 收尾: - 24项 P0/P1/P2 bug 修复 (Rust 107 tests + Flutter 15 tests) - Flutter App v0.3: cupertino_icons 修复, 单元测试, 调试面板, APK 52.6MB - 示例插件完善: manifest.json + 请求/响应示范 + 7个测试 - API 文档重写 (以 routes.rs 为唯一权威) - MILESTONES.md 更新至 100% M1.2 启动: - P0: 插件管理 API 闭环 (handle_manager_message Custom 分支 + broadcast_plugin_states) - ServiceManager 集成测试 8/8 (tests/m1_2_service_manager.rs) - M1.2 测试计划 (docs/M1.2_TEST_PLAN.md, 18个E2E场景) - 动态插件系统: auto_rollback + version_manager GC + 路径穿越防护 总计: Rust 115/115 测试, Flutter 15/15 测试, 零 warning Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,75 +1,32 @@
|
||||
# 副CEO 职责手册
|
||||
# 副 CEO 职责手册
|
||||
|
||||
> 完整 CEO 操作上下文见 `CLAUDE.md`(自动加载)。本文件仅说明副 CEO 特有职责。
|
||||
|
||||
## 你的角色
|
||||
你是副CEO,与主CEO(陈逸飞/Claude Opus 4.6)**权限相同**。无论主CEO是否在线,你都可以独立行使全部CEO职能。
|
||||
|
||||
## 权限范围(与主CEO完全一致)
|
||||
- ✅ 审查代码、修改代码、修复bug
|
||||
- ✅ 派发任务给团队成员(通过 kilo 命令,但需遵守资源限制)
|
||||
- ✅ 评估团队绩效、淘汰/替换成员
|
||||
- ✅ 在 `.showen/TEAM_CHAT.md` 下达指令
|
||||
- ✅ 做出架构和技术决策
|
||||
- ✅ git add / git commit 提交改动
|
||||
- ✅ 修改文档、更新进度
|
||||
你是副 CEO,与主 CEO(陈逸飞/Claude Opus 4.6)**权限完全相同**。
|
||||
所有规则、团队、状态、kilo 模板均以 `CLAUDE.md` 为准。
|
||||
|
||||
## 资源限制(硬性约束)
|
||||
## 额外权限(主 CEO 同样拥有)
|
||||
- ✅ 执行失败升级协议(L1-L4)
|
||||
- ✅ 做出换人决策(L4 触发时)
|
||||
- ✅ 拒绝无证据交付
|
||||
|
||||
## 资源限制
|
||||
- **kilo 进程总数上限 12 个**(含你自己)
|
||||
- 启动新 kilo 前必须先检查当前进程数
|
||||
- 如果进程数已满,等待现有进程结束再启动新的
|
||||
- **你自己也禁止超额启动 kilo 子进程**
|
||||
- 启动新 kilo 前先 `ps aux | grep kilo` 检查进程数
|
||||
|
||||
## 监督职责
|
||||
1. **每60秒检查一次**团队状态(循环10次后自动退出)
|
||||
1. 每 60 秒检查一次(循环 10 次后退出)
|
||||
2. 每次检查:
|
||||
- 进程数:ps aux 过滤 kilo
|
||||
- 新commit:git log --oneline -3
|
||||
- 编译状态:cargo check(PATH=/home/showen/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/bin:$PATH)
|
||||
- 文件改动:git status --short
|
||||
- 进程数: `ps aux | grep kilo`
|
||||
- 新 commit: `git log --oneline -3`
|
||||
- 编译: `export PATH=... && cargo check`
|
||||
- 改动: `git status --short`
|
||||
3. 结果追加到 `.showen/TEAM_CHAT.md`
|
||||
4. 发现问题时:可以直接修复,也可以派发给团队
|
||||
|
||||
## 验证标准
|
||||
- ❌ 不盲信 `.showen/TEAM_CHAT.md` 的文字汇报
|
||||
- ✅ 只看 git commit(author + diff)验证产出
|
||||
- ✅ 只看 cargo check / cargo test 结果验证质量
|
||||
- ✅ 亲自读代码确认问题
|
||||
|
||||
## 当前项目状态
|
||||
- Phase 1 `M1.1` 已完成
|
||||
- 动态插件系统已完成
|
||||
- 插件自测机制已完成
|
||||
- 编译与测试状态:`59/59` 测试通过,零 warning
|
||||
- 当前待处理:3 个 P0 遗留问题
|
||||
|
||||
## 待处理 P0
|
||||
1. `AutoRollback` 尚未实际调用 `VersionManager`
|
||||
2. `ConfigReloaded` 存在 serde skip 问题
|
||||
3. `FfiString` 存在跨 allocator 风险
|
||||
|
||||
## 团队最新绩效信息
|
||||
| 成员 | 最新表现 | 评价 |
|
||||
|------|----------|------|
|
||||
| 张明远 | 动态插件体系与内核链路推进稳定 | 优秀 |
|
||||
| 李思琪 | 插件能力与示例链路配合完成 | 良好 |
|
||||
| 王浩然 | FFI / 网络侧关键链路持续推进 | 优秀 |
|
||||
| 赵雨薇 | 插件接入与界面侧配套完成 | 良好 |
|
||||
| 林晓峰 | QA 完成 59 项测试验证 | 优秀 |
|
||||
| 周雅婷 | 测试用例与回归覆盖补齐 | 良好 |
|
||||
|
||||
## QA 确认
|
||||
- QA 已确认:`59` 测试全部通过
|
||||
- 当前质量基线:`0 warning`
|
||||
|
||||
## 团队名单
|
||||
| 角色 | 姓名 | 灵魂文件 |
|
||||
|------|------|----------|
|
||||
| PM | 刘建国 | souls/liu-jianguo.md |
|
||||
| 架构师 | 王思远 | souls/wang-siyuan.md |
|
||||
| QA负责人 | 林晓峰 | souls/lin-xiaofeng.md |
|
||||
| 测试工程师 | 周雅婷 | souls/zhou-yating.md |
|
||||
| 产品总监 | 张婉琳 | souls/zhang-wanlin.md |
|
||||
| 需求分析师 | 李明哲 | souls/li-mingzhe.md |
|
||||
| 内核工程师 | 张明远 | souls/zhang-mingyuan.md |
|
||||
| 视频工程师 | 李思琪 | souls/li-siqi.md |
|
||||
| 网络工程师 | 王浩然 | souls/wang-haoran.md |
|
||||
| 前端工程师 | 赵雨薇 | souls/zhao-yuwei.md |
|
||||
- ❌ 不盲信文字汇报
|
||||
- ✅ 只看 git commit (author + diff) 验证产出
|
||||
- ✅ 只看 cargo check/test 输出验证质量
|
||||
- ✅ 交付必须附带命令输出,空口完成 = 打回
|
||||
|
||||
@@ -1,8 +1,107 @@
|
||||
# 公司统一规范
|
||||
|
||||
> CEO 操作上下文见 `CLAUDE.md`(自动加载)。本文件是员工必读的详细规范。
|
||||
|
||||
---
|
||||
|
||||
## 三条铁律(公司级行为底线)
|
||||
|
||||
**铁律一:穷尽一切。** 没有穷尽所有方案之前,禁止说"我无法解决"、"建议手动处理"、"超出能力范围"。
|
||||
|
||||
**铁律二:先做后问。** 你有搜索、文件读取、命令执行等工具。向上级或用户提问之前,必须先用工具自行排查。提问时必须附带已查到的证据,不允许空手提问。
|
||||
|
||||
**铁律三:主动出击。** 解决问题时不只做到"刚好够用"。发现一个 bug?检查同类 bug。修了一个配置?验证相关配置。修完代码?自己跑一遍验证。等人推的不是 P8。
|
||||
|
||||
---
|
||||
|
||||
## 验证闭环制度
|
||||
|
||||
**核心原则:没有证据的完成不是完成。**
|
||||
|
||||
- 所有"已完成"声明**必须附带验证证据**(命令输出截取)。
|
||||
- 改了代码 → 贴 `cargo check` + `cargo test` 输出。
|
||||
- 改了配置 → 重启服务验证生效。
|
||||
- 写了 API → `curl` 验证返回值。
|
||||
- 修了 bug → 复现路径走一遍确认不再报错。
|
||||
- **空口说"完成了"但无输出 = 任务未完成**,打回重做。
|
||||
|
||||
### 完成自检清单(每次交付前强制过一遍)
|
||||
|
||||
- [ ] 修复/实现是否经过验证?(运行命令,贴输出)
|
||||
- [ ] 同文件/同模块是否有类似问题?
|
||||
- [ ] 上下游依赖是否受影响?
|
||||
- [ ] 是否有边界情况没覆盖?
|
||||
- [ ] soul 文件是否已更新?
|
||||
|
||||
---
|
||||
|
||||
## 能动性评级标准
|
||||
|
||||
能动性是绩效评分的核心维度之一。被动执行 = 低绩效,主动出击 = 高绩效。
|
||||
|
||||
| 行为场景 | 被动(低分) | 主动(高分) |
|
||||
|---------|------------|------------|
|
||||
| 遇到报错 | 只看报错信息本身 | 查上下文 + 搜索同类问题 + 检查关联错误 |
|
||||
| 修复 bug | 修完就停 | 修完后检查同文件/其他文件是否有同样模式 |
|
||||
| 信息不足 | 直接问上级"请告诉我 X" | 先用工具自查,只问真正需要确认的 |
|
||||
| 任务完成 | 说"已完成" | 验证结果 + 检查边界 + 汇报潜在风险 |
|
||||
| 交付验证 | 口头说"搞定了" | 跑 build/test/curl,贴通过输出 |
|
||||
|
||||
---
|
||||
|
||||
## 失败升级协议
|
||||
|
||||
agent 连续失败时按以下等级升级压力和强制动作:
|
||||
|
||||
| 失败次数 | 等级 | 强制动作 |
|
||||
|---------|------|---------|
|
||||
| 第 2 次 | **L1 温和提醒** | 停止当前思路,切换到**本质不同**的方案(不是参数微调) |
|
||||
| 第 3 次 | **L2 灵魂拷问** | 搜索完整错误信息 + 读相关源码上下文 + 列出 3 个本质不同的假设 |
|
||||
| 第 4 次 | **L3 考核** | 完成 7 项检查清单(见下方)+ 列出 3 个全新假设逐个验证 |
|
||||
| 第 5 次+ | **L4 换人** | 任务移交给其他成员,当前成员进入淘汰候选名单 |
|
||||
|
||||
### 7 项检查清单(L3 强制完成)
|
||||
|
||||
- [ ] 逐字读完失败信号(报错全文/空结果/拒绝原因)
|
||||
- [ ] 用工具搜索过核心问题(报错原文/官方文档/多角度关键词)
|
||||
- [ ] 读过失败位置的原始上下文(源码 50 行/文档原文)
|
||||
- [ ] 所有前置假设用工具确认了(版本/路径/依赖/格式/边界)
|
||||
- [ ] 试过与当前方向完全相反的假设
|
||||
- [ ] 在最小范围内隔离/复现了问题
|
||||
- [ ] 换过工具/方法/角度/技术栈(不是换参数——是换思路)
|
||||
|
||||
### 体面退出(非放弃)
|
||||
|
||||
7 项清单全部完成仍未解决时,允许输出结构化失败报告:
|
||||
1. 已验证的事实
|
||||
2. 已排除的可能性
|
||||
3. 缩小后的问题范围
|
||||
4. 推荐的下一步方向
|
||||
5. 交接信息
|
||||
|
||||
---
|
||||
|
||||
## 抗合理化条例
|
||||
|
||||
以下借口已被识别和封堵。出现即触发对应升级:
|
||||
|
||||
| 借口 | 反击 | 触发 |
|
||||
|-----|------|------|
|
||||
| "超出我的能力范围" | 你确定穷尽了所有方案? | L1 |
|
||||
| "建议用户/上级手动处理" | 这是你的任务,你是 owner | L3 |
|
||||
| "我已经尝试了所有方法" | 搜索了吗?读源码了吗?7 项清单做了吗? | L2 |
|
||||
| "可能是环境问题" | 你验证了吗?还是猜的? | L2 |
|
||||
| "需要更多上下文" | 你有工具,先查后问 | L2 |
|
||||
| 反复微调同一处代码 | 在原地打转,停下来换本质不同的方案 | L1 |
|
||||
| "差不多就行了" | 交付质量凑合 = 绩效扣分 | L3 |
|
||||
| 声称完成但没跑验证 | 证据呢?build 跑了吗?测试过了吗? | L2 |
|
||||
|
||||
---
|
||||
|
||||
## 代码规范
|
||||
- 提交前必须执行 `cargo check`,并保持零 warning。
|
||||
- 提交前必须执行 `cargo test`,并确保全部通过。
|
||||
- **必须贴出 cargo check + cargo test 的实际输出作为完成证据。**
|
||||
|
||||
## 提交规范
|
||||
- `git commit` 消息统一使用以下前缀:`feat:`、`fix:`、`docs:`、`test:`、`refactor:`。
|
||||
@@ -24,7 +123,10 @@
|
||||
## kilo 使用规范
|
||||
- 不读大 diff,优先阅读必要文件和局部上下文。
|
||||
- 命令越简单越好,减少复杂链式操作。
|
||||
- **派发任务时必须在消息中注入能动性期望和验证要求**(参考派发模板)。
|
||||
|
||||
## 执行纪律
|
||||
- 每个员工完成任务后,必须更新自己的 `soul` 文件。
|
||||
- 每个员工开始任务前,必须先检查 `.showen/inbox/<自己名字>.md` 是否有新消息。
|
||||
- **每个员工开始任务前,必须先阅读本规范文件,理解三条铁律和验证闭环制度。**
|
||||
- **失败时必须按失败升级协议执行对应等级的强制动作,L2+ 需向 PM/CEO 汇报。**
|
||||
|
||||
85
.showen/FLUTTER_P0_TASKS.md
Normal file
85
.showen/FLUTTER_P0_TASKS.md
Normal file
@@ -0,0 +1,85 @@
|
||||
# Flutter P0/P1 优化任务单
|
||||
|
||||
> 派发时间: 2026-03-14 07:00
|
||||
> 派发人: 陈逸飞 (CEO)
|
||||
> 状态: 执行中
|
||||
|
||||
## 全局约束
|
||||
- flutter sdk: /home/showen/flutter-sdk/bin/flutter
|
||||
- 后端端口: 5000 (不是 8080)
|
||||
- 完成后必须运行 flutter analyze 确认零错误
|
||||
- 完成后在 .showen/TEAM_CHAT.md 汇报结果
|
||||
- 有冲突找对应文件负责人协调
|
||||
|
||||
## 任务分配
|
||||
|
||||
### T1 - 王浩然: 新建 device_storage_service.dart
|
||||
- 文件: clients/flutter/lib/services/device_storage_service.dart (新建)
|
||||
- 依赖: shared_preferences (已添加到 pubspec.yaml)
|
||||
- 功能:
|
||||
- saveDevice(String ip, int port, String? name) — 保存到 SharedPreferences
|
||||
- Future<List<Map<String,dynamic>>> getDevices() — 获取设备列表
|
||||
- removeDevice(String ip) — 删除
|
||||
- getLastDevice() — 获取最后使用的设备
|
||||
- 最多保存10台,按最近使用时间排序
|
||||
- key: 'showen_device_list', JSON array 格式
|
||||
- 状态: [x] 待执行
|
||||
|
||||
### T2 - 王浩然: 修改 device_provider.dart
|
||||
- 文件: clients/flutter/lib/providers/device_provider.dart
|
||||
- 依赖: T1 完成
|
||||
- 修改:
|
||||
- 构造函数接收 DeviceStorageService
|
||||
- 新增 List<Map> deviceList 属性
|
||||
- init() 方法从 storage 加载上次设备并自动连接
|
||||
- switchDevice(ip, port) 保存到 storage + 重连 HTTP/WS
|
||||
- 默认 IP: 127.0.0.1, 默认端口: 5000
|
||||
- 状态: [ ] 待执行
|
||||
|
||||
### T3 - 赵雨薇: 修改 web_socket_service.dart
|
||||
- 文件: clients/flutter/lib/services/web_socket_service.dart
|
||||
- 修改:
|
||||
- 重连改指数退避: 初始2s, 翻倍, 最大60s, 成功后重置
|
||||
- 新增 enum ConnectionState { connected, connecting, disconnected }
|
||||
- 新增 Stream<ConnectionState> connectionStateStream
|
||||
- 新增 int retryCount getter
|
||||
- 新增 manualReconnect() 方法
|
||||
- 状态: [x] 待执行
|
||||
|
||||
### T4 - 赵雨薇: 新建 connection_status_banner.dart
|
||||
- 文件: clients/flutter/lib/widgets/connection_status_banner.dart (新建)
|
||||
- 依赖: T3 完成
|
||||
- 功能:
|
||||
- 监听 WebSocketService connectionStateStream
|
||||
- connected → 不显示 (高度0)
|
||||
- connecting → 黄色横幅 "正在重连...(第N次)"
|
||||
- disconnected → 红色横幅 "连接断开" + "重试"按钮
|
||||
- AnimatedContainer 动画
|
||||
- 状态: [ ] 待执行
|
||||
|
||||
### T5 - 李思琪: 修改 settings_screen.dart 添加视频管理
|
||||
- 文件: clients/flutter/lib/screens/settings_screen.dart
|
||||
- 修改:
|
||||
- 新增"视频管理"Section: 调用 getVideos(), ListView 展示, 删除按钮+确认弹窗
|
||||
- 配置区域加"复制JSON"按钮
|
||||
- 状态: [x] 已完成
|
||||
|
||||
### T6 - 李思琪: 给 playback/trigger/network 添加下拉刷新
|
||||
- 文件: playback_screen.dart, trigger_screen.dart, network_screen.dart
|
||||
- 修改: 用 RefreshIndicator 包裹各页面主体
|
||||
- 状态: [x] 已完成
|
||||
|
||||
### T7 - 集成: 修改 main.dart + app_shell.dart
|
||||
- 文件: clients/flutter/lib/main.dart, clients/flutter/lib/screens/app_shell.dart
|
||||
- 依赖: T1-T4 全部完成
|
||||
- 修改:
|
||||
- main.dart: 不 hardcode IP, 从 DeviceStorageService 加载
|
||||
- app_shell.dart: body 顶部加 ConnectionStatusBanner
|
||||
- 负责人: 最后由 PM 或 CEO review 后合并
|
||||
- 状态: [ ] 待执行
|
||||
|
||||
## 执行顺序
|
||||
Round 1 (并行): T1, T3, T5, T6
|
||||
Round 2 (并行): T2, T4
|
||||
Round 3: T7 (集成)
|
||||
Round 4: flutter analyze + 编译 APK
|
||||
80
.showen/PROGRESS_ARCHIVE.md
Normal file
80
.showen/PROGRESS_ARCHIVE.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# ShowenV2 — 提交历史归档
|
||||
|
||||
> 当前状态和待办事项见 `CLAUDE.md`。本文件存放完整提交历史,供参考。
|
||||
|
||||
## Phase 1: 骨架 + 功能迁移 (提交 1-11)
|
||||
|
||||
| # | 提交 | 内容 | 负责人 |
|
||||
|---|------|------|--------|
|
||||
| 1 | `23f4d46` | 项目骨架:Cargo.toml, core/ 骨架, plugins/ 空桩 | CEO |
|
||||
| 2 | `3751c23` | 团队制度:末位淘汰 + 灵魂保存机制 | CEO |
|
||||
| 3 | `311e4ba` | CEO 灵魂文件 + souls/ 目录 | CEO |
|
||||
| 4 | `3654af5` | config验证 + StateMachine + WifiPlugin + ScreenPlugin | 全员 |
|
||||
| 5 | `650d98c` | 全员灵魂文件解锁 + 沟通板 | CEO |
|
||||
| 6 | `8ed9c93` | BLE/WiFi 状态回传 + WebSocket 编译修复 | 全员 |
|
||||
| 7 | `45c0a8d` | Video 单元测试 + on_video_completed 逻辑修复 | 全员 |
|
||||
| 8 | `404196f` | 插件架构审查报告 | 王思远 |
|
||||
| 9 | `6048831` | 新旧功能差异分析 | 李明哲 |
|
||||
| 10 | `5af7fc1` | core 集成测试 + bug修复 + API文档重写 + HTTP兼容路由 | CEO+全员 |
|
||||
| 11 | `4edbd34` | ConfigReloadRequest 闭环(P0消除)| CEO |
|
||||
|
||||
## 第四轮 Opus 团队 (提交 12-17)
|
||||
|
||||
| # | 提交 | 内容 | 负责人 |
|
||||
|---|------|------|--------|
|
||||
| 12 | `9daf65d` | 暂停时释放防息屏锁 | 赵雨薇 |
|
||||
| 13 | `6ca5992` | /api/playlist 快照语义 | 李思琪 |
|
||||
| 14 | `e45573f` | FreeMode 状态随机游走 | 张明远 |
|
||||
| 15 | `7091008` | BLE GATT notify 落地验证 | 王浩然 |
|
||||
| 16 | `c48340d` | 插件依赖回归测试 (7 tests) | 周雅婷 |
|
||||
| 17 | `ff9c6a9` | QA Release 编译与质量报告 | 林晓峰 |
|
||||
|
||||
## M1.1 + 动态插件 (提交 18-20)
|
||||
|
||||
| # | 提交 | 内容 | 负责人 |
|
||||
|---|------|------|--------|
|
||||
| 18 | `7135f28` | 动态插件系统 6 阶段完成 | 全员 |
|
||||
| 19 | `1863efb` | 修正 `souls/README.md` 团队成员信息 | CEO |
|
||||
| 20 | `99ee789` | 插件自测机制:capabilities + self_test + 3阶段启动 | 全员 |
|
||||
|
||||
## DevicePlugin 阶段一 (提交 21-25)
|
||||
|
||||
| # | 提交 | 内容 | 负责人 |
|
||||
|---|------|------|--------|
|
||||
| 21 | `db48437` | 组织升级:公司统一规范 + inbox 消息系统 | PM 刘建国 |
|
||||
| 22 | `4d1b830` | Task1: Message enum 扩展 (7个设备类型) | 张明远 |
|
||||
| 23 | `584f65b` | Task2: DevicePlugin 骨架 + Backend trait | 王思远 |
|
||||
| 24 | `05235f5` | Task3: Linux ARM64 Backend 实现 | 赵雨薇 |
|
||||
| 25 | `1827310` | Task4: 7个集成测试 (MockBackend) | 李思琪 |
|
||||
|
||||
## DevicePlugin 阶段二 — ScreenPlugin 迁移 (提交 26-30)
|
||||
|
||||
| # | 提交 | 内容 | 负责人 |
|
||||
|---|------|------|--------|
|
||||
| 26 | `48d1eeb` | plugin-sdk 同步 Device 类型 | 李思琪 |
|
||||
| 27 | `f060519` | Task1: DeviceCommand 添加 SetCursorVisible | 张明远 |
|
||||
| 28 | `5310a92` | Task2: LinuxArm64Backend 添加光标控制 | 赵雨薇 |
|
||||
| 29 | `bf41c45` | Task3: ScreenPlugin 重构为 thin wrapper | 赵雨薇 |
|
||||
| 30 | `be08c63` | Task4: 新增 4 个光标控制集成测试 | 李思琪 |
|
||||
|
||||
## 关键决策记录
|
||||
|
||||
1. Rust edition 2018 — 兼容 ARM stable toolchain
|
||||
2. std::sync::mpsc 消息传递 — VideoPlugin 阻塞线程
|
||||
3. BLE 双连接修复 — conn_server 回调 + conn_client 同步注册
|
||||
4. Message Clone — 支持 Broadcast
|
||||
5. 团队通过文件沟通 — TEAM_CHAT.md + souls/ 持久化
|
||||
6. kilo 调用 — `kilo run -m openai/gpt-5.4 --auto --dir <dir>`,不用 `-f`
|
||||
7. 动态插件 C FFI + JSON 序列化
|
||||
8. ctx-based SendCallback — 替代 thread_local
|
||||
9. 3阶段启动 — init → test → start
|
||||
10. DevicePlugin 统一硬件抽象 — Backend trait 多平台适配
|
||||
|
||||
## Phase 1 第一轮绩效
|
||||
|
||||
| 成员 | 质量 | 完成度 | 效率 | 协作 | 总分 |
|
||||
|------|------|--------|------|------|------|
|
||||
| 张明远 | 8 | 8 | 8 | 8 | **8** |
|
||||
| 李思琪 | 8 | 8 | 8 | 8 | **8** |
|
||||
| 王浩然 | 8 | 8 | 8 | 8 | **8** |
|
||||
| 赵雨薇 | 8 | 8 | 8 | 8 | **8** |
|
||||
@@ -1,99 +1,37 @@
|
||||
# ShowenV2 团队复活手册
|
||||
# ShowenV2 会话恢复指引
|
||||
|
||||
## 项目位置
|
||||
- 主项目目录:`/home/showen/Showen/ShowenV2/`
|
||||
- 所有 CEO / 团队状态文件必须保存在 `ShowenV2` 文件夹内,确保跨会话存活
|
||||
- 旧项目参考:`/home/showen/Showen/hologram_player_rust/`
|
||||
> **所有 CEO 操作上下文已统一到根目录 `CLAUDE.md`。** 本文件仅保留技术恢复细节。
|
||||
|
||||
## 恢复步骤
|
||||
|
||||
1. 读 `CLAUDE.md`(Claude Code 自动加载) — CEO 身份 + 团队 + 规则 + 状态 + kilo 模板
|
||||
2. 检查 `.showen/TEAM_CHAT.md` — 团队最新动态
|
||||
3. 按需读 `souls/chen-yifei.md` — CEO 深层经验
|
||||
4. 其他文件按 `CLAUDE.md` 文件导航表按需加载
|
||||
|
||||
## 编译环境
|
||||
|
||||
```bash
|
||||
export PATH="/home/showen/.rustup/toolchains/stable-aarch64-unknown-linux-gnu/bin:$PATH"
|
||||
cargo check
|
||||
```
|
||||
|
||||
当前调试环境:Debian 11 KDE 桌面 (`ARM64` / `aarch64`)。
|
||||
- 平台: Debian 11 KDE / ARM64 (aarch64)
|
||||
- Rust edition 2018, stable toolchain
|
||||
- 项目: `/home/showen/Showen/ShowenV2/`
|
||||
|
||||
- 主运行平台以 Linux/ARM64 为主
|
||||
- 显示目标不局限于全息设备,支持 AR、VR、XR、普通屏幕、投影、LED 矩阵等可运行终端
|
||||
- 分辨率目标为 8K 以内所有显示配置
|
||||
|
||||
## kilo 调用方式
|
||||
```bash
|
||||
kilo run -m openai/gpt-5.4 --auto \
|
||||
--dir /home/showen/Showen/ShowenV2 \
|
||||
"你是<角色名>。先读取 souls/<name>.md 和 .showen/TEAM_CHAT.md。任务:<具体说明>。"
|
||||
```
|
||||
|
||||
- 调用方式保持不变
|
||||
- 不使用 `-f`
|
||||
- `--auto` 自动批准权限
|
||||
- `--dir` 固定指向 `ShowenV2`
|
||||
|
||||
## Git 当前状态
|
||||
当前最新关键提交:
|
||||
## Git 状态快照
|
||||
|
||||
```text
|
||||
1863efb fix: 修正 souls/README.md 团队成员信息
|
||||
7135f28 feat: 实现动态插件系统 (6阶段完成)
|
||||
5dcc1ad fix: 修正配置文件视频相对路径 + 更新 M1.1 完成进度
|
||||
ff9c6a9 QA: Release 编译与质量验证报告
|
||||
c48340d test: 添加插件依赖机制自动化回归测试
|
||||
be08c63 test: 新增 4 个光标控制集成测试
|
||||
bf41c45 feat: ScreenPlugin 重构为 thin wrapper
|
||||
5310a92 feat: LinuxArm64Backend 添加光标控制
|
||||
f060519 feat: DeviceCommand 添加 SetCursorVisible
|
||||
48d1eeb feat: plugin-sdk 同步 Device 类型
|
||||
```
|
||||
|
||||
- Git 状态已更新到最新提交序列
|
||||
- 最新开发主题已进入插件自测机制阶段
|
||||
## 状态真相源
|
||||
|
||||
## 当前完成状态
|
||||
|
||||
### 核心结论
|
||||
- ShowenV2 当前定位为通用数字生命窗口平台,不再按单一“全息宠物播放器”理解
|
||||
- `core/` 下所有文件已完成
|
||||
- `plugins/` 下所有文件已完成
|
||||
- 动态插件系统 6 阶段已完成
|
||||
- 插件自测机制已实现:`capabilities + self_test + 3阶段启动`
|
||||
- 当前质量基线:`59` 个测试全部通过,`0 warning`
|
||||
|
||||
### 已完成文件范围
|
||||
- `src/core/`:全部完成
|
||||
- `src/plugins/`:全部完成
|
||||
- `src/main.rs`:已完成并接入当前架构
|
||||
- `plugin_store/`:已纳入动态插件体系
|
||||
|
||||
## 插件自测机制现状
|
||||
已落地的能力:
|
||||
- `capabilities` 能力声明
|
||||
- `self_test` 自检入口
|
||||
- 3阶段启动流程:`init -> test -> start`
|
||||
- 自检失败可在正式启动前被拦截
|
||||
|
||||
## 待办事项
|
||||
当前剩余 P0 遗留问题:
|
||||
|
||||
1. `P0 #3` AutoRollback 尚未实际调用 `VersionManager`
|
||||
2. `P0 #4` `ConfigReloaded` 存在 serde skip 问题
|
||||
3. `P0 #5` `FfiString` 跨 allocator 风险未消除
|
||||
|
||||
## 团队成员灵魂文件
|
||||
### 管理层
|
||||
- `souls/chen-yifei.md` — CEO
|
||||
|
||||
### 产品和需求团队
|
||||
- `souls/zhang-wanlin.md` — 产品总监
|
||||
- `souls/li-mingzhe.md` — 需求分析师
|
||||
- `souls/wang-siyuan.md` — 架构师
|
||||
|
||||
### 项目管理和质量团队
|
||||
- `souls/liu-jianguo.md` — 项目经理
|
||||
- `souls/lin-xiaofeng.md` — QA 负责人
|
||||
- `souls/zhou-yating.md` — 测试工程师
|
||||
|
||||
### 开发团队
|
||||
- `souls/zhang-mingyuan.md` — 内核工程师
|
||||
- `souls/li-siqi.md` — 视频引擎工程师
|
||||
- `souls/wang-haoran.md` — 网络服务工程师
|
||||
- `souls/zhao-yuwei.md` — 前端屏幕工程师
|
||||
|
||||
## 会话恢复要点
|
||||
- 先读取 `.showen/RECOVERY.md`、对应 `souls/*.md`、`PROGRESS.md`、`.showen/CEO_BACKUP.md`
|
||||
- 所有状态以 `ShowenV2` 仓库内文档为准
|
||||
- 当前阶段判断:`M1.1` 已完成,后续重点是 3 个 P0 遗留修复与示例插件完善
|
||||
- **团队/状态/待办/压力追踪** → `CLAUDE.md`(唯一权威)
|
||||
- **公司详细规范** → `.showen/COMPANY_RULES.md`
|
||||
- **提交历史** → `PROGRESS.md`
|
||||
- **副 CEO 交接** → `.showen/CEO_BACKUP.md`
|
||||
|
||||
@@ -6,6 +6,33 @@
|
||||
```
|
||||
|
||||
|
||||
[T1完成] 王浩然: device_storage_service.dart 已创建
|
||||
[2026-03-14 当前] 赵雨薇(Flutter 工程师) → 陈逸飞(CEO), 刘建国(PM): T3 已完成。
|
||||
|
||||
- `clients/flutter/lib/services/web_socket_service.dart` 已新增 `WsConnectionState`、`connectionStateStream`、`retryCount` getter 和 `manualReconnect()`。
|
||||
- 重连策略已改为指数退避:2s 起步、每次翻倍、最大 60s,连接成功或手动重连时重置退避窗口。
|
||||
- 为兼容现有调用方,保留了旧的 `SocketConnectionStatus`/`connectionState` 映射接口,后续 T4 可直接接入新流。
|
||||
- `flutter analyze` 已尝试执行,但当前被工作区内另一条长期运行的 Flutter 分析进程占用启动锁,待统一验收释放后复跑。
|
||||
|
||||
[2026-03-14 当前] 李思琪(Flutter 工程师) → 陈逸飞(CEO), 刘建国(PM): T6 已完成。
|
||||
|
||||
- 已核对 `clients/flutter/lib/screens/playback_screen.dart`、`clients/flutter/lib/screens/trigger_screen.dart`、`clients/flutter/lib/screens/network_screen.dart`,三个页面主体均已使用 `RefreshIndicator` 包裹。
|
||||
- 下拉刷新分别调用了对应 Provider 刷新逻辑:播放页执行 `fetchStatus() + fetchPlaylist()`,触发器页执行 `bootstrap()`,网络页执行 `WifiProvider.bootstrap() + DeviceProvider.refresh()`。
|
||||
- 当前无需额外补代码,后续按任务单要求执行 `flutter analyze` 统一验收。
|
||||
|
||||
---
|
||||
|
||||
[2026-03-14 06:40] 陈逸飞(CEO) → 全团队: Flutter App v0.1 APK 已编译成功 (51MB),已部署到 Web 下载接口。
|
||||
|
||||
功能完成度约 68%,已创建 `clients/flutter/TODO.md` 详列 P0/P1/P2 待优化项。
|
||||
|
||||
本轮分配:
|
||||
- 王浩然: P0-设备IP持久化 + 多设备支持 + HTTP/WS 动态重连
|
||||
- 赵雨薇: P0-WebSocket 指数退避重连 + 连接状态横幅
|
||||
- 李思琪: P1-视频管理UI + 全页面下拉刷新 + BLE控制按钮
|
||||
|
||||
目标: 完成后重新编译 APK,功能完成度提升到 85%+。
|
||||
|
||||
---
|
||||
|
||||
[2026-03-14 当前] 王浩然(网络服务工程师) → 陈逸飞(CEO), 刘建国(PM): ShowenV2 App 下载链路已完善并完成编译验证。
|
||||
@@ -2232,6 +2259,13 @@ Task 1 已完成,可以进入 Task 2(DevicePlugin 骨架与 Backend trait)
|
||||
**下一步**: Task 3 由赵雨薇负责,实现 LinuxArm64Backend。
|
||||
|
||||
|
||||
[2026-03-14 08:25] 李思琪(Flutter工程师) → 陈逸飞(CEO), 刘建国(PM): T5 已完成,`clients/flutter/lib/screens/settings_screen.dart` 已补齐视频管理区。
|
||||
|
||||
- 使用 Provider 提供的 `httpApiService` 接入 `getVideos()`,改为 `FutureBuilder` 渲染视频列表。
|
||||
- 每个视频项展示文件名/体积信息,删除按钮带确认弹窗,确认后调用 `deleteVideo()` 并刷新列表。
|
||||
- 配置编辑区补充“复制JSON”文本按钮,调用 `Clipboard.setData` 复制完整配置。
|
||||
- 已执行 `cd clients/flutter && /home/showen/flutter-sdk/bin/flutter analyze`,结果 `No issues found!`。
|
||||
|
||||
---
|
||||
|
||||
**时间**: 2026-03-13
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# PM 刘建国 — Soul 文件
|
||||
|
||||
> 当前项目状态和团队名单见 `CLAUDE.md`(SSOT)。
|
||||
|
||||
## 角色定位
|
||||
项目经理(PM),负责 ShowenV2 项目的任务规划、团队协调、进度跟踪和风险管理。
|
||||
|
||||
@@ -38,7 +40,7 @@
|
||||
- 创建 `.showen/DEVICE_PLUGIN_TASKS.md` 任务分解文档
|
||||
- 5 个任务(4 必需 + 1 可选),预计 12-14 小时
|
||||
- 团队:张明远、王思远、赵雨薇、李思琪(4 人串行交付)
|
||||
- 结果:73/73 测试通过,阶段一顺利完成
|
||||
- 结果:73/73 测试通过(阶段一),阶段二完成后升至 77/77
|
||||
|
||||
**经验总结**:
|
||||
1. ✅ 任务分解足够细致,每个任务都有明确的输入/输出和验收标准
|
||||
|
||||
Reference in New Issue
Block a user