c73e569958
- --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
131 lines
4.4 KiB
Markdown
131 lines
4.4 KiB
Markdown
# 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仪表盘, 进程隔离, 插件市场
|
||
```
|