@innomind/vita v0.0.8
InnoMind AI 编码助手
InnoMind AI 编码助手是一个高度集成的智能开发系统,提供从代码生成到应用运行的全流程自动化支持。系统支持多种AI模型提供商(如OpenAI、Qwen和Deepseek),为开发者提供强大的编码辅助功能。
系统架构
系统由三个主要部分组成:
前端 (Browser):
- 提供用户交互界面
- 包含多种组件如ChatBoxComponent, CodePlaygroundComponent等
- 使用API客户端与后端通信
- 支持流式响应处理,实时显示AI生成内容
后端 (Node):
- 提供AI服务和应用运行时环境
- 集成多种AI提供商的API
- 管理会话、模型和API密钥
- 处理数据库操作和文件系统交互
运行时 (Runtime):
- 负责动态运行AI生成的应用代码
- 支持多种运行器类型(WebApp、HTTP、API等)
- 提供完整的应用生命周期管理
- 监控系统资源使用和应用性能
核心功能
AI代码生成与会话
- 支持多种AI模型(OpenAI、Qwen、Deepseek等)
- 流式生成响应,实时显示AI输出
- 完整的会话历史管理
- 使用统计和性能分析
- 自动记录Token使用情况
应用开发与运行
- 应用代码编辑和管理
- 应用快照创建与恢复
- 本地开发环境集成
- 多种运行器支持
- 实时监控和日志
模板系统详解
模板系统是InnoMind AI编码助手的重要组成部分,它提供了快速创建应用的基础结构。
模板架构
模板系统由以下核心组件构成:
- 模板注册表(Registry):统一管理所有可用模板
- 模板渲染器(Renderer):处理模板变量替换和内容渲染
- 模板验证器(Validator):确保模板结构和内容的有效性
- 模板存储(Storage):支持文件系统和数据库两种存储方式
模板类型
系统内置多种应用模板类型: 1. Web组件模板(componentTemplate):
- 适用于创建可复用的前端组件
- 包含HTML、CSS、JavaScript三层结构
- 支持事件处理和状态管理
API服务模板(apiTemplate):
- 用于创建RESTful API服务
- 包含控制器、路由、服务层分离
- 支持自动生成API文档
HTTP服务模板(httpTemplate):
- 创建完整的HTTP服务器
- 支持中间件配置和请求处理
- 包含错误处理和日志记录
数据处理模板(dataProcessTemplate):
- 专注于数据处理和转换任务
- 支持批处理和流处理模式
- 包含数据验证和错误处理
模板结构
每个模板由以下部分组成:
{
"id": "唯一标识符",
"name": "模板名称",
"description": "模板描述",
"type": "模板类型",
"subtype": "子类型",
"defaultConfig": {
"变量1": "默认值1",
"变量2": "默认值2"
},
"snippets": [
{
"name": "代码片段名称",
"role": "片段角色",
"files": [
{
"name": "文件名",
"path": "文件路径",
"content": "文件内容,支持{{变量}}占位符",
"language": "编程语言",
"is_main": true/false
}
]
}
]
}模板变量替换
模板内容支持变量替换功能:
- 使用
{{变量名}}语法在模板内定义变量 - 变量可在创建应用时通过配置赋值
- 系统自动替换所有匹配的变量占位符
自定义模板
系统支持用户创建和注册自定义模板:
- 可通过API或文件方式添加新模板
- 支持继承和扩展现有模板
- 提供模板验证确保格式正确
代码编辑系统详解
代码编辑系统提供了丰富的功能,用于管理和修改应用代码。
代码组织结构
代码在系统中的组织方式:
- 应用(App):顶层容器,包含元数据和配置
- 代码片段(Snippet):代码的逻辑分组,如"前端"、"后端"
- 代码文件(File):实际的代码文件,包含路径和内容
文件操作功能
系统提供完整的文件CRUD操作: 1. 获取文件列表:
getAppCodeList(): 获取应用所有文件的元数据(不含内容)getAppCodeFiles(): 获取完整文件内容
单文件操作:
getAppCodeFile(): 获取单个文件详情addAppCodeFile(): 添加新文件updateAppCodeFile(): 更新文件内容removeAppCodeFile(): 删除文件
批量操作:
bulkUpdateAppCodeFiles(): 批量更新多个文件- 支持事务处理确保数据一致性
版本控制与快照
代码快照功能详解:
- 快照创建:保存应用当前状态,包括所有代码文件
- 快照类型:支持开发、生产、测试等多种类型
- 快照恢复:可从任意快照恢复应用状态
- 快照比较:对比不同快照的变更内容
- 自动备份:系统可配置自动创建周期性快照
编辑流程示例
完整的代码编辑流程:
1. 获取应用详情 → appApi.get(appId)
2. 加载文件列表 → appApi.getAppCodeList(appId)
3. 选择并编辑文件 → appApi.getAppCodeFile(appId, filePath)
4. 保存更改 → appApi.updateAppCodeFile(appId, filePath, newContent)
5. 创建快照 → appApi.createSnapshot(appId, {name, type})安全与权限
编辑系统的安全机制:
- 基于用户ID的访问控制
- 文件操作审计日志
- 敏感操作的事务保护
- 防止跨域攻击的安全措施
本地开发功能详解
本地开发功能是InnoMind AI编码助手的重要扩展,它允许开发者在本地文件系统中编辑代码,并与系统中的应用进行同步。
本地开发核心功能
文件系统同步:
- 导出到本地:将应用代码导出到本地文件系统
- 从本地导入:将本地修改的代码导入回应用数据库
- 差异比较:检测本地文件和数据库文件之间的差异
本地开发服务:
- 开发实例创建:在本地环境中启动应用实例
- 热重载支持:实时监控文件变更并自动刷新应用
- 运行状态监控:实时查看应用运行日志和状态
- 开发服务配置:自定义端口、环境变量等配置
路径管理:
- 历史路径记忆:记录和快速访问之前使用的本地路径
- 路径验证:确保路径有效并符合安全要求
- 跨平台支持:兼容Windows、Linux和MacOS的路径格式
架构与组件
本地开发功能由以下核心组件构成:
后端服务
LocalDevService:处理文件同步和差异比较
exportToLocal():导出应用代码到本地目录importFromLocal():从本地目录导入代码到应用getDifferences():比较本地和数据库文件差异
DevModeService:管理本地开发环境
createDevInstance():创建开发实例startDevServer():启动开发服务器stopDevInstance():停止开发实例getDevModeStatus():获取开发实例状态
前端组件
- LocalDevPanel:主界面组件,集成文件同步和开发运行功能
- FileSyncPanel:文件同步界面,处理导出、导入和差异比较
- DevModePanel:开发模式界面,管理开发服务器的启动和监控
- PathInput:路径输入组件,提供历史路径记忆功能
使用流程
文件同步流程
1. 在应用列表中选择应用 → 点击"本地开发"按钮
2. 在文件同步面板设置本地路径
3. 点击"导出到本地"按钮,将应用代码导出到指定目录
4. 使用本地编辑器修改代码
5. 在文件同步面板点击"检查差异"查看修改内容
6. 点击"从本地导入"将修改同步回应用数据库本地开发服务流程
1. 在开发运行面板配置开发服务器参数(端口、热重载等)
2. 点击"启动开发服务器"按钮
3. 系统将创建开发实例并启动服务器
4. 在日志面板查看运行状态和日志
5. 通过提供的URL访问本地运行的应用
6. 可随时点击"重启"或"停止"按钮控制服务器安全考量
本地开发功能实现了多重安全机制:
- 路径验证:防止目录遍历和访问敏感文件
- 文件类型限制:过滤不安全的文件类型
- 运行隔离:本地开发实例与其他实例隔离运行
- 资源限制:限制开发实例的资源使用
- 安全通信:数据传输采用安全协议
技术特点
- 增量同步:只传输和处理有变化的文件,提高同步效率
- 实时监控:开发服务器状态和日志的实时更新
- 路径历史:智能记忆用户常用的本地开发路径
- 跨平台兼容:支持Windows、Linux和MacOS的路径格式
- UI集成:与系统其他功能无缝集成的用户界面
运行时系统详解
运行时系统是InnoMind AI编码助手的核心创新,它允许直接执行AI生成的代码。
运行时架构
运行时系统由以下核心组件构成:
- RuntimeController:控制器,管理所有运行实例的生命周期
- AppLoader:应用加载器,负责加载代码并准备运行环境
- RunnerManager:运行器管理器,创建和管理不同类型的运行器
- MonitorSystem:监控系统,收集运行指标和日志
运行器类型
WebAppRunner
- 功能:运行Web应用程序
- 模式:
- 独立模式:启动独立的HTTP服务器
- 挂载模式:作为中间件集成到现有服务器
- 特性:
- 支持静态文件服务
- 自动错误处理和异常捕获
- 提供统一的应用上下文
HTTPRunner
- 功能:提供HTTP服务
- 特性:
- 路由配置和请求处理
- 支持多种HTTP方法
- 内置中间件处理
APIRunner
- 功能:运行API服务
- 特性:
- RESTful接口支持
- 自动API文档生成
- 请求验证和错误处理
WebComponentRunner
- 功能:管理Web组件
- 特性:
- 组件注册和卸载
- 生命周期管理
- 组件通信机制
DataProcessRunner
- 功能:执行数据处理任务
- 特性:
- 支持批处理和流处理
- 数据转换和验证
- 处理进度追踪
运行时生命周期
1. 启动阶段
详细的启动流程:
创建实例记录(im_vita_app_instances) →
AppLoader加载代码(从应用或快照) →
准备运行时目录(创建文件结构) →
确定运行器类型 →
创建运行器实例 →
初始化运行环境 →
启动应用 →
注册监控2. 运行阶段
运行过程中的管理功能:
- 状态查询:实时获取实例运行状态
- 日志收集:记录运行过程中的日志信息
- 资源监控:跟踪CPU、内存使用情况
- 错误处理:捕获并隔离运行时错误
- 配置更新:动态更新运行参数
3. 停止阶段
接收停止请求 →
标记实例状态为停止中 →
调用运行器停止方法 →
资源释放和清理 →
更新实例记录 →
保存监控数据安全执行机制
代码安全执行的核心技术:
- SecurityManager:限制资源使用和系统访问
- 沙箱隔离:各实例间相互隔离
- 资源限制:CPU、内存、网络访问限制
- 超时控制:防止无限循环和死锁
- 错误隔离:单个实例错误不影响其他实例
数据持久化
运行时数据的存储机制:
- 实例记录:在
im_vita_app_instances表中维护 - 运行日志:结构化存储所有操作日志
- 性能指标:定期采集并存储系统性能数据
- 错误报告:详细记录运行时异常
实例间通信
支持不同应用实例间的通信:
- 事件机制:基于发布-订阅模式
- 共享存储:有限度的数据共享
- API通信:通过HTTP/WebSocket通信
- 消息队列:适用于异步通信场景
从模板到编辑再到运行的完整流程
1. 模板创建应用 (详细步骤)
选择模板:
- 浏览模板库 (
appApi.getTemplates()) - 查看模板详情 (
appApi.getTemplate(templateId)) - 根据需求选择合适的模板类型
- 浏览模板库 (
配置参数:
- 设置应用基本信息(名称、描述)
- 配置模板特定参数(根据模板类型不同)
- 预览生成的代码结构
创建应用:
- 调用创建API (
appApi.create(data)) - 在数据库创建应用记录 (
AppService.createApp()) - 渲染模板变量 (
TemplateService.renderTemplate()) - 创建代码片段和文件 (
TemplateService.createAppFromTemplate())
- 调用创建API (
初始化应用:
- 建立应用-代码片段关联
- 分配唯一标识符
- 设置初始状态为"草稿"
2. 编辑应用代码 (详细步骤)
加载代码:
- 获取应用详情 (
appApi.get(appId)) - 加载文件列表 (
AppCodeService.getAppCodeList(appId)) - 按需加载文件内容 (
AppCodeService.getAppCodeFile(appId, path))
- 获取应用详情 (
编辑操作:
修改文件:
- 打开文件、编辑内容
- 保存更改 (
AppCodeService.updateAppCodeFile()) - 更新时间戳和编辑者信息
添加文件:
- 创建新文件 (
AppCodeService.addAppCodeFile()) - 自动关联到代码片段
- 更新文件索引
- 创建新文件 (
删除文件:
- 移除文件 (
AppCodeService.removeAppCodeFile()) - 清理相关引用
- 维护文件系统一致性
- 移除文件 (
批量更新:
- 事务性更新多个文件 (
AppCodeService.bulkUpdateAppCodeFiles()) - 确保原子性操作
- 防止部分更新导致的不一致
- 事务性更新多个文件 (
创建快照:
- 选择快照类型和名称
- 创建快照记录 (
appApi.createSnapshot()) - 序列化当前应用状态和所有代码
- 存储到数据库供后续使用
- 支持添加标签和描述信息
3. 运行应用 (详细步骤)
准备阶段:
- 选择运行模式(从当前代码或快照)
- 配置运行参数(端口、环境变量等)
- 调用启动API (
appApi.startInstance())
应用加载:
- 创建实例记录
AppLoader根据选择加载代码:- 从当前应用加载 (
_loadCurrentApp()) - 从快照加载 (
_loadFromSnapshot())
- 从当前应用加载 (
- 准备运行时目录 (
_prepareRuntime()):- 创建临时文件结构
- 写入所有代码文件
- 解析应用配置
运行器选择与启动:
RuntimeController确定运行器类型RunnerManager创建相应运行器- 运行器初始化 (
BaseRunner._preCheck()) - 启动应用 (
_doStart()):- WebApp:创建Express应用
- HTTP:配置路由和中间件
- API:注册API端点
- WebComponent:注册组件定义
运行监控:
MonitorSystem添加监控任务- 定期收集性能指标
- 记录运行日志
- 监视资源使用
- 检测异常状态
管理操作:
- 查询状态 (
appApi.getInstanceStatus()) - 查看日志 (
appApi.getInstanceLogs()) - 更新配置 (
appApi.updateInstanceConfig()) - 停止实例 (
appApi.stopInstance())
- 查询状态 (
生命周期结束:
- 接收停止请求
- 运行器执行停止流程 (
_doStop()) - 清理资源 (
_doCleanup()) - 更新实例状态
- 保存运行数据和日志
安全机制
- 用户认证与授权控制
- 代码在隔离环境中运行
- 资源使用限制与监控
- API密钥加密存储
- 完整的错误处理和日志记录
- 防XSS和SQL注入措施
- 事务处理确保数据一致性
技术栈
- 前端:TypeScript、自定义Web组件
- 后端:Node.js、Express
- 数据库:支持MySQL等关系型数据库
- AI集成:OpenAI、Qwen、Deepseek等
- 运行时:自定义应用执行环境
特色亮点
- 多样化AI提供商:避免单点依赖
- 智能运行时:直接执行AI生成的应用
- 快照系统:保存应用开发过程中的不同版本
- 本地开发功能:支持在本地文件系统编辑代码并同步回系统
- 多租户架构:适合团队协作环境
- 完整监控:全方位的应用性能和资源监控
开发与部署
安装
npm install开发模式
npm run dev构建
npm run build运行
npm start配置说明
系统配置位于system-config.json文件中,包括:
- 服务端口配置
- 数据库连接设置
- 日志级别等
扩展开发
系统支持通过添加新的提供商、运行器和模板进行扩展:
添加新AI提供商
- 实现Provider接口
- 添加到ProviderFactory
- 配置API调用参数
创建自定义运行器
- 继承BaseRunner类
- 实现必要的生命周期方法
- 注册到RunnerManager
开发新模板
- 定义模板结构
- 添加到模板注册表
- 提供默认配置和文件模板