“我不生产代码,我只是 AI 代码的搬运工…不对,是清洁工。”
—— 某位刚入职的 Vibe Coding Cleanup Specialist

前言:一个让老程序员笑出声的新职位

2026 年 1 月,我在 LinkedIn 上看到了一个让我差点把咖啡喷到屏幕上的招聘信息:

职位:Senior Vibe Coding Cleanup Specialist
薪资:$180,000 - $220,000/年
职责:修复 AI 生成的代码,将 Vibe Coding 产出的原型转化为生产级应用

我揉了揉眼睛,确认自己没看错。

专门给 AI 擦屁股的工作,年薪 22 万美元?

这让我想起了一个经典笑话:

2024 年:AI 要取代程序员了!
2025 年:程序员开始用 AI 写代码了!
2026 年:程序员开始专门修 AI 写的代码了!
2027 年:AI 开始修 AI 写的代码了!
2028 年:程序员开始修 AI 修的 AI 写的代码了!

历史总是惊人的相似,只是薪资越来越高。


第一章:什么是 Vibe Coding Cleanup Specialist?

1.1 先回顾一下 Vibe Coding

如果你还不知道什么是 Vibe Coding,让我快速科普一下:

2025 年 2 月,OpenAI 联合创始人 Andrej Karpathy 发了一条推文,创造了"Vibe Coding"这个词:

“有一种新的编程方式,我称之为’Vibe Coding’——你完全沉浸在氛围中,拥抱指数级增长,然后忘记代码的存在。”

简单说就是:让 AI 写代码,你不看代码,只看结果,感觉对了就上线。

到了 2025 年底,"Vibe Coding"被柯林斯词典评为年度词汇。

然后到了 2026 年…

1.2 Vibe Coding 的"后遗症"

当越来越多的项目用 Vibe Coding 快速上线后,问题开始浮现:

// vibe-coding-aftermath.ts
// Vibe Coding 的后遗症统计

interface VibeCodingProblems {
  category: string
  percentage: number
  realWorldExample: string
}

const problems: VibeCodingProblems[] = [
  {
    category: "安全漏洞",
    percentage: 45,
    realWorldExample:
      "某创业公司用 Vibe Coding 做的支付系统,上线三天被黑客薅走 50 万",
  },
  {
    category: "性能问题",
    percentage: 38,
    realWorldExample:
      "一个简单的列表页,加载时间 15 秒,因为 AI 写了 O(n³) 的算法",
  },
  {
    category: "不可维护",
    percentage: 67,
    realWorldExample: "三个月后想改个功能,发现没人看得懂代码,包括 AI 自己",
  },
  {
    category: "技术债务",
    percentage: 82,
    realWorldExample: "快速上线的 MVP,现在需要 6 个月重构才能加新功能",
  },
]

console.log("📊 Vibe Coding 后遗症统计报告\n")
console.log("数据来源:2026年1月 AI代码质量研究报告\n")

for (const problem of problems) {
  const bar =
    "█".repeat(Math.floor(problem.percentage / 5)) +
    "░".repeat(20 - Math.floor(problem.percentage / 5))
  console.log(`${problem.category}`)
  console.log(`  [${bar}] ${problem.percentage}%`)
  console.log(`  案例:${problem.realWorldExample}\n`)
}

于是,一个新职业诞生了:Vibe Coding Cleanup Specialist。

1.3 官方定义

根据各大招聘网站的描述,Vibe Coding Cleanup Specialist 是:

一位资深软件工程师,专门负责修复 AI 生成的代码,将 Vibe Coding 产出的原型转化为安全、可扩展、可维护的生产级应用。

翻译成人话就是:专门给 AI 擦屁股的人。


第二章:为什么这个职位这么火?

2.1 市场需求爆炸

让我们看看数据:

// cleanup-specialist-market.ts
// Vibe Coding Cleanup Specialist 市场分析

interface MarketData {
  year: number
  vibeCodingProjects: number // 使用Vibe Coding的项目数
  cleanupDemand: number // 清理需求(工作岗位数)
  averageSalary: number // 平均薪资(美元)
}

const marketTrend: MarketData[] = [
  {
    year: 2024,
    vibeCodingProjects: 10000,
    cleanupDemand: 500,
    averageSalary: 120000,
  },
  {
    year: 2025,
    vibeCodingProjects: 150000,
    cleanupDemand: 15000,
    averageSalary: 150000,
  },
  {
    year: 2026,
    vibeCodingProjects: 800000,
    cleanupDemand: 85000,
    averageSalary: 200000,
  },
]

