AI编程实战:从零到一搭建全栈项目
大家好,我是Java烘焙师。今天不聊架构,介绍一下AI编程。
趁着假期和业余时间,研究了一下AI编程,并用Kiro、OpenCode,从零搭建了一个完整可运行的全栈项目,包括Java后端、前端页面、微信小程序。AI编程效率是真高,全程没怎么写代码,而是告知AI需求是什么、哪些地方要优化、哪里有bug。
实现的功能是:定期抓取Epic游戏商城的限时免费游戏,并生成json、HTML文件,部署到Cloudflare pages,用户可在页面上查看和搜索游戏。
效果
访问地址:https://free-games-website.pages.dev
web页面

H5页面

后台管理页面

微信小程序页面风格类似H5页面,但因个人不能做游戏相关的微信小程序,所以无法上架。
github代码统计:

架构和流程

采用Jamstack架构,后端服务预渲染好前端页面,部署到CDN,无需购买云服务器、存储资源。
- 在家里的PC或树莓派上运行后端服务,定时抓取Epic游戏商城rest API,保存游戏详情至DB,并输出预渲染的前端文件至本地
- crontab任务定时检测是否有git变更,有则把前端文件push到Github
- Github自动触发流程,部署至静态页面托管服务Cloudflare pages
- 用户查看pages.dev页面(Cloudflare免费二级域名)
主流程代码
很神奇的是,AI自己找到了Epic游戏商城的API,访问后解析到了字段格式,并写出了正确的DTO类。
以下是主流程代码片段:
/**
* Executes the complete crawling workflow:
* 1. Fetch data from Epic API
* 2. Parse JSON response
* 3. Save games to database
* 4. Generate static files for CDN deployment
* 5. Log task execution
*
* @return CrawlerResult containing statistics and errors
*/
@Transactional
public CrawlerResult crawlEpicGames() {
log.info("Starting Epic Games crawl task");
CrawlerTask task = new CrawlerTask();
task.setStartTime(LocalDateTime.now());
task.setStatus(CrawlerTask.TaskStatus.RUNNING);
task.setGamesCrawled(0);
// Log task start
logCrawlerTask(task);
CrawlerResult result = new CrawlerResult();
try {
// Step 1: Fetch data from Epic API
String jsonResponse = epicCrawler.fetchFreeGames();
// Step 2: Parse JSON response
List<Game> games = parseEpicResponse(jsonResponse);
result.setTotalFetched(games.size());
log.info("Parsed {} games from Epic API", games.size());
// Step 3: Save games to database
int savedCount = gameService.batchSaveGames(games);
// Note: batchSaveGames handles deduplication internally
// We can't easily distinguish new vs updated without querying before each save
// For simplicity, we report total saved count
result.setNewGames(savedCount);
result.setUpdatedGames(0);
// Step 4: Generate static files for CDN deployment
if (result.getTotalFetched() > 0) {
log.info("Generating static files after successful crawl");
boolean staticGenerated = staticPageService.generateStaticFiles();
if (staticGenerated) {
log.info("Static files generated successfully");
} else {
log.warn("Failed to generate static files");
}
}
// 5. Log task execution
// Update task status to SUCCESS
task.setEndTime(LocalDateTime.now());
task.setStatus(CrawlerTask.TaskStatus.SUCCESS);
task.setGamesCrawled(result.getTotalFetched());
task.setNewGames(result.getNewGames());
log.info("Crawl task completed successfully: {} games saved, {} new games, {} errors",
savedCount, result.getNewGames(), result.getErrors().size());
} catch (Exception e) {
// Handle fatal errors
String errorMsg = "Crawl task failed: " + e.getMessage();
log.error(errorMsg, e);
result.addError(errorMsg);
task.setEndTime(LocalDateTime.now());
task.setStatus(CrawlerTask.TaskStatus.FAILED);
task.setErrorMessage(errorMsg);
}
// Log final task status
logCrawlerTask(task);
return result;
}
AI编程助手
借助AI编程助手,可以实现从零搭建项目、辅助阅读源代码、日常开发。
AI编程助手和大语言模型,多到眼花缭乱,下面是一些常见的:
- AI编程助手:Claude code、Github copilot、cursor、Kiro、OpenCode、codex、百度文心快码、阿里通义灵码、字节trae
- 大模型:deepseek、qwen、kimi、minimax、glm、gpt、claude、gemini
我的核心诉求是:编码能力强、不依赖特定LLM模型、能免费使用。简单比较后,范围锁定在Kiro和OpenCode了。
Kiro
Kiro是Amazon推出的AI编程助手,包括桌面版和命令行版。官网地址:https://kiro.dev
以下是我在使用中发现的主要特点:
- 编程模式:同时支持spec规范驱动模式、vibe氛围编程模式。其中spec模式注重需求定义、项目技术设计,明确后再开始编码任务,会根据提示词生成需求文档requirements.md、技术设计文档design.md、任务拆解文档tasks.md,适合需求明确的项目、或新增复杂功能,文档清晰详细、任务拆解得当、单测覆盖全;而vibe模式注重快速探索、日常小迭代。实测spec模式相比vibe模式更耗费token


