Skip to content

Commit 6f248db

Browse files
committed
docs: aI 编程全景:从辅助补全到自主工程
1 parent f06f8dd commit 6f248db

6 files changed

Lines changed: 926 additions & 1260 deletions

File tree

docs/.vitepress/theme/ArchiveYear.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import { data as allPosts } from "../../posts.data";
2+
import { data as allPosts, type Post } from "../../posts.data";
33
import { computed } from "vue";
44
import { useRoute, withBase } from "vitepress";
55
@@ -19,7 +19,7 @@ const yearPosts = computed(() => {
1919
const postsGroupedByMonth = computed(() => {
2020
const groups: Record<string, typeof yearPosts.value> = {};
2121
22-
yearPosts.value.forEach((post) => {
22+
yearPosts.value.forEach((post: Post) => {
2323
const date = new Date(post.date);
2424
const month = String(date.getMonth() + 1).padStart(2, "0");
2525
const key = month;

docs/.vitepress/theme/Giscus.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ watch(
5858
);
5959
6060
// 切换深色/浅色主题时同步通知 giscus iframe
61-
watch(isDark, (dark) => {
61+
watch(isDark, (dark: boolean) => {
6262
const iframe = container.value?.querySelector<HTMLIFrameElement>(
6363
"iframe.giscus-frame",
6464
);

docs/posts.data.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { createContentLoader } from "vitepress";
22

3-
interface Post {
3+
export interface Post {
44
title: string;
55
url: string;
66
date: string;
Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
---
2+
title: "AI 编程全景:从辅助补全到自主工程"
3+
date: 2026-05-09 14:31:26
4+
tags:
5+
- 工程化
6+
- JavaScript
7+
---
8+
9+
2026 年 5 月,AI 编程已经从"Tab 补全"进化到了能够独立完成复杂工程任务的阶段。GitHub Copilot Agent Mode、Cursor Composer、Claude Code、Windsurf 等工具正在重塑每一个开发者的日常工作流。本文梳理当前 AI 编程的技术格局、实践方法和需要警惕的陷阱。
10+
11+
## 编程 AI 的三个阶段
12+
13+
回顾过去四年,编程 AI 经历了清晰的三个阶段:
14+
15+
```
16+
2022-2023 ┃ 补全时代 ┃ 行级/块级代码补全,被动触发
17+
2024-2025 ┃ 对话时代 ┃ Chat + Apply,对话驱动修改
18+
2026- ┃ Agent 时代 ┃ 自主规划、多文件编辑、自我验证
19+
```
20+
21+
2026 年的标志性变化是 **Agent 模式成为默认工作方式**——开发者给出意图,AI 自行搜索代码库、制定计划、执行修改、运行测试,最后提交一个可审查的变更集。
22+
23+
## 当前主流工具对比
24+
25+
| 工具 | 核心能力 | 适用场景 |
26+
| --------------------------- | ------------------------------------------ | ---------------------- |
27+
| GitHub Copilot (Agent Mode) | VS Code 深度集成,多文件自主编辑,终端操作 | 日常开发全流程 |
28+
| Cursor | Composer 多文件编辑,强大的上下文理解 | 快速原型、大规模重构 |
29+
| Claude Code | 终端原生,超长上下文,复杂推理 | 架构分析、遗留代码迁移 |
30+
| Windsurf (Cascade) | 流式协作,主动感知代码变更 | 持续迭代开发 |
31+
| Devin / OpenHands | 全自主 SWE Agent,端到端完成 Issue | 独立修复 Bug、添加功能 |
32+
33+
所有工具都在向同一个方向收敛:**让 AI 理解整个项目的上下文,而不仅仅是当前文件。**
34+
35+
## Agent 模式的实际工作流
36+
37+
以一个典型的前端需求为例——"给博客系统添加标签云组件":
38+
39+
```typescript
40+
// 你只需要给出清晰的意图描述:
41+
// "在文章列表页添加一个标签云组件,
42+
// 点击标签筛选文章,支持多选,
43+
// 标签大小按文章数量加权"
44+
45+
// Agent 会自行完成以下步骤:
46+
// 1. 搜索现有代码,理解项目结构和组件风格
47+
// 2. 分析 posts.data.ts 了解数据源格式
48+
// 3. 创建 TagCloud.vue 组件
49+
// 4. 修改 PostList.vue 集成标签云
50+
// 5. 添加样式,保持与现有主题一致
51+
// 6. 运行构建验证无报错
52+
```
53+
54+
Agent 模式的核心优势不是"写代码更快",而是**降低了上下文切换的认知负担**。开发者不再需要在"思考要改什么"和"去改它"之间反复切换。
55+
56+
## Prompt 工程在编程中的进化
57+
58+
2024 年我们还在纠结怎么写 prompt,2026 年最重要的实践变成了**如何组织项目级的指令文件**
59+
60+
```markdown
61+
<!-- .github/copilot-instructions.md -->
62+
63+
## 代码规范
64+
65+
- 使用 Vue 3 Composition API + <script setup lang="ts">
66+
- 样式使用 scoped CSS,变量引用 VitePress 主题 token
67+
- 组件文件名 PascalCase,composable 文件名 use\*.ts
68+
69+
## 项目约定
70+
71+
- 博客文章放在 docs/posts/YYYY/MM/ 下
72+
- frontmatter 必须包含 title、date、tags
73+
- 所有日期格式 YYYY-MM-DD HH:mm:ss
74+
75+
## 测试要求
76+
77+
- 工具函数必须有单元测试
78+
- 组件需要有快照测试
79+
```
80+
81+
这类指令文件让 AI 在每次交互中自动对齐项目规范,比每次手动描述高效得多。
82+
83+
## 类型系统是 AI 编程的最佳搭档
84+
85+
一个反直觉的发现:**TypeScript 的严格类型在 AI 时代变得更重要了,而不是更不重要。** 原因有三:
86+
87+
1. **类型是最好的 prompt**——接口定义告诉 AI 数据的形状,比自然语言精确
88+
2. **类型是自动验证**——AI 生成的代码如果类型不过,立刻就能发现
89+
3. **类型是文档**——AI 读类型比读注释更可靠
90+
91+
```typescript
92+
// 好的类型定义 = 好的 AI 编程体验
93+
interface BlogPost {
94+
title: string;
95+
date: string; // ISO 8601 格式
96+
tags: string[];
97+
url: string;
98+
excerpt?: string; // 可选摘要
99+
readingTime?: number; // 分钟
100+
}
101+
102+
// AI 看到这个类型定义,就能生成正确的:
103+
// - 列表渲染组件
104+
// - 排序/筛选逻辑
105+
// - 日期格式化函数
106+
// - RSS feed 生成器
107+
```
108+
109+
## AI 生成代码的审查清单
110+
111+
AI 写的代码不等于正确的代码。以下是我日常审查 AI 生成代码时重点关注的方面:
112+
113+
```typescript
114+
const AI_CODE_REVIEW_CHECKLIST = {
115+
// 1. 安全性 —— AI 经常忽略输入验证
116+
security: [
117+
"用户输入是否做了转义/清洗?",
118+
"是否有 XSS、注入风险?",
119+
"API 密钥是否硬编码?",
120+
],
121+
122+
// 2. 边界条件 —— AI 倾向于处理 happy path
123+
edgeCases: [
124+
"空数组/null/undefined 是否处理?",
125+
"并发请求是否有竞态条件?",
126+
"网络失败时的降级策略?",
127+
],
128+
129+
// 3. 性能 —— AI 不了解你的数据规模
130+
performance: [
131+
"是否有不必要的重渲染?",
132+
"大列表是否需要虚拟滚动?",
133+
"是否有 N+1 查询?",
134+
],
135+
136+
// 4. 可维护性 —— AI 倾向于一次性方案
137+
maintainability: [
138+
"逻辑是否可以复用?",
139+
"命名是否与项目风格一致?",
140+
"是否引入了不必要的依赖?",
141+
],
142+
};
143+
```
144+
145+
## 2026 年需要警惕的反模式
146+
147+
### 1. "AI 能写就不用理解"
148+
149+
最危险的心态。AI 降低了写代码的门槛,但没有降低理解代码的门槛。不理解的代码就是技术债。
150+
151+
### 2. 过度依赖单次生成
152+
153+
复杂功能不应该期望一次 prompt 就完美生成。正确的做法是**分步迭代**:先生成骨架,review 后再补充细节。
154+
155+
### 3. 忽视测试因为"AI 看起来对"
156+
157+
AI 生成的代码通过肉眼审查≠通过测试。尤其是涉及异步逻辑、状态管理的代码,必须跑测试。
158+
159+
### 4. 所有场景都用 Agent
160+
161+
简单的改动(改一个 CSS 值、修一个 typo)直接手动改比等 Agent 搜索分析要快得多。
162+
163+
## 对前端工程师的实际影响
164+
165+
AI 编程最显著的影响不是"取代工程师",而是**重新分配了时间**
166+
167+
```
168+
AI 之前 AI 之后
169+
├── 40% 写实现代码 ├── 10% 写实现代码
170+
├── 20% 查文档/搜索 ├── 5% 查文档/搜索
171+
├── 15% 调试 ├── 25% 审查 AI 生成的代码
172+
├── 15% 设计/思考 ├── 30% 设计/思考/架构
173+
└── 10% 写测试 └── 30% 写测试和验证
174+
```
175+
176+
核心趋势很清楚:**实现的时间在减少,设计和验证的时间在增加**。能做好架构设计和代码审查的工程师,在 AI 时代的价值反而更高了。
177+
178+
## 写在最后
179+
180+
AI 编程工具在 2026 年已经成为和 Git、IDE 一样的基础设施。抵触它没有意义,盲目依赖它同样危险。最好的策略是:把 AI 当作一个非常勤奋但缺乏判断力的队友——让它多干活,但关键决策你来做。

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"docs:preview": "vitepress preview docs"
1010
},
1111
"devDependencies": {
12-
"vitepress": "^1.6.2"
12+
"vitepress": "^1.6.2",
13+
"vue": "^3.5.34"
1314
}
1415
}

0 commit comments

Comments
 (0)