console.log("📈 Vibe Coding Cleanup Specialist 市场趋势\n")

for (const data of marketTrend) {
  console.log(`${data.year}年:`)
  console.log(
    `  Vibe Coding项目数:${data.vibeCodingProjects.toLocaleString()}`
  )
  console.log(`  清理岗位需求:${data.cleanupDemand.toLocaleString()}`)
  console.log(`  平均年薪:$${data.averageSalary.toLocaleString()}\n`)
}

// 计算增长率
const growth2025to2026 = (((85000 - 15000) / 15000) * 100).toFixed(0)
console.log(`🚀 2025-2026年岗位需求增长:${growth2025to2026}%`)

岗位需求一年增长 467%,这增速比 AI 生成 bug 的速度还快。

2.2 为什么薪资这么高?

原因很简单:这活儿太难干了。

┌─────────────────────────────────────────────────────────────┐
│           Vibe Coding Cleanup Specialist 的日常             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   09:00  打开项目,看到 AI 生成的 5000 行代码               │
│   09:05  发现没有一行注释                                   │
│   09:10  发现变量名全是 a, b, c, temp, temp2                │
│   09:30  发现一个函数有 500 行                              │
│   10:00  发现这个函数其实可以用 5 行写完                    │
│   10:30  发现 SQL 注入漏洞                                  │
│   11:00  发现 XSS 漏洞                                      │
│   11:30  发现密码是明文存储的                               │
│   12:00  午饭,但已经没有食欲了                             │
│   13:00  开始重构                                           │
│   14:00  发现改一个地方,十个地方崩了                       │
│   15:00  发现没有测试                                       │
│   16:00  开始写测试                                         │
│   17:00  发现测试覆盖率 0%                                  │
│   18:00  下班?不存在的                                     │
│   22:00  终于搞定了一个模块                                 │
│   22:01  产品经理说需求变了                                 │
│   22:02  💀                                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

能干这活儿的人,值这个价。


第三章:Cleanup Specialist 的核心技能

3.1 技能一:代码考古学

是的,你没看错,考古学

因为 AI 生成的代码经常像古代遗迹一样神秘莫测:

// code-archaeology.ts
// 代码考古学示例

// AI 生成的原始代码(真实案例改编)
function processData(d: any) {
  let r = []
  for (let i = 0; i < d.length; i++) {
    let t = d[i]
    if (t.s === 1) {
      let n = t.n
      let v = t.v * 1.1
      if (v > 100) {
        v = 100
      }
      r.push({ n: n, v: v, s: 1 })
    } else if (t.s === 2) {
      let n = t.n
      let v = t.v * 0.9
      if (v < 0) {
        v = 0
      }
      r.push({ n: n, v: v, s: 2 })
    }
  }
  return r
}

// Cleanup Specialist 的考古成果
// 经过 2 小时的逆向工程,终于搞明白了:
// d = data (数据数组)
// r = result (结果数组)
// t = item (当前项)
// s = status (状态:1=活跃,2=非活跃)
// n = name (名称)
// v = value (值)

// 重构后的代码
interface DataItem {
  name: string
  value: number
  status: "active" | "inactive"
}

function processUserData(items: DataItem[]): DataItem[] {
  return items.map((item) => {
    const multiplier = item.status === "active" ? 1.1 : 0.9
    const newValue = Math.max(0, Math.min(100, item.value * multiplier))

    return {
      name: item.name,
      value: newValue,
      status: item.status,
    }
  })
}

// 代码行数:从 20 行变成 15 行
// 可读性:从 💀 变成 ✅
// 维护性:从 "谁写的我杀谁" 变成 "这代码真清晰"

3.2 技能二:安全漏洞猎人

AI 生成的代码,安全漏洞是标配:

// security-hunter.ts
// 安全漏洞猎人的日常

// ❌ AI 生成的登录代码(漏洞百出)
app.post("/login", async (req, res) => {
  const { username, password } = req.body

  // 漏洞1:SQL注入
  const query = `SELECT * FROM users WHERE username = '${username}' AND password = '${password}'`
  const user = await db.query(query)

  // 漏洞2:密码明文比较
  if (user && user.password === password) {
    // 漏洞3:敏感信息泄露
    res.json({ success: true, user: user })
  }
})

// ✅ Cleanup Specialist 修复后的代码
import bcrypt from "bcrypt"
import { z } from "zod"

const loginSchema = z.object({
  username: z.string().min(3).max(50),
  password: z.string().min(8).max(100),
})

