Files
SenSu/ROADMAP.md
T
AskaEth c73e569958 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
2026-06-10 18:50:10 +08:00

131 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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仪表盘, 进程隔离, 插件市场
```