0.0.8 • Published 10 months ago

@innomind/vita v0.0.8

Weekly downloads
-
License
-
Repository
-
Last release
10 months ago

InnoMind AI 编码助手

InnoMind AI 编码助手是一个高度集成的智能开发系统,提供从代码生成到应用运行的全流程自动化支持。系统支持多种AI模型提供商(如OpenAI、Qwen和Deepseek),为开发者提供强大的编码辅助功能。

系统架构

系统由三个主要部分组成:

  1. 前端 (Browser):

    • 提供用户交互界面
    • 包含多种组件如ChatBoxComponent, CodePlaygroundComponent等
    • 使用API客户端与后端通信
    • 支持流式响应处理,实时显示AI生成内容
  2. 后端 (Node):

    • 提供AI服务和应用运行时环境
    • 集成多种AI提供商的API
    • 管理会话、模型和API密钥
    • 处理数据库操作和文件系统交互
  3. 运行时 (Runtime):

    • 负责动态运行AI生成的应用代码
    • 支持多种运行器类型(WebApp、HTTP、API等)
    • 提供完整的应用生命周期管理
    • 监控系统资源使用和应用性能

核心功能

AI代码生成与会话

  • 支持多种AI模型(OpenAI、Qwen、Deepseek等)
  • 流式生成响应,实时显示AI输出
  • 完整的会话历史管理
  • 使用统计和性能分析
  • 自动记录Token使用情况

应用开发与运行

  • 应用代码编辑和管理
  • 应用快照创建与恢复
  • 本地开发环境集成
  • 多种运行器支持
  • 实时监控和日志

模板系统详解

模板系统是InnoMind AI编码助手的重要组成部分,它提供了快速创建应用的基础结构。

模板架构

模板系统由以下核心组件构成:

  • 模板注册表(Registry):统一管理所有可用模板
  • 模板渲染器(Renderer):处理模板变量替换和内容渲染
  • 模板验证器(Validator):确保模板结构和内容的有效性
  • 模板存储(Storage):支持文件系统和数据库两种存储方式

模板类型

