谈谈前端 AI 工程化

0 阅读14分钟

让 AI 真正成为你的「结对编程搭档」

如果说 AI 编程助手是一把瑞士军刀,那 AI 工程化就是教你如何把这把刀磨得更锋利、用得更顺手的方法论。

前言:AI 编程的「野蛮生长」与「工程化觉醒」

你是否有过这样的体验?

  • 让 AI 写代码,它写出来的风格和项目完全不搭
  • 每次开新会话,都要重复解释一遍项目背景
  • AI 生成的代码能跑,但完全不符合团队规范
  • 让 AI 改一个 bug,它把旁边好好的逻辑也改坏了

这些问题的根源不是 AI 不够聪明,而是你没有给它足够的「上下文」和「约束」。

AI 工程化,就是用工程化的思维,系统性地解决「人与 AI 协作」中的效率和质量问题。


核心概念:先搞懂这些「黑话」

LLM(大语言模型)—— AI 的「大脑」

类比:如果把 AI 编程助手比作一个新入职的高级工程师,LLM 就是他的「大脑」和「知识储备」。

LLM(Large Language Model)是一切 AI 编程能力的基座。它通过海量代码和文本训练,具备了:

  • 代码理解能力:能读懂你的代码意图
  • 代码生成能力:能根据描述生成代码
  • 推理能力:能分析问题、规划方案
  • 上下文理解:能在对话中保持连贯

常见的 LLM:

模型特点适用场景
Claude (Anthropic)长上下文、逻辑严谨复杂工程任务、代码审查
GPT-4o (OpenAI)通用能力强、生态丰富全栈开发、快速原型
DeepSeek Coder代码专项优化、性价比高纯代码生成、算法实现
Qwen (通义千问)中文理解强、开源可控国内项目、私有化部署

关键认知:LLM 再强大,也只是一个「有知识但没有项目经验的新人」。它需要你告诉它:项目用什么技术栈、团队有什么规范、业务有什么特殊逻辑。这就是 Rules 的价值。


Rules(规则)—— AI 的「员工手册」

类比:Rules 就像你给新员工的「入职须知 + 编码规范 + 项目文档」的合集。

Rules 是写给 AI 看的指令文件,告诉 AI:

  • 你是谁(角色定义)
  • 项目是什么(技术栈、架构)
  • 怎么写代码(编码规范)
  • 怎么做事(工作流程)
Rules 的分类
Rules 体系
├── 通用 Rules(Global)—— 所有项目通用的基础规范
│   ├── 语言偏好(用中文对话、英文思考)
│   ├── 代码风格(注释规范、命名规范)
│   └── 安全规则(不泄露密钥、不删生产数据)
│
├── 项目 Rules(Project)—— 特定项目的技术上下文
│   ├── 技术栈说明(React/Vue + TypeScript)
│   ├── 目录结构(pages/、components/、services/)
│   ├── 编码规范(组合式 API、Hooks、状态管理)
│   └── 路由/请求/状态管理的统一用法
│
└── 需求 Rules(Task)—— 具体需求的实现指导
    ├── 需求理解文档
    ├── 技术方案设计
    ├── 任务拆解清单
    └── 会话交接文档
真实案例:一个项目 Rule 长什么样?
# 项目纵览(Next.js + React + TypeScript)

- 框架:Next.js 14(App Router)
- 语言:TypeScript 严格模式
- 状态管理:Zustand
- 样式方案:Tailwind CSS
- 路径别名:统一使用 `@/` 绝对路径导入
- 组件库:shadcn/ui

## Service 层规范
- 统一请求实例:`src/lib/request.ts`(基于 fetch 封装)
- 业务服务放在 `src/services/xxx.service.ts`
- 严禁在组件中直接发起请求

## 组件规范
- 使用函数式组件 + Hooks
- Props 必须定义 TypeScript 接口
- 复杂逻辑抽离为自定义 Hook(以 use 开头)

为什么 Rules 这么重要? 因为 LLM 的上下文窗口是有限的。Rules 让 AI 在每次对话开始时,就自动加载最关键的项目信息,而不需要你每次手动复述。

Rules 的触发方式
触发方式说明适用场景
Always Apply每次对话自动加载项目规范、通用规则
File Match编辑特定文件时加载组件规范、样式规范
Manual手动引用时加载特定需求文档、参考资料

MCP(Model Context Protocol)—— AI 的「外接设备」

类比:如果 LLM 是大脑,Rules 是记忆,那 MCP 就是 AI 的「手」和「眼睛」——让它能触达外部世界。

