feat: 初始化NewLife Studio项目,完成基础框架与数据管理模块
|
# NewLife.Studio(Avalonia)— NewLife 团队全产品工作室窗口 Spec
## 背景:NewLife 开源团队
[NewLife 开发团队](https://github.com/NewLifeX)(又称"新生命团队")成立于 2002 年,是国内历史最悠久的 .NET 开源社区之一。团队以"学无先后达者为师"为理念,长期维护一套覆盖基础组件、数据中间件、通信协议、物联网、分布式平台的全栈 .NET 生态。
截至 2026 年,NewLife 在 NuGet 上发布了 90+ 个包,累计下载量超 580 万次,产品已成功应用于电力、高校、互联网、电信、交通、物流、工控、医疗、文博等行业。
### NewLife 项目矩阵一览
| 分类 | 项目 | 年份 | 说明 |
|---|---|---|---|
| **基础组件** | | | |
| | [NewLife.Core](https://github.com/NewLifeX/X) | 2002 | 核心库:日志、配置、缓存、网络、序列化、APM 性能追踪 |
| | [NewLife.XCode](https://github.com/NewLifeX/NewLife.XCode) | 2005 | 大数据中间件 / 超级 ORM,单表百亿级,支持 MySQL/SQLite/SqlServer/Oracle/PostgreSQL/TDengine/InfluxDB/达梦/金仓/瀚高/DB2,自动分表、读写分离 |
| | [NewLife.Net](https://github.com/NewLifeX/NewLife.Net) | 2005 | 网络库,单机千万级吞吐(2266万 tps),单机百万级连接(400万 Tcp) |
| | [NewLife.Remoting](https://github.com/NewLifeX/NewLife.Remoting) | 2011 | RPC/Http 通信框架,高吞吐,物联网设备低开销易接入 |
| | [NewLife.Cube](https://github.com/NewLifeX/NewLife.Cube) | 2010 | 魔方快速开发平台,用户权限/SSO/OAuth,单表 100 亿级验证 |
| | [NewLife.Agent](https://github.com/NewLifeX/NewLife.Agent) | 2008 | 服务管理组件,安装为 Windows 服务 / Linux systemd 守护进程 |
| | [NewLife.Zero](https://github.com/NewLifeX/NewLife.Zero) | 2020 | Zero 零代脚手架,项目模板:Web/WebApi/Service/Worker |
| **中间件** | | | |
| | [NewLife.Redis](https://github.com/NewLifeX/NewLife.Redis) | 2017 | Redis 客户端,微秒级延迟,百万级吞吐,内置消息队列,日均 80 亿+次调用验证 |
| | [NewLife.RocketMQ](https://github.com/NewLifeX/NewLife.RocketMQ) | 2018 | RocketMQ 纯托管客户端,支持 Apache RocketMQ / 阿里云 / 华为云 / 腾讯云,十亿级验证 |
| | [NewLife.MQTT](https://github.com/NewLifeX/NewLife.MQTT) | 2019 | MQTT 物联网消息协议,MqttClient / MqttServer,支持阿里云物联网平台 |
| | [NewLife.MQ](https://github.com/NewLifeX/NewLife.MQ) | 2016 | 轻量级消息队列,无延迟分发,支持消费组和消息去重 |
| | [NewLife.IoT](https://github.com/NewLifeX/NewLife.IoT) | 2022 | IoT 标准库,定义物联网领域的各种通信协议标准规范 |
| | [NewLife.Modbus](https://github.com/NewLifeX/NewLife.Modbus) | 2022 | ModbusTcp / ModbusRTU / ModbusASCII 协议实现 |
| | [NewLife.LoRa](https://github.com/NewLifeX/NewLife.LoRa) | 2016 | LoRa 协议库 |
| **平台产品** | | | |
| | [NewLife.Stardust](https://github.com/NewLifeX/NewLife.Stardust) | 2018 | 星尘分布式平台:节点管理/配置中心/注册中心/APM/日志中心/远程发布 |
| | AntJob | 2019 | 蚂蚁调度,分布式大数据计算平台(实时/离线),万亿级验证 |
| | FIoT | — | 物联网一体化平台 |
| | NewLife.ERP | 2021 | 企业 ERP:产品/客户/销售/供应商管理 |
## Why
NewLife 团队拥有 20+ 个核心产品与组件,覆盖数据库、缓存、消息队列、物联网协议、分布式平台等领域。当前缺少一个**统一的跨平台桌面工作室窗口**,让开发者 / 运维人员能够在**一个应用中**集中管理和操作这些产品,例如:
- 通过 XCode 连接多数据库进行查询、建模、代码生成
- 连接 Redis 实例查看 Key、执行命令、监控性能
- 管理 MQTT 服务端 / 客户端,收发消息、查看 Topic
- 管理 MQ / RocketMQ 消息队列,查看消息堆积、消费状态
- 浏览和管理星尘平台中的节点、应用、配置
- 其他 NewLife 组件的一站式操作
目前这些操作分散于命令行、各自的管理后台或第三方工具,缺乏统一入口和一致体验。
## What Changes
- **核心定位变更**:从"数据库管理工具"升级为 **NewLife 全产品工作室窗口** —— 以模块化/插件化架构统一承载 NewLife 生态所有产品的管理能力
- **模块化架构**:Studio 提供主框架(窗口管理、导航、布局、本地存储),各产品以独立 Module/Plugin 形式接入
- **MVP 首期模块**:数据库管理(Data Studio)作为首发模块,覆盖连接管理、元数据浏览、SQL 查询、导入导出、AI 助手
- **扩展点预留**:为 MQTT Studio、MQ Studio、Redis Studio、Stardust Console 等后续模块预留标准接口与 UI 扩展区
- 保留原有技术栈:Avalonia 跨平台 UI + NewLife.Core/NewLife.XCode 为核心依赖
- 保留原有 AI 助手体系,扩展为可感知当前激活模块(后续迭代)
## Impact
- Affected specs: 新增模块化架构、Data Studio(原数据库管理)、AI 助手、插件机制、跨平台发布;后续扩展 MQTT Studio、MQ Studio、Redis Studio 等
- Affected code: 新建解决方案;Framework 框架层(Core / Store / AI);Providers 协议提供者层(Data);App Shell 壳层;Modules 模块层(DataStudio);Store(本地配置/加密)
## ADDED Requirements
### Requirement: Modular Studio Architecture
系统 SHALL 采用模块化/插件化架构,Studio Shell 提供主窗口框架,各产品功能以独立 Module 实现。
#### Scenario: Load Modules at Startup
- **WHEN** Studio 启动
- **THEN** Shell 加载已注册的 Module 列表,展示导航项,并激活默认 Module
#### Scenario: Switch Between Modules
- **WHEN** 用户在导航栏切换 Module(如从 Data Studio 切换到 MQ Studio)
- **THEN** Shell 切换内容区域,保持当前会话状态,不关闭未激活 Module 的后台连接(由用户显式关闭)
### Requirement: Studio Shell
系统 SHALL 提供统一的 Studio 主窗口(Avalonia),包含导航栏、内容区、状态栏、通用设置入口。
#### Scenario: App Startup
- **WHEN** 用户启动应用
- **THEN** 展示 Studio 主窗口(导航栏/内容区/状态栏),无未处理异常导致退出
### Requirement: Plugin / Module Interface
系统 SHALL 定义 `IStudioModule` 标准接口,第三方或后续模块可通过实现此接口接入 Studio。
#### Scenario: Register a New Module
- **WHEN** 开发者新建模块项目,实现 IStudioModule 并注册
- **THEN** Studio 在下次启动时自动发现并加载该模块,无需修改 Shell 代码
---
## Module 1: Data Studio(数据库管理,MVP 首发)
### Requirement: Connection Management
系统 SHALL 支持管理多数据库连接(SQLite MVP),包括创建、编辑、删除、测试连接、最近使用记录。
#### Scenario: Create SQLite Connection
- **WHEN** 用户选择一个 SQLite 数据库文件并保存连接
- **THEN** 连接出现在连接列表中,可被打开并用于后续操作
#### Scenario: Test Connection
- **WHEN** 用户点击"测试连接"
- **THEN** 系统返回成功/失败与错误原因(如文件不存在、权限不足、文件损坏)
### Requirement: Database Session Handling
系统 SHALL 以"会话"形式管理已打开连接,支持复用并在关闭连接时释放资源。
### Requirement: Metadata Browsing (SQLite MVP)
系统 SHALL 支持浏览数据库对象元数据,至少包含表、列、主键、索引与外键信息。
#### Scenario: Browse Tables
- **WHEN** 用户展开连接对象树
- **THEN** 展示表列表,并可查看单表详情(列名、类型、是否可空、默认值、主键等)
### Requirement: SQL Query (SQLite MVP)
系统 SHALL 提供 SQL 编辑与执行能力,支持展示结果表格、执行耗时、影响行数、以及历史记录。
#### Scenario: Execute SELECT
- **WHEN** 用户执行一条 SELECT 语句
- **THEN** 系统展示结果集(受最大行数限制),并展示执行耗时
### Requirement: Import/Export
系统 SHALL 支持将查询结果或表数据导出为 CSV 与 JSON;导入能力预留扩展点。
#### Scenario: Export CSV
- **WHEN** 用户在结果网格上执行"导出 CSV"
- **THEN** 系统生成 CSV 文件,编码与分隔符可配置(默认 UTF-8 + 逗号)
### Requirement: Extensibility for Multi-DB
系统 SHALL 采用 Provider/Adapter 架构,便于后续加入 MySQL、SQLServer 等数据库与 XCode 增强能力(实体生成、模型同步)。
---
## Module N: 后续模块扩展点(非 MVP,架构预留)
### 预留模块:MQTT Studio
操作 MQTT Broker,管理 Topic / Client、收发消息、查看连接状态。基于 NewLife.MQTT。
### 预留模块:MQ Studio
操作 MQ 消息队列(NewLife.MQ / NewLife.RocketMQ),查看队列状态、消息堆积、消费进度。
### 预留模块:Redis Studio
连接 Redis 实例,浏览 Key、执行命令、查看内存/命中率等监控指标。基于 NewLife.Redis。
### 预留模块:Stardust Console
星尘平台控制台视窗,查看节点列表、应用运行状态、配置下发、APM 调用链等。基于 NewLife.Stardust。
### 预留模块:Modbus Studio
Modbus 调试工具,读写寄存器、扫描设备。基于 NewLife.Modbus / NewLife.IoT。
---
## AI 助手(跨模块共享)
### Requirement: AI Assistant with Tool Calling
系统 SHALL 内置 AI 助手,支持"模型输出工具调用 → 系统执行工具 → 回填结果 → 模型继续推理"的闭环。AI 助手可感知当前激活的 Module,提供上下文相关的帮助。
#### Scenario: AI Analyzes Database
- **GIVEN** 当前激活 Data Studio 模块
- **WHEN** 用户提出"分析今日订单"
- **THEN** AI 可调用工具:列连接、打开连接、列出表、查看表结构、执行只读查询(带行数限制),最终输出分析汇总
### Requirement: AI Safety Policy
系统 SHALL 对 AI 调用能力施加安全限制,默认只读并限制数据规模。
#### Scenario: AI Attempts Non-SELECT
- **WHEN** AI 请求执行 INSERT/UPDATE/DELETE/DDL
- **THEN** 系统拒绝执行并返回可解释的错误信息
#### Scenario: Row Limit Enforcement
- **WHEN** AI 或用户执行查询返回大量数据
- **THEN** 系统按配置裁剪到最大行数,并提示已裁剪
---
## 本地存储与安全
### Requirement: Local Storage & Secret Handling
系统 SHALL 将连接信息、历史查询、AI 配置、Module 偏好存储在本地;敏感信息(如 API Key、密码)必须被保护(加密或系统凭据库)。
#### Scenario: Persist Connection
- **WHEN** 用户保存连接信息
- **THEN** 重启应用后连接仍可用
---
## MODIFIED Requirements
无(首次引入模块化架构,原数据库管理需求并入 Data Studio 模块)。
## REMOVED Requirements
无。
## Notes / Scope
### MVP 范围(v0.1)
- Studio Shell(导航栏 + 内容区框架)
- Module 接口与加载机制(IStudioModule)
- Data Studio 模块:SQLite 连接管理、元数据浏览、SQL 查询、CSV/JSON 导出、AI 助手
- 本地存储(连接、历史、偏好、AI 配置)
- 跨平台运行(Windows / Linux / macOS)
### 后续迭代(v0.2+)
- Data Studio:MySQL / SQLServer / PostgreSQL 等多数据库支持、实体代码生成、模型同步
- MQTT Studio 模块
- MQ Studio 模块
- Redis Studio 模块
- AI 助手跨模块上下文感知
- 模块市场 / 在线安装
### 技术约束
- AI Provider 类型(OpenAI 兼容 / Azure / 本地)在实现前需最终确认;本 Spec 要求"可插拔 Provider"
- 导入 Excel 不纳入 MVP;避免引入不确定依赖
- 模块间依赖通过 Core 共享类型,禁止模块间直接引用
### 目录结构约定
```
src/
├── Framework/ # 框架层 — 所有模块无条件引用
│ ├── Core/ # IStudioModule, DTOs, StudioServices
│ ├── Store/ # 本地持久化 + 加密
│ └── AI/ # AI Provider + Tool Calling
├── Providers/ # 协议提供者层 — 模块按需引用
│ └── Data/ # IDataProvider, IDbSession, SQLite
├── App/ # Shell 壳程序
└── Modules/ # UI 模块 — 实现 IStudioModule
└── DataStudio/ # 数据库管理模块
```
后续新增 MqttStudio / WebSocketStudio 时在 Providers/ 与 Modules/ 下创建对应目录。
|