app.post("/login", async (req, res) => {
  // 修复1:输入验证
  const validation = loginSchema.safeParse(req.body)
  if (!validation.success) {
    return res.status(400).json({ error: "输入格式错误" })
  }

  const { username, password } = validation.data

  // 修复2:参数化查询,防止SQL注入
  const user = await db.query(
    "SELECT id, username, password_hash FROM users WHERE username = $1",
    [username]
  )

  if (!user) {
    // 修复3:统一错误信息,防止用户名枚举
    return res.status(401).json({ error: "用户名或密码错误" })
  }

  // 修复4:使用bcrypt比较密码
  const isValid = await bcrypt.compare(password, user.password_hash)
  if (!isValid) {
    return res.status(401).json({ error: "用户名或密码错误" })
  }

  // 修复5:只返回必要信息
  const token = generateJWT({ userId: user.id })
  res.json({ success: true, token })
})

3.3 技能三:性能优化大师

AI 写的代码能跑,但跑得慢:

// performance-master.ts
// 性能优化大师的日常

// ❌ AI 生成的"能跑"的代码
async function getActiveUsers(userIds: string[]) {
  const activeUsers = []

  // 问题:N+1 查询,1000个用户就是1000次数据库查询
  for (const id of userIds) {
    const user = await db.query("SELECT * FROM users WHERE id = $1", [id])
    if (user && user.status === "active") {
      // 问题:又是一次查询
      const orders = await db.query("SELECT * FROM orders WHERE user_id = $1", [
        id,
      ])
      activeUsers.push({ ...user, orderCount: orders.length })
    }
  }

  return activeUsers
}

// 性能测试:1000个用户
// 执行时间:45秒 💀
// 数据库查询:2000+ 次

// ✅ Cleanup Specialist 优化后的代码
async function getActiveUsersOptimized(userIds: string[]) {
  // 优化1:批量查询用户
  const users = await db.query(
    `SELECT * FROM users WHERE id = ANY($1) AND status = 'active'`,
    [userIds]
  )

  if (users.length === 0) return []

  // 优化2:批量查询订单数量
  const activeUserIds = users.map((u) => u.id)
  const orderCounts = await db.query(
    `SELECT user_id, COUNT(*) as count 
     FROM orders 
     WHERE user_id = ANY($1) 
     GROUP BY user_id`,
    [activeUserIds]
  )

  // 优化3:使用 Map 进行 O(1) 查找
  const orderCountMap = new Map(
    orderCounts.map((o) => [o.user_id, parseInt(o.count)])
  )

  return users.map((user) => ({
    ...user,
    orderCount: orderCountMap.get(user.id) || 0,
  }))
}

// 性能测试:1000个用户
// 执行时间:0.3秒 ✅
// 数据库查询:2 次
// 性能提升:150倍

第四章:如何成为 Cleanup Specialist?

4.1 你需要的背景

// cleanup-specialist-requirements.ts
// Cleanup Specialist 岗位要求分析

interface JobRequirement {
  skill: string
  importance: "must" | "preferred" | "bonus"
  reason: string
}

const requirements: JobRequirement[] = [
  {
    skill: "5年以上软件开发经验",
    importance: "must",
    reason: "没有足够经验,你看不出 AI 代码的问题在哪",
  },
  {
    skill: "精通至少2种主流编程语言",
    importance: "must",
    reason: "AI 用什么语言写,你就得能看懂什么语言",
  },
  {
    skill: "深入理解软件架构",
    importance: "must",
    reason: "AI 不懂架构,你得懂",
  },
  {
    skill: "安全开发经验",
    importance: "must",
    reason: "45%的AI代码有安全漏洞,你得能找出来",
  },
  {
    skill: "代码审查经验",
    importance: "must",
    reason: "这工作本质上就是超级代码审查",
  },
  {
    skill: "耐心和抗压能力",
    importance: "must",
    reason: "看AI代码会让你血压升高,这是真的",
  },
  {
    skill: "熟悉AI编程工具",
    importance: "preferred",
    reason: "知己知彼,了解AI怎么写代码才能更好地修",
  },
  {
    skill: "心理咨询师证书",
    importance: "bonus",
    reason: "开玩笑的...但有时候真的需要自我心理疏导",
  },
]

console.log("🎯 Vibe Coding Cleanup Specialist 岗位要求\n")

const mustHave = requirements.filter((r) => r.importance === "must")
const preferred = requirements.filter((r) => r.importance === "preferred")
const bonus = requirements.filter((r) => r.importance === "bonus")

