ZeroStack 是一个探索性的、基于大语言模型 (LLM) 驱动的全栈智能代码生成实验项目后端。 它采用了最新的 Java 21 与 Spring Boot 3 架构,整合了 LangChain4j 与 Redisson,支持对话式代码生成,并引入了基础的 Agent 工作流引擎 和 SSE 原生流式响应。
本后端项目旨在作为一个 AIGC 代码生成流程的实验与学习基座。
- AI 一键生成标题:自动根据用户的需求提取应用的关键字,一键调用 AI 接口 (
AiTitleGeneratorService) 生成高度匹配的应用标题和简介。 - 全栈代码智能生成:通过大模型一键生成完整可运行的项目源码。
- 智能路由 (
RouterNode):系统利用 AI 的意图理解能力,无需人工指定即可实现自动路由:- 若用户需求简单:自动生成单文件
HTML。 - 若需多文件结构:自动生成
MULTI_FILE(分离 HTML、CSS、JS)。 - 若需求复杂:自动拉取脚手架,全量生成
VUE_PROJECT(现代化多页面前端项目)。
- 若用户需求简单:自动生成单文件
不仅仅是生成代码,ZeroStack 直接打通了 DevOps 流程:
- 项目自动化构建 (
ProjectBuilder):针对 Vue 项目,在后台起子进程异步执行npm install与构建操作。 - 一键静态部署:系统内置基于 Nginx 的静态页面自动挂载方案。构建完毕后,直接将产物暴露为静态 Web 服务进行跨域托管,真正实现“生成即上线”。
- 源码 ZIP 一键下载:无论生成的是单 HTML 还是复杂的全栈架构,后端都支持将其自动打包为标准 ZIP 并供开发者一键下载到本地二次开发。
- COS 自动截图对象存储:系统能够自动为生成的应用捕获缩略截图,并对接上传至云对象存储 (COS)。
- SSE 流式通讯与进度推送:放弃传统的请求-等待,利用 Server-Sent Events (SSE) 实现打字机级数据推送。在使用 Agent 模式时,将工作流图的运行节点状态(如:“正在分析需求”、“构建项目目录”)转化包装成
WorkflowProgressMessage实时推送至前台,做到流程绝对透明。 - 原生深度思考 (Deep Thinking):深度集成适配带有
<think>过程的大语言模型,流式分离正文与思考部分。 - Tool Calling 控制:规范了大模型的工具调用范式,并内置了
ExitTool等逻辑拦截陷入循环调用的 Agent。
- 多级缓存对话隔离:深度结合 Redis (分布式层) 与 Caffeine (本地 JVM 高速缓存),针对不同
AppId下的上下文提供了极其严格的隔离边界。防止项目间 AI 语境和聊天历史 (Chat Memory) 发生污染交叉。 - 聊天历史落库:对话历史模块不仅存于缓存,更可持久化落入数据库,支持用户随时回溯。
- Redisson 基础限流:自定义
@RateLimit切面注解,支持通过 AOP 在任意 Controller 接口上实现基于IP、用户ID或是API 全局接口的频控,拦截恶意调用。 - AI 智能护栏 (Guardrails):
PromptSafetyInputGuardrail:前置拦截恶意提示词注入 (Prompt Injection) 及敏感词。RetryOutputGuardrail:对于生成的非法 JSON 代码块自动触发重试纠正补偿机制。
- 核心架构: Java 21, Spring Boot 3.x
- 数据库: MySQL 8.x, MyBatis-Plus
- 大模型生态: LangChain4j
- 高性能与中间件:
Redis(限流/持久缓存)Caffeine(极速本地缓存)Redisson(分布式锁/限流工具库)
- 高级特性: SSE (流式网络推送)、AOP (切面编程)
确保本机安装了以下环境:
- JDK 21+
- Maven 3.8+
- MySQL 8.0+
- Redis 6.0+
- Node.js 18+ (如果需要体验本地自动 npm 构建特性)
项目在 .gitignore 中已屏蔽敏感配置。请在 src/main/resources 下复制 application.yaml 并改名为 application-local.yaml,填入您的密钥:
spring:
datasource:
url: jdbc:mysql://localhost:3306/zero_stack?serverTimezone=Asia/Shanghai
username: root
password: root_password
data:
redis:
host: localhost
port: 6379
ai:
api-key: "YOUR_LANGCHAIN4J_SUPPORTED_API_KEY"
base-url: "YOUR_LLM_BASE_URL"mvn clean package -DskipTests
java -jar target/backend-0.0.1-SNAPSHOT.jarAPI 默认监听 8080 端口。