1547 字
8 分钟

Vibe Coding 实战:用 AI 从零写了一个短链接平台

最近 Vibe Coding 挺火的,我也试了一把——把需求写成完整的 prompt 丢给 AI,让它从零写了一个短链接服务平台。

项目是逐步长起来的:先给 AI 一份核心需求的 prompt 做一版,然后不断提新需求让 AI 迭代。看 Git 提交记录就能看出来这个演进过程。

记录一下我用的 prompt 原文、后续加了哪些功能、以及测试中踩的坑。

项目开源地址:GitHub · Gitee


初始 prompt#

以下是第一批发给 AI 的完整内容:

你是全栈开发工程师,精通 Nextjs 框架,请完成以下任务:

  1. 在项目中添加 Radix-UI 框架
  2. 实现 Nextjs 后端,连接 PostgreSQL 数据库
  3. 实现多用户管理(多个管理员和用户,管理员可以精确管理每个用户创建的短网址)
  4. 实现创建短网址功能,支持设置有效期(n小时/n天/n月/n年),或者年月日时分秒,永久(设计为用户权限)
  5. 实现短网址的密码保护功能,输入正确的授权码才能访问(随机生成 6 位纯数字密码)或者设定文本密码,默认随机生成 6 位密码,或者无密码
  6. 实现过期的短网址自动清理(兼容 Serverless,管理员可关闭)
  7. 暴露 API 接入功能,用户可以通过 token 验证来接入短网址生成,管理员可控制用户权限
  8. 仅管理员可创建用户,限制至少保留一个管理员账户

要求:

  • 用户界面美观,使用 Radix-UI 框架
  • 保持 UI 框架原有的样式,CSS 只用于控制布局而不是样式,实现夜间/日间模式
  • 代码合理分文件,代码注释合理,方便人工阅读和维护
  • 完成后编写 README.md 文件
  • 用户界面中不使用 Emoji 等表情,一律使用字体图标替代

事项:

  • 已安装好 PostgreSQL 在 Podman 中,可以通过 172.20.1.5:5432 连接
  • 数据库操作请使用 podman exec
  • 项目测试请创建使用 shorturl 用户/数据库
  • 使用 Prisma.js 连接数据库,方便后期添加其他数据库支持
  • 编写 package.json 中的运行命令,快速创建数据库相关内容
  • 编写打包并运行的 package.json script 指令

AI 基于这份 prompt 生成了项目骨架:数据模型、认证系统、短链接核心 CRUD、管理后台、Docker 部署。Git 记录上看大概是这几个提交:

7458a3e 初始化项目结构和数据库模型
6653133 添加 Radix-UI 组件库和主题系统
8c2a559 实现用户认证系统
59d7555 实现短链接核心功能
caa69ee 添加管理后台和系统功能
d5d2372 添加 Docker 支持和文档

后面陆续加的功能#

第一版跑起来之后,我又陆续给 AI 提了新需求,功能是一步步叠加上去的:

多域名支持 — 同一个短码在不同域名下独立,互不干扰。还加了域名级别的 HTTPS 开关。

IP 地理定位 — 访问记录里显示访客所在省份。用的离线 IP 库,不调外部接口。

安全审计日志 — 在 middleware 里无侵入记录每次请求,格式对标 ISO 27001。

API Key 加密存储 — 密钥用 AES-256-GCM 加密,查库用 SHA-256 哈希,不是明文存。

SQLite 支持 — 后期加的,entrypoint 脚本根据环境变量自动切换 PostgreSQL 或 SQLite,方便不同场景部署。

分页系统 — 链接列表和用户列表支持分页,可调每页条数。

复制模板 — 管理员可以写 JS 模板函数,自定义复制短链接时的格式。

看 Git 记录,项目从第一个核心功能到现在的完整状态,经历了 50+ 次提交,大部分都是「提需求 → AI 实现 → 测试验证 → 有问题再修」的循环。

踩的坑#

测试过程中发现的主要问题:

访问次数为 0 还能用 — 创建短链接时设了访问次数上限,用完后依然能正常跳转。把测试现象告诉 AI,它自己定位修了。

Docker 构建原生模块报错ts-ip2region2 依赖 C++ 编译,构建环境和运行环境不一致导致 .node 文件缺失。折腾了几轮才在 Dockerfile 里正确处理好预编译产物的复制。

有效期解析边界 — 某些格式的过期时间解析不对,测试发现后让 AI 修了。

SQLite 兼容性问题 — 后期加 SQLite 支持时,Prisma 的 enum 类型在 SQLite 里不支持,需要改成 string 类型,还有一些查询语法差异,逐个修了。

环境差异 — AI 的开发环境和 Docker 构建环境不一致,Node 版本、系统库不同导致各种小问题,反复对齐。

一点感受#

这次试下来最大的体会是:Vibe Coding 不是一次性把需求说清楚就完事了,项目是长出来的。

初始 prompt 决定了项目骨架,后续迭代才是血肉。每加一个功能,就是一段「提需求 → AI 实现 → 测试验证」的小循环。50 多次提交看下来,AI 写代码的效率确实高,但需求分解、功能设计、测试验证这些事还是得人来做。

写 prompt 本身就是在做架构设计——选什么技术栈、功能怎么拆、约束条件是什么,这些不想清楚,AI 也帮不了你。

网上常看到「文科生用 AI 也能做软件」的说法,好像不需要任何专业知识就能做出产品。但我的实际体验是:你不会因为有了 AI 就突然会做软件,你只是把写代码的活儿外包了而已。需求分析、功能设计、测试验证、部署运维,这些环节一个都少不了。不会因为你用了 AI,产品需求就能自动变清晰,bug 就能自动消失,部署就能一次成功。

AI 降低了写代码的门槛,但没有降低做产品的门槛。

Vibe Coding 实战:用 AI 从零写了一个短链接平台
https://memo.moieo.net/2026/05/23/153933/
作者
Moieo
发布于
2026-05-23
许可协议
CC BY-NC-SA 4.0