> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# AI辅助软件开发的四个阶段
- URL: https://www.hubwiz.com/blog/4-stages-of-ai-assisted-software-development/
- Published: 2025-03-11T09:24:21.000Z
- Updated: 2025-03-11T09:24:21.000Z
- Description: 我必须承认，到目前为止我对AI辅助软件开发非常热情。它帮助了我很多，使我能够在没有AI的情况下更快地完成几个项目。
- Author: admin
- Tags: JOB MARKET, CODING ASSISTANT, #Import 2026-10-14 14:41

不，这篇文章不会是关于“否认、愤怒、讨价还价……等等。”嗯……这可能也是一个好话题，但我扯远了。

## 1、第一阶段：在ChatGPT窗口中的脚本

当这一切开始时，我向朋友们展示了ChatGPT如何仅通过在聊天窗口中获取函数描述就能编写简单的Python函数。他们的第一反应是，“嗯，我没有看到什么魔法。我自己也可以不借助任何AI完成。”

“正是如此！”我的回答是。“这就是重点。不要让AI助手去做你不能自己做的事情。”

这是AI辅助开发的早期阶段。我会打开ChatGPT网站，要求它编写一个函数，将该函数复制到我们的编辑器中并运行。有什么问题？将错误消息复制回同一个ChatGPT窗口并请求修复代码。将修复后的代码复制回你的编辑器并重复这个过程。

很简单，对吧？很多时候，它确实有效，你会得到你想要的函数。有时，在四到五次迭代后，你会说：“够了！”然后开始自己修复代码。

即使在那时，ChatGPT也是非常有帮助的。你可以要求它为现有的函数添加注释，创建测试，甚至生成README文件的草稿。

但这是一个繁琐的过程：在ChatGPT和我的编辑器之间来回切换，无法看到代码中具体发生了什么变化。大多数时候，我依赖于自己的视觉检查、智能IDE和编译器。聪明的开发者也会在这个过程中添加测试。

## 2、第二阶段：IDE扩展

很快，我转到了名为Codeium的VS Code扩展。我必须承认，当GitHub Copilot首次可用且免费时，我也测试过它的早期版本。我不太满意。我记得我说过，“我宁愿自己写代码，而不是看Copilot生成的内容并决定是否接受它。”我决定不订阅Copilot并停止使用它。

但Codeium不同。也许它们添加代码的方式不那么突兀，或者它们的代码质量更好。毕竟，在AI的时间尺度上，已经过去了六个月，这是一段很长的时间。但我试了一下，立刻就上瘾了。

Codeium不仅可以根据描述编写代码，还可以查看你的现有代码并提出修改建议。如果你需要在多个文件中进行许多类似的更改，这非常有用。

Codeium可以快速理解你的代码库，并可以添加看起来缺失的函数。例如，如果它看到你在包中刚刚添加了一个`CreateUser()`函数，它会建议添加`GetUser()`、`DeleteUser()`和`ListUsers()`函数。它相当聪明，通常其建议是你期望的结果。我认为十次中有八九次，我都同意Codeium的建议并接受了它们。

我对Codeium非常满意，并推荐给所有人，特别是对AI持怀疑态度的人。“只需将其添加到你的VS Code并尝试一下，”我会告诉我的朋友。“它是免费的，如果你不喜欢它，可以移除。”

我喜欢它，当然，我不会移除它。但有时候，我想自己写一些东西，不需要AI的帮助。有时候，我想学习一个新的主题或新的语言，并想培养肌肉记忆。有时，Codeium试图为我编写Markdown文档或文章，但我不喜欢它的建议。一个好处是你可以禁用Codeium并再次启用它。你还可以为某些语言禁用它；这是我为Markdown和AsciiDoc所做的。你可以将自动补全建议“暂停”一小时，以便不间断地工作在你的论文或代码上。

Codeium很好地为我服务，并且帮助了我很多，对此我非常感激。然后我听说了Cursor。

## 3、第三阶段：基于AI的IDE

Cursor是最早一批专为AI使用而构建的IDE之一。Cursor不是一个VS Code扩展；相反，它是VS Code的一个分支，具有额外的UI功能，以帮助它们更深入地参与开发过程。它们紧跟VS Code版本，因此在VS Code功能方面你不会感到落后。更重要的是，你可以导入所有你所依赖的VS Code扩展，并在Cursor中使用它们。

转向Cursor彻底改变了我的编码方式。除了生成新代码和编辑现有代码外，我现在可以与AI对话并获得解释和建议。通常，我们的对话以一个问题开始，比如，“我想为这个项目添加日志记录。你推荐哪种方法？”Cursor会给我两个或三个可能选项的概述，给出优缺点并建议最佳路径。你可以添加其他条件，比如，“我知道`logrus`是一个流行的库，但我希望使用标准库和`log/slog`。”Cursor会根据这些新信息调整其建议。

完全让我震惊的新功能是能够与整个代码库对话。想象一下，能够在Cursor的聊天窗口中说，“@Codebase 请审查我的代码库并撰写一个良好的README文件来解释这个项目。”它表现得非常出色！我不得不添加几个修正，但总体而言，它在几秒钟内为我的项目创建了一个完美的README。

这鼓励了我，我问了下一个问题，“请建议我应该为这个项目创建哪些ADR（架构决策记录）文档。”它回答了七个或八个应该在ADRs中涵盖的主题：语言选择、日志结构设计、数据库选择等。不用说，我要求它编写所有这些文档并将它们放在一个单独的ADR目录中。

在那之后，让Cursor为我的项目编写测试几乎是理所当然的。所有这些带有大量样板代码的无聊测试用例都是在几秒钟内创建的，还包括模拟服务及其测试（以确保它们是好的模拟）。

