被一个 shared 目录卡住后,我重新思考了 AI 时代的代码封装

5 阅读2分钟

昨天,我新建一个项目,准备用 AI 工具快速生成全栈代码。
结果刚起步就卡住了:项目需要依赖一个内部 shared/prisma/ 模块,但我没有访问权限。

申请权限要走流程,等审批可能要一天。
而讽刺的是——我用 AI 本来能在 10 分钟内写出一模一样的数据库访问层。

这件事让我意识到:在 AI 编程普及的今天,有些“封装”正在变成枷锁。

🔧 手工时代 vs AI 时代:封装的价值变了

在纯手工开发时代,封装的核心目标是:

  • 少写重复代码
  • 统一团队规范
  • 避免低级错误

所以我们会建 shared/ 目录,把通用逻辑集中管理。

但 AI 时代,情况不同了:

  • AI 不怕写重复代码,它能秒级生成标准化 CRUD。
  • AI 怕黑盒:如果封装没有清晰类型或文档,AI 无法理解,只能瞎猜。
  • AI 追求敏捷:项目启动越快越好,强依赖外部模块反而拖慢节奏。

🛠️ 我的建议:做“AI 友好的封装”

不是不要封装,而是要换一种方式封装。以下是我现在新项目的实践:

✅ 1. 每个项目自带 Prisma Schema

不再依赖外部 ORM 封装,直接在项目内定义 schema.prisma
AI 能直接读取模型,生成对应 service 和 controller。

✅ 2. 共享能力用 npm 私有包或脚手架

通用工具函数(如日志、分页、校验)打包成 @company/utils,按需安装,非强制依赖

✅ 3. 强制类型导出

任何共享模块必须导出完整的 TypeScript 类型,确保 AI 能安全调用。

✅ 4. 项目结构扁平清晰

避免多层嵌套或魔法路径。AI 更擅长处理“所见即所得”的代码结构。

💡 一个原则:让 AI 能“看懂”你的代码

AI 编程的本质,是基于上下文的模式匹配与生成
如果你的项目充满隐式约定、动态 require、无文档的 shared 模块,AI 就会“失明”。

相反,如果你的代码:

  • 目录清晰
  • 类型完整
  • 逻辑显式
  • 无隐藏依赖

那么 AI 不仅能读懂,还能帮你扩展、重构、测试。

📌 结语

那个卡住我的 shared/prisma/,或许初衷是好的。
但在 AI 时代,“统一”不应以牺牲“敏捷”为代价

未来的工程体系,应该让新成员(无论是人还是 AI)都能在 5 分钟内跑起一个项目——而不是卡在一个权限申请上。


你在用 AI 编程时,是否也被“封装”绊住过?
欢迎留言交流,一起打造更 AI 友好的开发环境!