v0.2.2: headless mode, debug server auto-start, WS fix, watchdog hot-reload, example plugin

- --headless flag (skip TUI for SSH/systemd)
- InitService auto-starts cyrene_debug_server.py
- Fixed log WS URL (home.html/api/logs/ws -> api/logs/ws)
- PluginService watchdog hot-reload (plugins/ dir)
- example_plugin: 2 commands (echo, plugin_status)
- Tests: 15/15 passing
This commit is contained in:
2026-06-10 18:50:10 +08:00
parent 3270a84c4e
commit c73e569958
4 changed files with 186 additions and 405 deletions
+130
View File
@@ -0,0 +1,130 @@
# SenSu 开发路线图
> 当前版本: Alpha 0.2.1
> 更新: 2026-06-10
---
## 一、已完成 (v0.2.1)
- [x] 13 服务异步框架 (init/log/tui/command/auth/internet/plugin/permission/api/shutdown/web_panel/bridge)
- [x] Textual TUI 三栏界面 + CLI 回退
- [x] 插件热加载 + 权限管理
- [x] Web 管理面板 (aiohttp :4200)
- [x] 消息桥接 (CoreBridge + PluginBridge + NetworkBridge)
- [x] 插件 SDK (`sdk/`): PluginStatus, PluginError, plugin_command 装饰器
- [x] 15 个回归测试
- [x] 安全加固: PBKDF2-SHA256, 环境变量密码, 认证降级已移除
- [x] Android 兼容: os.getloadavg(), /proc/net/dev
- [x] Apache 2.0 许可证
## 二、v0.2.2 — 打磨(短期)
### 2.1 `--headless` 模式
- **目标**: 纯后台运行,不启动 Textual TUI
- **价值**: systemd/supervisor 部署、SSH 远程管理、CI/CD
- **实现**: `main.py``--headless` 参数,跳过 TuiService 初始化
- **估时**: 1h
### 2.2 调试服务器自启动
- **目标**: 框架启动时自动拉起 `cyrene_debug_server.py`(如果存在)
- **价值**: 不需要手动 SSH 再启动
- **实现**: `InitService` 检查 `~/cyrene_debug_server.py`,后台启动
- **估时**: 0.5h
### 2.3 Web 面板日志 WebSocket 修复
- **目标**: 日志页面实时推送(当前前端拼错 URL)
- **根因**: `home.html/api/logs/ws` 应该是 `/SenSu/api/logs/ws`
- **估时**: 0.3h
### 2.4 插件热重载生效
- **目标**: 修改插件文件后自动重载(watchdog 已装未用)
- **实现**: `PluginService` 注册 watchdog observer 监听 `plugins/` 目录
- **估时**: 1h
### 2.5 test_demo 插件完善
- **目标**: 让它真正注册命令(当前 0 个命令)
- **根因**: workspace 里插件代码可能是草稿,补全 `@plugin_command` 装饰
- **估时**: 0.5h
## 三、v0.3 — 项目管理 (中期)
### 3.1 项目注册表
- **目标**: 插件可声明"我是一个项目"并申请资源
- **API**: `project.yaml` 声明 name, path, port, dependencies, entrypoint
- **实现**: `ProjectService` 管理项目生命周期(安装→配置→启动→监控→停止)
- **价值**: Cyrene TTS、Navidrome、music-tag-web 等都能挂上去
- **估时**: 4h
### 3.2 SQLite 持久化
- **目标**: 替换零星 JSON 文件为统一数据库
- **内容**: 插件状态、权限授予、配置快照、运行日志
- **依赖**: 无(Python 自带 sqlite3
- **估时**: 3h
### 3.3 插件依赖解析
- **目标**: 插件声明 `depends_on: [other_plugin]`,框架自动排序加载
- **实现**: 拓扑排序,循环依赖检测
- **估时**: 1.5h
### 3.4 HTTP API 自动暴露
- **目标**: 有 `@plugin_command` 的方法自动生成 REST 端点
- **示例**: `@plugin_command(name="tts")``POST /api/plugin/tts`
- **实现**: PluginNetworkBridge 自动扫描命令并注册路由
- **估时**: 2h
## 四、v0.4 — TUI 仪表盘 (中长期)
### 4.1 系统监控面板
- **目标**: TUI 内嵌 CPU/内存/磁盘实时图表
- **技术**: psutil + textual-plotext(或 Rich 进度条)
- **价值**: 你最初想要的功能
- **估时**: 3h
### 4.2 插件实时状态面板
- **目标**: TUI 展示每个插件的状态、命令数、网络路由、内存占用
- **价值**: 框架成为真正的"万能项目管理器"
- **估时**: 3h
### 4.3 命令增强
- **目标**: 补全(Tab)、语法高亮、管道
- **实现**: Textual Input 的 suggester API
- **估时**: 2h
## 五、v0.5 — 生产就绪 (长期)
### 5.1 插件进程隔离
- **目标**: 每个插件独立子进程,崩溃不影响框架
- **通信**: multiprocessing.Queue 替代内存桥接
- **代价**: 复杂度翻倍,性能略降
- **估时**: 8h
### 5.2 插件索引仓库
- **目标**: 在线 JSON 索引,`senSu install <name>` 一键安装
- **实现**: 简单的 GitHub Pages + JSON 文件
- **估时**: 4h
### 5.3 systemd 集成
- **目标**: `senSu.service` 模板,开机自启
- **实现**: 生成 systemd unit 文件 + `install.sh`
- **估时**: 1h
### 5.4 Docker 化
- **目标**: 一键部署到任意设备
- **实现**: Alpine-based Dockerfile<100MB
- **估时**: 2h
---
## 优先级排序
```
高优先级 (立即可做):
└─ v0.2.2: headless, 热重载, WS修复, 调试服务器
中优先级 (下个迭代):
└─ v0.3: 项目注册表, SQLite, 插件依赖
低优先级 (视需求):
└─ v0.4-0.5: TUI仪表盘, 进程隔离, 插件市场
```