在Cursor提供了这么多帮助之后，如今没有测试和文档的项目是不可原谅的。

我最近习惯了所有这些功能，甚至开始觉得有点懒惰。当然，我可以轻松地编写这个转换函数，但如果Cursor和Claude可以在几秒钟内完成，为什么我要花20分钟呢？Cursor在处理Go语言中那些通常导致初学者沮丧的第一批`if err != nil`时并不懒惰。有了Cursor，几乎可以自动完成。不仅如此，如果它注意到你偏好某种错误消息格式，它会在将来使用这种格式。

另一方面，有了来自AI的巨大帮助，我在新项目中变得更加开放和富有创造力。在考虑添加新功能时，“人类”的我会考虑实现所需的时间并决定，“这可以等待。”“AI辅助”的我会告诉Cursor，“请将此函数添加到代码中，”它会愉快地为你完成。分析它写的内容只需一两分钟，新功能就添加好了。

到目前为止，与Cursor和其他之前的AI助手一起工作时，我觉得我对代码库发生的事情基本上是掌控的。但昨天我见证的新版Cursor和新的Claude Sonnet 3.7模型改变了这一点。

## 4、第四阶段：AI驱动的开发

昨天，我在一个使用另外两个开源项目的项目上工作。有些事情没有正常运作。客户端（第一个开源项目）在访问我的服务器时给我超时，而我的服务器是使用另一个开源项目构建的。

我向Cursor求助，它建议在我的代码中添加日志记录以查看发生了什么。我慷慨地允许它这样做，但日志并没有显示任何可疑之处。请求被我的服务器接受并转发到库。看起来我不得不分叉库的repo并在其代码中添加日志记录。但我不熟悉它，而且要弄清楚如何做需要一段时间。这就是我当时的想法。

所以我继续操作，分叉并克隆了repo，在Cursor中打开它，并问它，“请在我的代码中添加日志记录，以便我可以跟踪请求通过服务器的过程。”它做到了。它理解我试图解决的问题，并建议在其他地方添加日志记录。

添加日志调用需要使用日志文件（见脚注中的解释）。使用日志记录需要添加一个新的Go接口，这需要在几个其他文件中进行更改。

在这一点上，Cursor认为在没有添加适当的测试的情况下进行重大更改不是一个好主意。它添加了测试，进行了更改并要求我运行测试。不是切换到终端并运行命令。只是在同一个对话框窗口中按“运行命令”按钮。

我按下了按钮，看到一些测试失败了。Cursor说，“好吧，让我来解决这个问题……”我又做了一些修改。我注意到我的编辑器用红色的波浪线标记了一些函数调用和变量，告诉我，“这将无法编译。”在我能够告诉Cursor这一点之前，它自己也注意到了，并说，“是的，我发现编译器有问题。让我来解决这个问题。”

这种情况重复了好几次。我只是张着嘴，看着这个神奇的Cursor（在Claude的帮助下）对代码库做了什么。它添加了更多的日志，实时修复编译问题，并要求我按下按钮重新运行测试，直到找到问题。

“啊，现在我看到问题了！”它说。如果你以前没有使用过Cursor，不要被这句话所迷惑。每次Cursor认为它找到了问题时都会这么说。很多时候，这只是旅程的开始，后面还有更多的曲折。但这次，它确实找到了问题所在。库期望ID变量是一个整数，但CLI客户端使用的是字符串。我们应该修复哪一部分？

“让我看看，”Cursor说。“我在互联网上刚刚拉取到的JSON-RPC 2.0规范中明确指出，ID可以是数字、字符串或NULL。所以，我们必须修复这个库。”

在我能说什么之前，库已经被改变了。当然，你明白你不能简单地用一个字符串替换一个整数。库应该支持规范中描述的所有三种选项。“没问题，”Cursor说。“我会创建一个结构和包装器，以保持向后兼容性，同时也会支持规范中描述的所有选项。”然后它继续工作，进行更改。

在某个时刻，我跟不上它的速度了。它工作得如此之快，解释所有更改并让我接受它们，以至于我跟不上它的节奏。最可怕的一刻是在那股变化流中间，它突然停了下来，说：“通常，我们限制运行次数为25次工具调用。”我的心沉了一下。现在我必须自己来继续完成Cursor开始的更改吗？

幸运的是，Cursor说：“要继续，请按这个按钮。”我照做了，它继续进行更改，直到再经过两三次步骤后完成了。它再次运行单元测试和集成测试（这些测试是它创建的），然后说：“现在它应该可以与你的应用程序一起工作了。”

果然！我现在要做的就是将更改提交到我的分支，并将其推送到GitHub上的分叉仓库。我将与库的开发者合作，解释Cursor是如何发现并修复这些问题的。

## 5、结束语

我必须承认，到目前为止我对AI辅助软件开发非常热情。它帮助了我很多，使我能够在没有AI的情况下更快地完成几个项目。但昨天我看到的Cursor简直就像是魔法。我不再控制整个过程。而且我害怕可能会在中途留下这些更改。

另一方面，我毫不怀疑我自己无法找出别人代码中的问题。很可能我会放弃并切换到另一个库。AI帮助我继续在这个项目上工作。Cursor只用了大约一两个小时就找到了问题并解决了它。

毫无疑问，我将继续在我的开发过程中使用AI。我只需要学习如何驾驭这只野兽。

---

原文链接：[Four stages of AI-assisted software development](https://medium.com/@pavelanni/four-stages-of-ai-assisted-software-development-5b8093c38fe4?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处