MCP(模型上下文协议)是 Anthropic 提出的开放标准,定义了 AI 如何与外部工具和数据源交互。你可以把它理解为 AI 世界的「USB 接口」——标准化、可插拔、即插即用。

MCP 解决了什么问题?

没有 MCP 之前:

你:帮我看看这个接口的字段定义
AI:我无法访问你的接口文档,请把内容贴给我
你:(手动复制粘贴一大段 JSON SchemaAI:好的,我看到了...

有了 MCP 之后:

你:帮我看看用户登录接口的定义
AI:(自动调用接口文档 MCP 获取信息)
    我已经获取到了接口定义,请求参数是...返回字段是...
前端常用的 MCP 服务
MCP 服务能力使用场景
文档 MCP读取飞书/Notion/语雀文档获取产品需求文档
Swagger/OpenAPI MCP读取接口定义获取后端接口字段、类型
Figma MCP读取设计稿获取 UI 尺寸、颜色、布局
GitHub MCP操作 Git 仓库创建 PR、查看 Issue
数据库 MCP查询数据库 Schema了解数据结构
Playwright MCP浏览器自动化E2E 测试、页面截图
MCP 的配置方式
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_TOKEN": "ghp_xxx" }
    },
    "figma": {
      "command": "npx",
      "args": ["-y", "figma-developer-mcp", "--figma-api-key=xxx"]
    },
    "playwright": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-playwright"]
    }
  }
}

MCP 的本质:它把「人工复制粘贴信息给 AI」这个动作,变成了「AI 自己去查」。这不仅节省时间,更重要的是保证了信息的准确性和实时性。


Skill(技能)—— AI 的「肌肉记忆」

类比:如果 Rules 是「知道该怎么做」,Skill 就是「已经做过很多次,形成了固定套路」。

Skill 是预定义的、可复用的操作模式。它把复杂的多步骤任务封装成一个「技能」,AI 可以直接调用。

Skill 的典型形态
技能:创建新页面
├── 步骤1:在 src/app/ 下创建路由目录
├── 步骤2:创建 page.tsx(使用标准页面模板)
├── 步骤3:创建 layout.tsx(如需独立布局)
├── 步骤4:创建对应的 hooks 文件
├── 步骤5:创建对应的 service 文件
└── 步骤6:添加页面级别的类型定义
Skill vs Rules 的区别
维度RulesSkill
本质知识/规范操作/流程
作用告诉 AI「什么是对的」告诉 AI「怎么做」
触发自动/条件加载主动调用
类比员工手册SOP 操作手册

Steering(导航文件)—— AI 的「GPS 导航」

类比:Steering 就像开车时的 GPS——不是告诉你交通规则(那是 Rules),而是在你开车的过程中,实时告诉你「下一步往哪走」。

Steering 文件是一种更灵活的上下文注入机制,可以根据不同条件动态加载不同的指导信息。

---
inclusion: fileMatch
fileMatchPattern: "src/components/**/*.tsx"
---

# 组件开发导航

当你在开发组件时,请注意:
1. 必须使用函数式组件 + TypeScript
2. Props 必须定义接口类型
3. 复杂逻辑抽离为自定义 hooks(以 use 开头)
4. 导出时使用命名导出,组件名使用 PascalCase

Hook(钩子)—— AI 的「条件反射」

类比:Hook 就像人的条件反射——当特定事件发生时,自动触发特定行为,不需要你手动指挥。

{
  "name": "Lint on Save",
  "version": "1.0.0",
  "when": {
    "type": "fileEdited",
    "patterns": ["*.ts", "*.tsx"]
  },
  "then": {
    "type": "runCommand",
    "command": "npm run lint"
  }
}
常见的 Hook 场景
触发事件动作效果
文件保存运行 lint实时发现代码问题
提交代码前运行测试防止引入 bug
AI 写文件前检查规范确保代码符合标准
任务完成后运行构建验证代码可编译

Agent(智能体)—— AI 的「自主行动模式」

类比:普通的 AI 对话像「问答」——你问一句它答一句。Agent 模式像「委托」——你说一个目标,它自己规划步骤、调用工具、完成任务。

Agent 的核心能力:

  • 规划:把大任务拆解为小步骤
  • 执行:调用工具(MCP)完成每个步骤
  • 观察:检查执行结果是否符合预期
  • 调整:根据结果调整后续计划
用户:帮我实现用户登录的表单页面

Agent 的思考过程:
1. 读取技术方案文档,了解登录功能的设计要求
2. 读取现有代码,了解项目的表单组件用法
3. 调用 Figma MCP,获取登录页的 UI 设计稿
4. 调用 OpenAPI MCP,获取登录接口的定义
5. 编写组件代码
6. 运行 lint 和类型检查
7. 更新任务进度文档

