Vibe Coding之道:从Hulk扩展程序看Prompt工程的艺术

0 阅读6分钟

本文通过一个Chrome扩展开发实例,探讨如何通过精心设计的Prompt与AI高效协作

在AI编程助手日益普及的今天,我们正经历着编程范式的转变。传统的“手写每一行代码”正在向“精准指导AI生成代码”演进。这种基于氛围和直觉的编程方式,我称之为Vibe Coding

从Hulk扩展程序说起

最近,我需要开发一个简单的Chrome扩展程序Hulk,功能很简单:点击扩展图标,弹出窗口,点击按钮将网页背景变为绿色。使用AI助手生成这样的扩展本应简单,但如何准确传达需求却是一门艺术。

初始Prompt的构建

看看我为Hulk扩展程序设计的Prompt:

你是一个经验丰富的Chrome扩展程序开发者,请帮我开发一个名为Hulk的扩展程序。
UX设计图参考ux.png。

具体交互步骤如下:
Step1:点击程序图标打开弹出窗口,在窗口中默认提示:"改变背景颜色","点击下方按钮将当前背景色改为绿色"和一个"改变颜色"按钮。
Step2:点击按钮,网页背景改变成绿色

注意以下:
请使用icons文件夹的图标作为应用程序的图标

这段Prompt虽然简短,但包含了几个关键要素:

  1. 角色设定:明确指定AI扮演“经验丰富的Chrome扩展程序开发者”
  2. 项目命名:给项目一个具体的名称“Hulk”
  3. 视觉参考:提及UX设计图
  4. 步骤分解:清晰列出交互流程
  5. 细节要求:包括图标使用等具体指示

代码生成的结果

基于这个Prompt,AI生成了完整的Chrome扩展代码,包括:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Hulk - 改变背景颜色</title>
  <style>
    /* 弹出窗口的CSS样式 */
    body {
      width: 200px;
      padding: 15px;
      font-family: Arial, sans-serif;
      text-align: center;
    }
    /* 更多样式代码... */
  </style>
</head>
<body>
  <h3>改变背景颜色</h3>
  <p>点击下方按钮将当前背景色改为绿色</p>
  <button id="changeColorBtn">改变颜色</button>
  
  <script src="popup.js"></script>
</body>
</html>

以及对应的JavaScript逻辑:

// popup.js
document.addEventListener('DOMContentLoaded', function() {
  const changeColorBtn = document.getElementById('changeColorBtn');
  
  changeColorBtn.addEventListener('click', function() {
    chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) {
      chrome.scripting.executeScript({
        target: { tabId: tabs[0].id },
        function: setBackgroundColorToGreen
      });
    });
  });
});

function setBackgroundColorToGreen() {
  document.body.style.backgroundColor = '#4CAF50';
  
  const containers = document.querySelectorAll('main, div, section, article');
  containers.forEach(container => {
    if (!container.dataset.originalBgColor) {
      container.dataset.originalBgColor = container.style.backgroundColor || '';
    }
    
    if (container.style.backgroundColor) {
      container.style.backgroundColor = '#4CAF50';
    }
  });
}

Vibe Coding的核心原则

1. 氛围营造优于技术细节

Vibe Coding的核心在于创造正确的“氛围”或“语境”,而不是纠缠于具体的技术实现。在我的Prompt中,我没有说“请使用chrome.tabs.query API获取当前标签页”,而是描述用户交互的流程和最终效果。

良好氛围的特征:

  • 明确的角色设定
  • 清晰的目标描述
  • 上下文环境设定
  • 期望的“感觉”或“体验”

2. 渐进式细化

Vibe Coding是一个迭代过程。从高层次的需求描述开始,根据AI的响应逐步添加细节:

第一轮:基本功能描述
第二轮:添加样式要求
第三轮:考虑边界情况和错误处理

3. 示例驱动

在Prompt中提供示例或参考,即使是概念性的,也能显著提高输出质量。我提到的“UX设计图参考ux.png”就是一个典型的例子 - 即使没有实际的设计图,这个概念也能引导AI生成具有视觉吸引力的界面。

为什么要存档Prompt?

1. 可重现性

存档Prompt确保了项目可重现。几个月后,当需要修改或调试Hulk扩展时,我可以回顾最初的Prompt,理解生成代码的上下文和意图。

# Hulk扩展 - 原始Prompt存档
## 项目目标:创建改变网页背景色的Chrome扩展
## 生成时间:2024年1月15日
## 使用的AI助手:Trae

### 原始Prompt:
[此处存放完整的Prompt内容]

### 生成的文件结构:
- manifest.json
- popup.html
- popup.js
- content.js
- icons/...

2. 知识积累

每个存档的Prompt都是一个学习案例。通过分析哪些Prompt有效、哪些需要改进,我们可以逐步完善与AI协作的模式。

3. 团队协作

在团队环境中,存档的Prompt成为共享知识的基础。新成员可以通过阅读历史Prompt快速了解项目的设计决策和代码生成逻辑。

4. 调试和优化

当生成的代码出现问题时,回溯到原始Prompt可以帮助识别误解的根源,从而优化未来的Prompt设计。

Vibe Coding的实践建议

1. 开始于“为什么”

在编写Prompt前,先思考项目的核心价值和用户需求。Hulk扩展不仅仅是“改变背景颜色”,而是“提供一种快速改变网页视觉体验的简单工具”。

2. 使用隐喻和类比

像“Hulk”这样的命名本身就传达了力量感和改变的含义,这种隐喻能帮助AI更好地理解项目的“氛围”。

3. 平衡具体性与灵活性

过于具体的Prompt可能限制AI的创造力,而过于宽泛的Prompt则可能导致不相关的输出。找到平衡点是关键。

4. 预期迭代

将AI助手的第一次响应视为初稿,而不是最终产品。准备好通过多轮对话细化和调整输出。

面向未来的编程

Vibe Coding代表了编程范式的演进。随着AI能力的提升,程序员的角色正在从代码编写者转变为AI指导者、系统架构师和创意导演。

未来的程序员可能需要:

  • 精准表达需求的能力
  • 系统思维和架构设计能力
  • 对AI能力和局限的理解
  • 创造性问题解决的技巧

在Hulk扩展的例子中,成功的不是我能写出改变背景色的代码,而是我能清晰地向AI传达这个简单功能应该如何集成到Chrome扩展的生态中,如何设计用户交互,以及如何确保代码的健壮性。

结语

Vibe Coding和Prompt工程正在成为数字时代的重要技能。通过精心设计的Prompt存档和实践,我们不仅能提高当前项目的开发效率,还在为未来的AI协作积累宝贵的经验和模式。

无论是开发像Hulk这样的小工具,还是构建复杂的企业应用,掌握与AI高效协作的艺术都将是我们这个时代程序员的核心竞争力。毕竟,未来的编程可能不再关乎你能写多少代码,而在于你能多好地指导AI创造价值。


本文通过Hulk Chrome扩展程序的开发实例,探讨了Vibe Coding的理念和实践,强调了Prompt设计和存档在AI编程时代的重要性。无论你是刚接触AI辅助编程的新手,还是经验丰富的开发者,希望这些见解能帮助你在与AI协作的旅程中更加得心应手。