-
能感知整个项目上下文,生成全栈代码;也可指定文件、或具体行数,提出修改要求

-
持续迭代:借助Kiro生成项目代码、读取外部接口并生成类定义、修复bug、重构优化、给出上线部署步骤
-
功能强大:内置本地文件搜索、读写、执行命令、下载外部文件等功能。还支持扩展,连接MCP server,比如让LLM调用postman
-
不依赖特定LLM模型:默认自动选择,也可手动选择claude、deepseek等模型

-
免费额度:注册首月赠送500积分,每月有固定的50免费积分
OpenCode
OpenCode是一个开源的AI编程助手,也包括命令行版和桌面版。官网地址:https://opencode.ai
跟Kiro相比的主要差异是:
- vibe coding代表,claude code的开源平替,适合快速实现demo
- 开源社区维护:不受制于具体厂家,强调供应商中立
- 有限时免费额度:一般是LLM供应商推出新模型时、为了评估效果而加入活动
我在Windows电脑上安装了WSL环境和Debian操作系统,以便在Windows上获得原生的OpenCode CLI体验,以下是截图:


实战步骤
我一开始用OpenCode生成了可用的demo,然后又用Kiro重新实现了一遍,发现Kiro整体上更胜一筹,在需求理解、项目技术设计、代码质量、文档详实程度上都更好,极少需要人工介入改bug,可能跟Kiro的spec模式、以及LLM模型有关。所以后续会优先用Kiro,把OpenCode作为备选。
- 描述功能需求、技术栈:给出需求内容、技术栈的提示词,如果有不明确的,Kiro会询问确认
- 调试至可用:在Intellij idea中打开Kiro生成的工程目录,修改配置文件,连接本地MySQL,启动应用程序
- 持续迭代,修复bug,重构优化:如避免重复计数、本地化支持(语言、币种)、抽象静态文件生成类
- 总结skill:总结Java web+前端技术栈项目的skill,方便后续复用(相当于可复用的prompt模板,不用每次都重新耗费token)
更进一步
- AI全天候工作:借助内网穿透,在外也可远程连接家里的服务器(如树莓派)。当Kiro的autopilot选项打开时,给它提新需求、或修改意见,它可以自主修改代码
- 合规用法:不要在公司项目中使用外部AI编程工具,而是主动询问聊天式AI、不提供敏感信息,得到代码片段
感悟
- AI极大提升效率:一个晚上搭环境、跑通流程,再加一个晚上修bug,再加几个晚上完善功能、发布上线。一人公司变得可行了,AI擅长用前人的经验来实现功能。自己做好架构师、项目管理的角色,指挥、监督AI做好后端、前端(web前端、H5前端、客户端、小程序)、QA、运维等多角色的工作
- AI短期内代替不了人的创造力:如果发现了日常工作生活中的痛点,或者有好的idea,就去做吧
- 关于OpenClaw:有编程技能,优先用AI编程助理,而非OpenClaw。因为易有安全隐患、token耗费大,可能出现费了九牛二虎之力做出不能用的玩具的情况,不过好处就是OpenClaw可以自主迭代,能用好也不错
你有什么想法呢?欢迎交流探讨。

浙公网安备 33010602011771号