console.log("必须具备:")
mustHave.forEach((r) => console.log(`${r.skill}\n     └─ ${r.reason}`))

console.log("\n优先考虑:")
preferred.forEach((r) => console.log(`${r.skill}\n     └─ ${r.reason}`))

console.log("\n加分项:")
bonus.forEach((r) => console.log(`  🎁 ${r.skill}\n     └─ ${r.reason}`))

4.2 面试会问什么?

根据我收集的信息,Cleanup Specialist 面试通常包括:

// cleanup-specialist-interview.ts
// Cleanup Specialist 面试题示例

const interviewQuestions = [
  {
    type: "代码审查",
    question: "这段AI生成的代码有什么问题?",
    code: `
      async function transferMoney(from, to, amount) {
        const fromBalance = await getBalance(from)
        if (fromBalance >= amount) {
          await updateBalance(from, fromBalance - amount)
          await updateBalance(to, await getBalance(to) + amount)
          return true
        }
        return false
      }
    `,
    expectedAnswer: [
      "没有事务处理,可能导致数据不一致",
      "没有并发控制,可能出现竞态条件",
      "没有输入验证,amount可能是负数",
      "没有错误处理",
      "没有日志记录",
      "getBalance调用了两次,效率低",
    ],
  },
  {
    type: "重构能力",
    question: "如何重构这段代码使其生产可用?",
    expectedApproach: [
      "添加数据库事务",
      "使用乐观锁或悲观锁处理并发",
      "添加输入验证",
      "添加完善的错误处理",
      "添加审计日志",
      "优化数据库查询",
    ],
  },
  {
    type: "安全意识",
    question: "如果这段代码已经上线了,你会怎么处理?",
    expectedAnswer: [
      "首先评估风险等级",
      "检查是否已经被利用",
      "制定修复计划",
      "准备回滚方案",
      "修复后进行安全测试",
      "复盘并建立预防机制",
    ],
  },
]

console.log("📝 Cleanup Specialist 面试题示例\n")

interviewQuestions.forEach((q, i) => {
  console.log(`问题 ${i + 1} [${q.type}]:`)
  console.log(`${q.question}\n`)
  if (q.code) {
    console.log(`代码:${q.code}\n`)
  }
  console.log(`期望回答要点:`)
  const answers = q.expectedAnswer || q.expectedApproach
  answers?.forEach((a) => console.log(`${a}`))
  console.log("\n" + "─".repeat(50) + "\n")
})

第五章:这个职业的未来

5.1 短期:需求持续增长

┌─────────────────────────────────────────────────────────────┐
│              Cleanup Specialist 需求预测                     │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   2026年:需求爆发期                                        │
│   ├─ 大量 Vibe Coding 项目进入维护期                        │
│   ├─ 安全事件频发,企业开始重视代码质量                     │
│   └─ 预计岗位数:10万+                                      │
│                                                             │
│   2027年:成熟期                                            │
│   ├─ 形成标准化的清理流程和工具                             │
│   ├─ 出现专门的培训和认证                                   │
│   └─ 预计岗位数:25万+                                      │
│                                                             │
│   2028年:转型期                                            │
│   ├─ AI 代码质量提升,部分清理工作自动化                    │
│   ├─ 职位向"AI代码架构师"方向演进                          │
│   └─ 高端岗位薪资可能突破 30 万美元                         │
│                                                             │
└─────────────────────────────────────────────────────────────┘

5.2 长期:会被 AI 取代吗?

这是个好问题。让我们理性分析:

// will-ai-replace-cleanup.ts
// AI 会取代 Cleanup Specialist 吗?

interface ReplacementAnalysis {
  task: string
  aiCapability2026: "low" | "medium" | "high"
  aiCapability2030: "low" | "medium" | "high"
  humanAdvantage: string
}

const analysis: ReplacementAnalysis[] = [
  {
    task: "发现明显的代码错误",
    aiCapability2026: "high",
    aiCapability2030: "high",
    humanAdvantage: "几乎没有,这部分会被自动化",
  },
  {
    task: "理解业务逻辑",
    aiCapability2026: "low",
    aiCapability2030: "medium",
    humanAdvantage: "AI不懂业务,人懂",
  },
  {
    task: "架构级重构",
    aiCapability2026: "low",
    aiCapability2030: "medium",
    humanAdvantage: "需要全局视角和经验判断",
  },
  {
    task: "安全漏洞深度分析",
    aiCapability2026: "medium",
    aiCapability2030: "high",
    humanAdvantage: "复杂攻击向量仍需人工分析",
  },
  {
    task: "与团队沟通协调",
    aiCapability2026: "low",
    aiCapability2030: "low",
    humanAdvantage: "这是人的工作",
  },
  {
    task: "决定什么该改什么不该改",
    aiCapability2026: "low",
    aiCapability2030: "medium",
    humanAdvantage: "需要权衡成本、风险、收益",
  },
]