它们之间的关系:一张图说清楚

┌─────────────────────────────────────────────────────────┐
│                    AI 编程助手(IDE)                      │
│                                                         │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐          │
│  │   LLM    │    │  Rules   │    │ Steering │          │
│  │  (大脑)   │◄───│ (记忆)   │◄───│  (导航)  │          │
│  └────┬─────┘    └──────────┘    └──────────┘          │
│       │                                                  │
│       ▼                                                  │
│  ┌──────────┐    ┌──────────┐    ┌──────────┐          │
│  │  Agent   │───►│   MCP    │───►│ 外部服务  │          │
│  │ (行动力)  │    │  (接口)  │    │(GitHub等) │          │
│  └────┬─────┘    └──────────┘    └──────────┘          │
│       │                                                  │
│       ▼                                                  │
│  ┌──────────┐    ┌──────────┐                           │
│  │  Skill   │    │   Hook   │                           │
│  │ (套路)   │    │(条件反射) │                           │
│  └──────────┘    └──────────┘                           │
│                                                         │
└─────────────────────────────────────────────────────────┘

一句话总结

LLM 提供智能,Rules 提供知识,MCP 提供能力,Skill 提供套路,Steering 提供导航,Hook 提供自动化,Agent 把这一切串起来自主工作。


工程化实践:如何在前端项目中落地?

第一步:建立 Rules 体系

这是 AI 工程化的地基。一个成熟的 Rules 体系应该分层设计:

.cursor/rules/(或 .kiro/steering/)
├── general.mdc          # 通用规则:语言、风格、安全
├── project.mdc          # 项目规则:技术栈、目录、规范
├── workflow.mdc         # 工作流:需求→分析→设计→编码
├── technical-design.mdc # 技术方案规范
├── figma.mdc            # UI 还原规范
├── typescript.mdc       # TS 编码规范
└── FEAT-1234/           # 具体需求的 Rules
    ├── 需求理解.md
    ├── 需求分析.md
    ├── 技术方案设计.md
    └── 任务拆解.md
写好 Rules 的关键原则
  1. 具体胜于抽象

    • ❌ "请写出高质量的代码"
    • ✅ "使用函数式组件 + TypeScript,Props 必须定义接口,复杂逻辑抽离为自定义 hooks"
  2. 示例胜于描述

    • ❌ "请求要统一封装"
    • ✅ 给出一个完整的 service 文件示例代码
  3. 约束胜于建议

    • ❌ "建议使用绝对路径"
    • ✅ "严禁使用深层相对路径,统一使用 @/ 别名"
  4. 分层胜于堆砌

    • 不要把所有规则写在一个文件里
    • 按职责分文件,按条件触发加载

第二步:接入 MCP 服务

根据团队的工具链,接入对应的 MCP 服务:

团队工具链                    对应 MCP
─────────────────────────────────────
飞书/Notion(需求文档)  →    文档 MCP
Swagger(接口文档)      →    OpenAPI MCP
Figma(UI 设计)         →    Figma MCP
GitHub(代码管理)       →    GitHub MCP
PostgreSQL(数据库)     →    Database MCP
Sentry(错误监控)       →    Sentry MCP

接入 MCP 的收益

场景没有 MCP有 MCP
看接口文档手动打开 Swagger → 复制 → 粘贴给 AIAI 自动读取,直接生成类型定义
还原 UI手动量尺寸 → 告诉 AI 参数AI 自动读取 Figma 节点数据
查 Bug手动看 Sentry 日志 → 描述给 AIAI 自动获取错误堆栈和上下文

第三步:设计工作流(Workflow)

这是 AI 工程化的核心——把「人与 AI 协作」的过程标准化。

一个完整的 AI 辅助开发工作流
graph TD
    A[需求文档] --> B[需求理解阶段]
    B --> C[需求分析阶段]
    C --> D[技术方案设计]
    D --> E[任务拆解]
    E --> F[编码实施]
    F --> G[代码审查与验收]
    
    B -->|文档 MCP| B1[自动读取需求文档]
    C -->|代码分析| C1[理解现有代码结构]
    D -->|OpenAPI MCP| D1[获取接口定义]
    D -->|Figma MCP| D2[获取 UI 设计]
    F -->|Agent 模式| F1[自主编码+验证]
    G -->|GitHub MCP| G1[创建 PR + Review]