系统内置多种应用模板类型: 1. Web组件模板(componentTemplate)

  • 适用于创建可复用的前端组件
  • 包含HTML、CSS、JavaScript三层结构
  • 支持事件处理和状态管理
  1. API服务模板(apiTemplate)

    • 用于创建RESTful API服务
    • 包含控制器、路由、服务层分离
    • 支持自动生成API文档
  2. HTTP服务模板(httpTemplate)

    • 创建完整的HTTP服务器
    • 支持中间件配置和请求处理
    • 包含错误处理和日志记录
  3. 数据处理模板(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(): 获取完整文件内容
  1. 单文件操作

    • getAppCodeFile(): 获取单个文件详情
    • addAppCodeFile(): 添加新文件
    • updateAppCodeFile(): 更新文件内容
    • removeAppCodeFile(): 删除文件
  2. 批量操作

    • 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编码助手的重要扩展,它允许开发者在本地文件系统中编辑代码,并与系统中的应用进行同步。

本地开发核心功能

  1. 文件系统同步

    • 导出到本地:将应用代码导出到本地文件系统
    • 从本地导入:将本地修改的代码导入回应用数据库
    • 差异比较:检测本地文件和数据库文件之间的差异
  2. 本地开发服务

    • 开发实例创建:在本地环境中启动应用实例
    • 热重载支持:实时监控文件变更并自动刷新应用
    • 运行状态监控:实时查看应用运行日志和状态
    • 开发服务配置:自定义端口、环境变量等配置
  3. 路径管理

    • 历史路径记忆:记录和快速访问之前使用的本地路径
    • 路径验证:确保路径有效并符合安全要求
    • 跨平台支持:兼容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:监控系统,收集运行指标和日志

运行器类型

  1. WebAppRunner

    • 功能:运行Web应用程序
    • 模式
      • 独立模式:启动独立的HTTP服务器
      • 挂载模式:作为中间件集成到现有服务器
    • 特性
      • 支持静态文件服务
      • 自动错误处理和异常捕获
      • 提供统一的应用上下文
  2. HTTPRunner

    • 功能:提供HTTP服务
    • 特性
      • 路由配置和请求处理
      • 支持多种HTTP方法
      • 内置中间件处理
  3. APIRunner

    • 功能:运行API服务
    • 特性
      • RESTful接口支持
      • 自动API文档生成
      • 请求验证和错误处理
  4. WebComponentRunner

    • 功能:管理Web组件
    • 特性
      • 组件注册和卸载
      • 生命周期管理
      • 组件通信机制
  5. DataProcessRunner

    • 功能:执行数据处理任务
    • 特性
      • 支持批处理和流处理
      • 数据转换和验证
      • 处理进度追踪

运行时生命周期

1. 启动阶段

详细的启动流程:

创建实例记录(im_vita_app_instances) →
AppLoader加载代码(从应用或快照) →
准备运行时目录(创建文件结构) →
确定运行器类型 →
创建运行器实例 →
初始化运行环境 →
启动应用 →
注册监控

2. 运行阶段

运行过程中的管理功能:

  • 状态查询:实时获取实例运行状态
  • 日志收集:记录运行过程中的日志信息
  • 资源监控:跟踪CPU、内存使用情况
  • 错误处理:捕获并隔离运行时错误
  • 配置更新:动态更新运行参数

3. 停止阶段

接收停止请求 →
标记实例状态为停止中 →
调用运行器停止方法 →
资源释放和清理 →
更新实例记录 →
保存监控数据

安全执行机制

代码安全执行的核心技术:

  • SecurityManager:限制资源使用和系统访问
  • 沙箱隔离:各实例间相互隔离
  • 资源限制:CPU、内存、网络访问限制
  • 超时控制:防止无限循环和死锁
  • 错误隔离:单个实例错误不影响其他实例

数据持久化

运行时数据的存储机制:

  • 实例记录:在im_vita_app_instances表中维护
  • 运行日志:结构化存储所有操作日志
  • 性能指标:定期采集并存储系统性能数据
  • 错误报告:详细记录运行时异常

实例间通信

支持不同应用实例间的通信:

  • 事件机制:基于发布-订阅模式
  • 共享存储:有限度的数据共享
  • API通信:通过HTTP/WebSocket通信
  • 消息队列:适用于异步通信场景

从模板到编辑再到运行的完整流程

1. 模板创建应用 (详细步骤)

  1. 选择模板

    • 浏览模板库 (appApi.getTemplates())
    • 查看模板详情 (appApi.getTemplate(templateId))
    • 根据需求选择合适的模板类型
  2. 配置参数

    • 设置应用基本信息(名称、描述)
    • 配置模板特定参数(根据模板类型不同)
    • 预览生成的代码结构
  3. 创建应用

    • 调用创建API (appApi.create(data))
    • 在数据库创建应用记录 (AppService.createApp())
    • 渲染模板变量 (TemplateService.renderTemplate())
    • 创建代码片段和文件 (TemplateService.createAppFromTemplate())
  4. 初始化应用

    • 建立应用-代码片段关联
    • 分配唯一标识符
    • 设置初始状态为"草稿"

2. 编辑应用代码 (详细步骤)

  1. 加载代码

    • 获取应用详情 (appApi.get(appId))
    • 加载文件列表 (AppCodeService.getAppCodeList(appId))
    • 按需加载文件内容 (AppCodeService.getAppCodeFile(appId, path))
  2. 编辑操作

    • 修改文件

      • 打开文件、编辑内容
      • 保存更改 (AppCodeService.updateAppCodeFile())
      • 更新时间戳和编辑者信息
    • 添加文件

      • 创建新文件 (AppCodeService.addAppCodeFile())
      • 自动关联到代码片段
      • 更新文件索引
    • 删除文件

      • 移除文件 (AppCodeService.removeAppCodeFile())
      • 清理相关引用
      • 维护文件系统一致性
    • 批量更新

      • 事务性更新多个文件 (AppCodeService.bulkUpdateAppCodeFiles())
      • 确保原子性操作
      • 防止部分更新导致的不一致
  3. 创建快照

    • 选择快照类型和名称
    • 创建快照记录 (appApi.createSnapshot())
    • 序列化当前应用状态和所有代码
    • 存储到数据库供后续使用
    • 支持添加标签和描述信息

3. 运行应用 (详细步骤)

  1. 准备阶段

    • 选择运行模式(从当前代码或快照)
    • 配置运行参数(端口、环境变量等)
    • 调用启动API (appApi.startInstance())
  2. 应用加载

    • 创建实例记录
    • AppLoader根据选择加载代码:
      • 从当前应用加载 (_loadCurrentApp())
      • 从快照加载 (_loadFromSnapshot())
    • 准备运行时目录 (_prepareRuntime()):
      • 创建临时文件结构
      • 写入所有代码文件
      • 解析应用配置
  3. 运行器选择与启动

    • RuntimeController确定运行器类型
    • RunnerManager创建相应运行器
    • 运行器初始化 (BaseRunner._preCheck())
    • 启动应用 (_doStart()):
      • WebApp:创建Express应用
      • HTTP:配置路由和中间件
      • API:注册API端点
      • WebComponent:注册组件定义
  4. 运行监控

    • MonitorSystem添加监控任务
    • 定期收集性能指标
    • 记录运行日志
    • 监视资源使用
    • 检测异常状态
  5. 管理操作

    • 查询状态 (appApi.getInstanceStatus())
    • 查看日志 (appApi.getInstanceLogs())
    • 更新配置 (appApi.updateInstanceConfig())
    • 停止实例 (appApi.stopInstance())
  6. 生命周期结束

    • 接收停止请求
    • 运行器执行停止流程 (_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

开发新模板

  • 定义模板结构
  • 添加到模板注册表
  • 提供默认配置和文件模板