AI 嘴替,社交平台反杠机器人:第 0 篇-扬帆起航

大家好,我是欧达克。

正文

现在 AI 工具遍地生花,之前一直受限于种种原因,很多想法都没办法实际落地。今天突发奇想,为啥不搭着这波 AI 浪潮,搞点有趣的东西出来?一方面是完整体验下目前常用的 AI 工具,另一方面也是丰富下自己的技术栈。

项目介绍

首先是确定要做什么,对于要开发的应用,有这两点要求:

  1. 足够简单,验证 AI 辅助编程的实际效果;
  2. 具备一定的吸引力,至少让自己开发的时候不那么枯燥;

思考了一天,结合 DeepSeek 的输入,最终决定做一款 AI 嘴替 APP,能够根据社交评论中的攻击性言论,用AI生成高情商回复。


核心用户场景:

用户A在社交平台被杠精攻击 → 复制评论粘贴到App → AI生成高情商反击回复

MVP 版本功能很简单,本质上就是一个 AI 聊天机器人。主要想通过这个项目,实现:

  1. 使用 uni-app 工具,完成从 0 到 1 的 APP 项目开发;
  2. 测试目前常用 AI 编程辅助工具的优缺点;
  3. 走通 IOS/安卓的应用上架流程;
  4. 集成 AI 接口,方便后续快速接入 AI;
  5. 丰富前端技术栈;

技术栈

前端:

vue3 + uni-app;

  1. Cursor + Trae + + Cline + DeepSeek + UI 工具生成页面;
  2. uni-app 打包生成跨平台应用;

后端:

Spring Boot + Redis + MySQL + AI 模型

  1. 大模型的选型待定,待接入时看看实际表现;

效果:

完整前后端+AI链路

后端工程

个人主要从事后端开发,根据多年的开发经验,结合自己的思考,整理了一套开源的后端工程模板,分享给大家。本项目的后端代码也是直接基于该模板。

脚手架

Github 地址:github.com/oubin17/odk...。脚手架具备的功能包括但不限于:

  • 后端框架
  • 数据库
    • MySQL / Oracle
    • Redis(缓存支持)
    • ElasticSearch(全文索引)
  • 消息队列
    • RabbitMQ / Kafka(可选)
  • 安全
    • Sa-Token(单点登录、权限认证)
  • 构建工具
    • Maven
  • 其他
    • Lombok(简化代码)
    • Snowflake ID 生成器(分布式唯一 ID 生成)
    • Tracer (链路追踪)
    • MapStruct(对象映射)
    • Jackson(JSON 处理)

模块

项目模块依赖如下:

🌟 模块介绍

odk-base-template
  • web:提供 http 接口
  • rpc:预留
  • api:服务统一对外功能接口,调用方可以是 http,也可以是 rpc
  • service:服务处理模板封装,实现 api 接口,完成参数校验、参数转换、异常处理、日志打印等
  • manager:核心实现模块,业务逻辑处理
  • domain:领域模块,领域模型封装
  • infra:基础设施模块,外部系统集成
  • util:提供常用工具类
  • bootstrap:启动模块
odk-base-util

可以理解为基座,如数据库的集成,缓存的集成,ES 的集成;

对外提供统一的集成 jar 包,屏蔽底层的集成逻辑,消除由于版本差异带来的未知问题;

🚀 主要特性

  • 现代化技术栈:基于 Spring Boot 3 和 Java 17
  • 模块化设计:清晰的模块划分,便于扩展和维护。
  • 高拓展性:项目融合微服务的思想,非常方便由单体应用拓展到微服务应用。
  • 开箱即用:内置常用功能模块(如日志管理、异常处理、统一返回格式等)。
  • 易于集成 :支持与主流中间件(如 Redis、MySQL、RabbitMQ 等)无缝集成。项目采用互联网常用的基座方式,中间件的集成由工程odk-common-util实现,其他项目只需引入 odk-common-util 对应模块即可,无需关心如何对接。
  • 完善的文档:详细的代码注释和使用说明,降低学习成本。

基于脚手架的新工程搭建

步骤

Step1:克隆 util 应用到本地

git clone https://github.com/oubin17/odk-common-util.git

Step2:切换到相应的目录,将基座包部署到本地

bash 复制代码
cd database-spring-boot-starter
mvn clean install

cd odk-common-util-base
mvn clean install

cd redis-spring-boot-starter
mvn clean install

Step3:克隆模板应用到本地

git clone https://github.com/oubin17/odk-base-template.git

Step4:执行 SQL 脚本(这里默认已经具备 MySQL 和 Redis 环境,如果没有需要安装一下,配置信息可以写到配置文件 application-dev.properties 中),这里以我本地为例:

ini 复制代码
spring.odk.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.odk.datasource.url=jdbc:mysql://127.0.0.1:3306/odk_template
spring.odk.datasource.username=root
spring.odk.datasource.password=123456

# redis
spring.data.redis.host=localhost
spring.data.redis.port=6379
spring.data.redis.password=123456
spring.data.redis.database=0

SQL 脚本在项目根节点下 z-non-project-file/odk_template.sql