每个阶段 AI 做什么、人做什么?
阶段AI 的职责人的职责
需求理解读取文档、提炼要点、识别歧义确认理解、补充信息
需求分析分析代码现状、拆解功能模块确认页面路径、提供接口文档
技术方案设计架构、识别难点、规划方案审核方案、确认技术选型
任务拆解拆解为可执行任务、标注依赖确认优先级、调整粒度
编码实施按任务逐步实现、自动验证代码审查、功能验收

第四步:建立质量保障机制

AI 生成的代码不能「无脑信任」,需要建立多层质量保障:

质量保障体系
├── Hook 层:文件保存时自动 lint + 类型检查
├── Rules 层:编码规范约束(AI 生成即合规)
├── 验收层:每个功能单元人工验收
├── 测试层:关键路径自动化测试
└── 回溯层:产物文档同步更新机制
质量度量指标

衡量 AI 工程化效果的几个关键指标:

指标含义目标
首次生成合规率AI 生成的代码无需修改即符合规范的比例> 80%
上下文命中率AI 正确理解项目上下文的比例> 90%
返工率AI 生成后需要人工大幅修改的比例< 20%
工作流完成率按标准流程走完的需求比例> 70%

这些指标越好,说明 Rules 写得越精准、MCP 接入越完善、工作流设计越合理。


思考:如何让 AI 工程化真正落地?

思考一:Rules 不是一次性的,是「活文档」

很多团队写了 Rules 就放在那里不管了。但好的 Rules 应该:

  • 随项目演进:新增了组件库?更新 Rules
  • 随问题修正:AI 总犯同一个错?加一条 Rule
  • 随团队共识:团队讨论出新规范?同步到 Rules

思考二:MCP 的价值在于「消除信息差」

AI 最大的短板不是「不会写代码」,而是「不知道该写什么」。MCP 的核心价值是:

  • 让 AI 能直接获取「最新的、准确的」业务信息
  • 消除「人工转述」过程中的信息损耗
  • 让 AI 的输出从「大概对」变成「精确对」

思考三:工作流的本质是「信任的渐进建立」

为什么要分阶段?为什么每个阶段都要人确认?

因为 AI 工程化不是「把活全丢给 AI」,而是:

  1. 先让 AI 理解(需求理解)→ 人确认理解正确
  2. 再让 AI 分析(需求分析)→ 人确认分析到位
  3. 然后让 AI 设计(技术方案)→ 人确认方案可行
  4. 最后让 AI 执行(编码实施)→ 人验收代码质量

每一步都在建立信任,每一步都在缩小 AI 犯错的空间。

思考四:不要追求 100% AI 生成

AI 工程化的目标不是「完全替代人」,而是:

  • 把 80% 的重复劳动交给 AI(模板代码、CRUD、样式还原)
  • 让人专注于 20% 的核心决策(架构设计、业务逻辑、用户体验)

最高效的模式是:人做决策,AI 做执行;人定方向,AI 填细节。


快速上手:三步开始你的 AI 工程化

Step 1:写一份项目 Rule(30 分钟)

把你项目的技术栈、目录结构、编码规范写成一份 markdown,放到 .cursor/rules/.kiro/steering/ 目录下。

Step 2:接入一个 MCP(1 小时)

从最常用的工具开始,比如 GitHub MCP 或 Figma MCP。让 AI 能自动读取外部信息,这一个改变就能节省大量时间。

Step 3:定义一个简单的工作流(2 小时)

不需要一步到位。先定义「需求理解 → 编码实施」两个阶段,跑通后再逐步完善。


效果对比:工程化前 vs 工程化后

维度工程化前工程化后
上下文传递每次手动复述项目背景Rules 自动加载
信息获取手动复制粘贴文档MCP 自动获取
代码规范AI 随机风格,人工修正首次生成即符合规范
任务管理口头描述,容易遗漏文档化追踪,可回溯
质量保障全靠人工 reviewHook 自动检查 + 人工验收
知识沉淀散落在聊天记录中结构化产物文档
协作效率单次对话有效跨会话、跨成员可复用

总结

AI 工程化 = Rules(知识) + MCP(能力) + Workflow(流程) + Hook(自动化)

它不是一个工具,而是一套方法论。核心思想是:

用工程化的方式,把 AI 从「偶尔好用的玩具」变成「稳定可靠的生产力工具」。

就像软件工程把「写代码」变成了「做工程」一样,AI 工程化把「和 AI 聊天」变成了「与 AI 协作」。


延伸阅读


如果这篇文章对你有帮助,欢迎点赞收藏。你的团队是怎么做 AI 工程化的?欢迎在评论区分享实践经验。