console.log("🤖 AI 会取代 Cleanup Specialist 吗?\n")

analysis.forEach((item) => {
  const emoji2026 =
    item.aiCapability2026 === "high"
      ? "🟢"
      : item.aiCapability2026 === "medium"
      ? "🟡"
      : "🔴"
  const emoji2030 =
    item.aiCapability2030 === "high"
      ? "🟢"
      : item.aiCapability2030 === "medium"
      ? "🟡"
      : "🔴"

  console.log(`${item.task}`)
  console.log(`  AI能力(2026): ${emoji2026} ${item.aiCapability2026}`)
  console.log(`  AI能力(2030): ${emoji2030} ${item.aiCapability2030}`)
  console.log(`  人类优势: ${item.humanAdvantage}\n`)
})

console.log("─".repeat(50))
console.log("\n结论:部分工作会被自动化,但核心价值仍在人。")
console.log("职位会演进,但不会消失。")

第六章:给不同人群的建议

6.1 如果你是资深开发者

恭喜你,你可能已经具备了 Cleanup Specialist 的核心能力。

建议:

  • 开始关注 AI 生成代码的特点和常见问题
  • 积累一套自己的代码审查清单
  • 考虑向这个方向转型,薪资可能会有惊喜

6.2 如果你是初级开发者

不建议直接走这条路。

原因:

  • 这个职位需要深厚的经验积累
  • 你需要先成为一个优秀的开发者
  • 但可以开始学习代码审查和安全知识

6.3 如果你是 Vibe Coder

你可能是 Cleanup Specialist 的"衣食父母"。

建议:

  • 继续 Vibe,但要知道代码最终需要清理
  • 学习基本的代码质量意识
  • 预算里留出清理成本

6.4 如果你是技术管理者

你需要认真考虑这个角色。

建议:

  • 评估团队中 Vibe Coding 的使用情况
  • 考虑是否需要引入 Cleanup Specialist
  • 建立 AI 代码的质量把控流程

结语:AI 时代的新平衡

写到最后,我想说几句感慨:

2024 年,我们担心 AI 会取代程序员。
2026 年,我们发现 AI 创造了新的程序员岗位。

这就是技术发展的有趣之处——它从来不是简单的"取代",而是"重塑"。

Vibe Coding Cleanup Specialist 这个职位的出现,说明了一个道理:

AI 可以写代码,但不能为代码负责。 > 能负责的,永远是人。

所以,与其担心被 AI 取代,不如思考:

  • 在 AI 时代,什么是人类不可替代的价值?
  • 如何与 AI 协作,而不是与 AI 竞争?
  • 如何在新的生态中找到自己的位置?

Cleanup Specialist 给出了一个答案:成为 AI 的"质检员"。

这可能不是唯一的答案,但它证明了:

只要你有真本事,AI 时代照样有你的位置。

而且,薪资可能还更高。


附录:Cleanup Specialist 工具箱

常用工具

工具 用途 推荐指数
SonarQube 代码质量分析 ⭐⭐⭐⭐⭐
Snyk 安全漏洞扫描 ⭐⭐⭐⭐⭐
ESLint/Prettier 代码规范检查 ⭐⭐⭐⭐⭐
CodeClimate 技术债务追踪 ⭐⭐⭐⭐
Datadog APM 性能分析 ⭐⭐⭐⭐

推荐阅读

  • 《Clean Code》- 代码整洁之道
  • 《Refactoring》- 重构:改善既有代码的设计
  • 《The Art of Readable Code》- 编写可读代码的艺术
  • OWASP Top 10 - Web 应用安全风险

薪资参考(2026 年 1 月)

级别 经验 薪资范围(美元/年)
Junior 3-5 年 $120,000 - $150,000
Mid 5-8 年 $150,000 - $180,000
Senior 8 年+ $180,000 - $220,000
Principal 10 年+ $220,000 - $280,000

如果你觉得这篇文章有用,欢迎分享给你那个正在 Vibe Coding 的同事。

也许他现在不需要 Cleanup Specialist,但三个月后一定需要。 😏

评论区聊聊:你见过最离谱的 AI 生成代码是什么样的?

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