scss 复制代码
/*
 Navicat Premium Data Transfer

 Source Server         : mysql-docker-5.7.42
 Source Server Type    : MySQL
 Source Server Version : 50742 (5.7.42)
 Source Host           : localhost:3306
 Source Schema         : odk_template

 Target Server Type    : MySQL
 Target Server Version : 50742 (5.7.42)
 File Encoding         : 65001

 Date: 26/03/2025 19:23:40
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_role_permission_rel
-- ----------------------------
DROP TABLE IF EXISTS `t_role_permission_rel`;
CREATE TABLE `t_role_permission_rel` (
  `id` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `create_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `create_time` datetime(6) DEFAULT NULL,
  `tenant_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_time` datetime(6) DEFAULT NULL,
  `permission_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `role_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_permission_id` (`role_id`,`permission_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------
-- Table structure for t_user_access_token
-- ----------------------------
DROP TABLE IF EXISTS `t_user_access_token`;
CREATE TABLE `t_user_access_token` (
  `id` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `create_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `create_time` datetime(6) DEFAULT NULL,
  `tenant_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_time` datetime(6) DEFAULT NULL,
  `token_type` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `token_value` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `user_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_type_id` (`token_value`,`token_type`),
  UNIQUE KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------
-- Table structure for t_user_base
-- ----------------------------
DROP TABLE IF EXISTS `t_user_base`;
CREATE TABLE `t_user_base` (
  `id` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `create_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `create_time` datetime(6) DEFAULT NULL,
  `tenant_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_time` datetime(6) DEFAULT NULL,
  `user_status` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `user_type` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------
-- Table structure for t_user_identification
-- ----------------------------
DROP TABLE IF EXISTS `t_user_identification`;
CREATE TABLE `t_user_identification` (
  `id` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `create_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `create_time` datetime(6) DEFAULT NULL,
  `tenant_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_time` datetime(6) DEFAULT NULL,
  `identify_type` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `identify_value` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `user_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------
-- Table structure for t_user_permission
-- ----------------------------
DROP TABLE IF EXISTS `t_user_permission`;
CREATE TABLE `t_user_permission` (
  `id` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `create_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `create_time` datetime(6) DEFAULT NULL,
  `tenant_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_time` datetime(6) DEFAULT NULL,
  `permission_code` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `permission_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `status` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_permission_id` (`permission_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------
-- Table structure for t_user_profile
-- ----------------------------
DROP TABLE IF EXISTS `t_user_profile`;
CREATE TABLE `t_user_profile` (
  `id` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `create_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `create_time` datetime(6) DEFAULT NULL,
  `tenant_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_time` datetime(6) DEFAULT NULL,
  `user_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户ID',
  `birthday` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '生日',
  `gender` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '性别',
  `user_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户姓名',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------
-- Table structure for t_user_role
-- ----------------------------
DROP TABLE IF EXISTS `t_user_role`;
CREATE TABLE `t_user_role` (
  `id` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `create_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `create_time` datetime(6) DEFAULT NULL,
  `tenant_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_time` datetime(6) DEFAULT NULL,
  `role_code` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `role_name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `status` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_role_code` (`role_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------
-- Table structure for t_user_role_rel
-- ----------------------------
DROP TABLE IF EXISTS `t_user_role_rel`;
CREATE TABLE `t_user_role_rel` (
  `id` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `create_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `create_time` datetime(6) DEFAULT NULL,
  `tenant_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_by` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `update_time` datetime(6) DEFAULT NULL,
  `role_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `user_id` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_user_role_id` (`user_id`,`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

SET FOREIGN_KEY_CHECKS = 1;

执行到这一步,正常项目应该就直接能本地启动了:


以下为脚手架相关内容

Step5:创建 Maven Archetype

mvn archetype:create-from-project

这条命令会创建一个 target/generated-sources/archetype 目录,其中包含转换后的项目结构,Maven 已将项目转化为 archetype 模式;

Step6:安装 Archetype

bash 复制代码
cd target/generated-sources/archetype
mvn install

Step7:使用 Archetype 创建新项目,现在你的自定义 Archetype 已安装到本地仓库,可以用它生成新的项目。

ini 复制代码
mvn archetype:generate -DarchetypeGroupId=com.odk \
                       -DarchetypeArtifactId=base-template-archetype \
                       -DarchetypeVersion=1.0-SNAPSHOT \
                       -DgroupId=com.odk.ai \
                       -DartifactId=robotalk

-DgroupId=com.odk.ai 和 -DartifactId=robotalk 是新生成项目的 groupId 和 artifactId

生成完之后,代码可能还需要微调,这里不做演示了,都比较无脑,无非就是改些路径等等。

Step8:运行项目,项目启动正常。

分享

  1. 在 Github 上新建仓库:
  1. 按指令将本地项目推到远端:

项目 Github 地址:github.com/oubin17/rob...

说明

如果觉得使用脚手架拉出新应用麻烦, Step5-Step8 都可以跳过,直接基于脚手架工程开发也是完全没问题的

总结

好了,以上就是 AI 嘴替应用服务端的基本工程搭建,后续有更多进展再分享~

相关推荐
灵感__idea3 小时前
JavaScript高级程序设计(第5版):扎实的基本功是唯一捷径
前端·javascript·程序员
雨声不在4 小时前
用mkdocs写文档#自动更新github-page
github
曹天骄5 小时前
DaemonSet 与 Deployment 的主要区别
github
炼数成金7 小时前
程序员副业暴利指南:用Python+AI在小红书月入1W+的终极玩法
人工智能·程序员
444A4E8 小时前
C++ STL容器适配器深度剖析:从deque原理到stack/queue的底层实现
程序员
袁煦丞8 小时前
云端跳跃:在NAS上用cpolar重现马里奥的童趣时光
前端·程序员·远程工作
遇到困难睡大觉哈哈9 小时前
hexo+GitHub Pages搭建个人博客完整教程
github
uhakadotcom9 小时前
快速构建交互式数据应用:Streamlit入门指南
后端·面试·github
京东云开发者12 小时前
【转载】golang内存分配
程序员
大明哥_12 小时前
我决定放弃搞 Java 了
程序员