Vibe Coding 实战:用 AI 从零写了一个短链接平台
最近 Vibe Coding 挺火的,我也试了一把——把需求写成完整的 prompt 丢给 AI,让它从零写了一个短链接服务平台。
项目是逐步长起来的:先给 AI 一份核心需求的 prompt 做一版,然后不断提新需求让 AI 迭代。看 Git 提交记录就能看出来这个演进过程。
记录一下我用的 prompt 原文、后续加了哪些功能、以及测试中踩的坑。
建议直接阅读原文:https://memo.moieo.net/2026/05/23/153933/
初始 prompt
以下是第一批发给 AI 的完整内容:
你是全栈开发工程师,精通 Nextjs 框架,请完成以下任务:
- 在项目中添加 Radix-UI 框架
- 实现 Nextjs 后端,连接 PostgreSQL 数据库
- 实现多用户管理(多个管理员和用户,管理员可以精确管理每个用户创建的短网址)
- 实现创建短网址功能,支持设置有效期(n小时/n天/n月/n年),或者年月日时分秒,永久(设计为用户权限)
- 实现短网址的密码保护功能,输入正确的授权码才能访问(随机生成 6 位纯数字密码)或者设定文本密码,默认随机生成 6 位密码,或者无密码
- 实现过期的短网址自动清理(兼容 Serverless,管理员可关闭)
- 暴露 API 接入功能,用户可以通过 token 验证来接入短网址生成,管理员可控制用户权限
- 仅管理员可创建用户,限制至少保留一个管理员账户
要求:
- 用户界面美观,使用 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 降低了写代码的门槛,但没有降低做产品的门槛。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)