AI辅助的软件开发 (1)
这个是系列文章的第一篇,重点关注如何利用AI奠定软件的成功基础:项目规划、设计和架构。

这个是系列文章的第一篇,每一篇都会详细探讨如何在处理软件开发中的特定流程时正确集成人工智能。
PART 1:奠定基础 —— 项目规划、设计和架构
还记得那些我们花费数小时绞尽脑汁解决某段棘手代码的日子吗?或者梦想着构建完美的应用,但受限于自己的技能?好吧,让我告诉你,这些日子正在成为过去。本指南将向你展示原因。
像你们中的许多人一样,我最初是一个充满热情和梦想的独立开发者。我一直对技术的潜力感到着迷,但经常发现自己遇到障碍——无论是复杂算法的难题,还是迷失在系统架构的迷宫中,或是没有足够的时间来实现所有想法。
ChatGPT(后来是Claude)的引入改变了这一切。在这份指南中,我将带你了解我所学到的所有关于掌握AI辅助软件开发的知识。我们将涵盖从设置你的AI增强工作环境到利用AI进行复杂的任务,如系统设计、编码、测试甚至文档编写的一切内容。
我已经将这些技术付诸实践,并看到了惊人的效果。事实上,我最近在 这篇教程 中写到了如何在没有任何编码的情况下构建一个网络爬虫应用程序。 这份指南在此基础上提供了全面的路线图,帮助你转变开发过程。
我们假设你对编程和AI有一定的了解,但如果你是AI辅助开发的新手,请不要担心——我们会一步一步来。
1、设定场景
相信我,一点准备可以带来很大的帮助。首先,选择你的AI助手。为了本指南的目的,我们将使用Claude,它在编码方面略优于ChatGPT,而且具有我们需要的正确功能(例如项目知识库)。如果你使用ChatGPT,这里的信息几乎是相同的。
1.1 设置开发环境
以下是一些快速检查表,帮助你开始:
- 选择你喜欢的IDE或文本编辑器:无论你喜欢VS Code、Sublime Text还是vim,坚持使用你熟悉的东西。目标是增强你的编码能力,而不是使其复杂化。
- 为AI互动创建专用空间:我喜欢为我的AI助手保留一个单独的窗口或标签页。这有助于我在编码和与AI头脑风暴之间切换上下文。
- 组织你的提示:相信我——你会编写很多提示。创建一个文档或使用笔记应用程序保存你最有效的提示。这对提高生产力至关重要。
- 版本控制:如果你还没有使用Git,现在就是时候了。AI有时会快速生成大量代码,有时还会出错。你需要能够跟踪更改并随时回滚。
1.2 思维模式转变:AI作为合作者,而非替代品
现在,让我们谈谈一个我花了很长时间才完全理解的问题——正确的AI辅助开发思维模式。关键在于:AI不是来取代你的技能或接管你的工作的。把它想象成有一个超级聪明的实习生,总是准备好帮助你,但需要你的指导和专业知识。
当我刚开始时,我把AI当作一个神奇的代码生成器。我会向它抛出模糊的提示,期望得到完美且生产就绪的代码。剧透警告:这并没有很好地发挥作用。关键是将AI视为你开发过程中的合作者。
以下是一些真正帮助我的思维模式转变:
- AI是一种工具——你是工匠:就像你工具箱中的其他工具一样,AI是为了增强你的技能,而不是取代它们。你仍然是决定者。
- 拥抱迭代过程:不要期望第一次尝试就能完美。使用AI生成初始想法或代码结构,然后迭代和改进。
- 验证和理解:始终审查并理解AI生成的代码。这是一个学习的机会,确保代码符合项目需求。
- 在请求中具体明确:你的提示越精确,输出越好。将其视为向人类同事解释任务。
- 从AI建议中学习:当AI提供替代方案或改进时,花时间理解其理由。这是扩展你的编码知识的好方法。
记住,目标不是把控制权交给AI,而是创造一种协同效应,将你的创造力和解决问题的能力与AI的广泛知识和处理能力结合起来。这关乎增强你的能力,而不是取代它们。
1.3 一些启动提示
为了帮助你立即上手,这里有一些你可以立即使用的提示:
- 对于设置新项目:
我打算使用[编程语言/框架]开始一个新的[项目类型]。你能建议一个基本的文件结构和我应该考虑的基本依赖项吗?
- 对于了解AI的能力:
在进行软件开发任务时,我应该了解你的主要优势和局限性是什么?
- 对于创建编码计划:
我想构建[简要项目描述]。你能帮我将其分解为可管理的任务,并建议实施顺序吗?
随着指南的深入,我会分享更多具体的高级提示,但这些应该能给你一个好的起点。
2、项目初始化和规划
既然我们的AI助手已经准备好了,让我们看看任何项目中最关键(也常常被低估)的部分之一:初始化和规划。相信我,做好这部分可以节省你日后大量的麻烦。
2.1 为你的AI助手创建知识库
还记得我提到的将你的AI当作超级聪明的实习生吗?就像任何新团队成员一样,你的AI需要一些关于你的项目的背景信息。这就是创建知识库的好处所在。
当我刚开始使用AI辅助开发时,我直接跳到要求代码。这是一个大错误。我很快意识到,在开始询问代码之前花几分钟“介绍”我的AI助手是非常值得的。
以下是我是如何做的:
- 项目概述:从你的项目简要描述开始。你在构建什么?它解决了什么问题?
- 技术栈:列出你计划使用的语言、框架和工具。
- 关键需求:概述你想要实现的主要功能或功能。
- 约束条件:有任何限制或特定要求吗?也许你需要支持旧浏览器或有严格的性能标准。
- 编码风格:如果你有特定的编码约定或架构偏好,请提及。
这里有一个提示帮助你开始:
我打算开始一个新的项目,并希望创建一个知识库供我们在开发过程中参考。该项目是[简要描述]。我们将使用[技术栈]。我们需要实现的关键功能是[列出功能]。需要注意的重要约束条件是[列出约束条件]。至于编码风格,我们更喜欢[提及偏好]。你能总结这些信息并建议我们应该在知识库中包含哪些额外细节吗?
2.2 将项目分解为可管理的组件
一旦你有了项目概述,是时候将其分解为小块。我曾经为此挣扎过,要么使组件太大太笨重,要么迷失在细节中。AI在找到那个甜蜜点方面发挥了重要作用。
试试这个提示:
根据我们刚刚创建的项目概述,你能帮我将这个项目分解为可管理的组件或模块吗?对于每个组件,请建议:
1. 组件名称
2. 其主要功能
3. 实现它的潜在挑战
4. 它可能与其他组件如何交互
请还推荐一个开发这些组件的逻辑顺序。
我发现AI经常会提出我没有想到的组件分解方式,有时会导致更模块化和可维护的代码结构。

我更喜欢使用Claude的原因是,它允许用户创建“项目”,让你为Claude创建专门的用例——每个都有自己的代码和知识库。
2.3 使用AI进行项目路线图规划
一旦你定义了组件,是时候创建路线图了。这是我非常欣赏拥有AI助手的地方。它就像一个经验丰富的项目经理,帮助你预见潜在的陷阱并优化开发顺序。
这里是我经常使用的一个提示:
使用我们创建的组件分解,你能帮我制定一个项目路线图吗?请包括:
1. 开发组件的建议顺序
2. 每个组件的预计时间(假设我是在兼职工作)
3. 潜在里程碑或检查点
4. 可能影响开发顺序的组件之间的任何依赖关系
5. 建议任何可能有益的概念证明或原型阶段
AI生成的路线图通常给我一个良好的起点,然后我会根据我对工作方式的个人了解以及任何外部截止日期进行调整。
2.4 项目规划的提示想法
为了帮助你在项目规划阶段充分利用AI,这里还有一些提示想法:
- 风险评估:
基于我们的项目计划,你能识别我们在开发过程中可能面临的潜在风险或挑战吗?对于每个风险,请建议可能的缓解策略。
- 技术选择:
我们正在考虑使用[技术A]或[技术B]来实现[特定功能]。你能根据我们的项目比较这些选项,考虑因素包括性能、易于实施和未来的可扩展性吗?
- 估算项目范围:
根据我们的项目需求和组件分解,你能帮我估算整个项目的范围吗?请提供大致的总开发时间,并建议任何需要调整预期或寻求额外资源的领域。
3、使用AI进行设计和架构
软件开发中最关键(也常常最具挑战性)的阶段之一就是设计和架构。这是我们为整个项目奠定基础的时候,让我告诉你,在这个阶段有一个AI助手就像拥有一件秘密武器。
3.1 “逐步思考”提示的微妙力量
还记得我提到的清晰、具体的提示的重要性吗?当涉及到设计和架构时,我发现“逐步思考”的提示绝对是金子。它们鼓励AI分解复杂问题并提供详细的、结构化的响应。
这里是我经常使用的一个提示模板:
让我们逐步思考[特定组件或系统]的架构。请考虑:
1. 该组件需要支持的主要功能
2. 可能的数据结构或模型
3. 关键类或模块及其职责
4. 该组件将如何与其他系统部分交互
5. 可能适用的设计模式
6. 扩展性和可维护性的考虑
对于每一步,请提供你推理的简要说明。
我发现这种方法不仅从AI那里获得了更全面和深思熟虑的响应,也帮助我整理了自己的设计思路。
3.2 在AI建议上迭代
现在,真正的魔法发生了。一旦你得到了最初的响应,不要只是接受并跑掉。这是你与AI助手进行来回交流、细化和完善设计的机会。
我喜欢使用这样的提示来深入探讨:
感谢你提供的初步设计。我有几个跟进问题:
1. 这种方法的潜在缺点或限制是什么?
2. 你能建议一种优先考虑[特定关注点,如性能、灵活性]的替代设计吗?
3. 如果我们需要[潜在未来需求],这种设计需要如何改变?
这个迭代过程往往会产生我原本不会考虑的见解和改进。就像与一个不知疲倦、知识渊博的同事一起头脑风暴。
3.3 记录架构决策
我得到的最好的建议之一是记录我的架构决策。这在我几个月后重新审视项目时节省了无数的头痛时间。
试试这个提示:
基于我们对[组件/系统]架构的讨论,你能帮我创建一个架构决策记录(ADR)吗?请包括:
1. 我们要解决的背景和问题
2. 我们考虑过的选项
3. 我们做出的决策
4. 这个决策的后果(积极和消极)
5. 任何相关的决策或权衡
这不仅帮助你跟踪自己的思考,也为你的未来自己或任何加入项目的团队成员创造了有价值的文档。
3.4 设计和架构的提示想法
为了帮助你在设计和架构阶段充分利用AI,这里还有一些提示想法:
- 探索设计模式:
鉴于我们需要实现[特定功能],哪些设计模式可能是适用的?对于每个建议的模式,请解释它如何在我们的系统中实现以及它将提供什么好处。
- 数据库模式设计:
我们需要为[系统的特定部分]设计数据库模式。基于我们的需求,你能建议一个初始的模式设计吗?请包括表、关键字段和关系。同时考虑潜在的索引策略以提高性能。
- API设计:
我们计划创建一个RESTful API来实现[特定功能]。你能帮助我们设计所需的端点吗?对于每个端点,请建议HTTP方法、URL结构、请求/响应格式以及任何认证要求。
- 可扩展性考虑:
在我们设计系统时,我们需要确保它可以扩展以处理[预期负载]。你能审查我们的当前架构并建议修改或我们需要添加的额外组件以确保可扩展性吗?请考虑垂直和水平扩展策略。
记住,你仍然是项目的主设计师。AI提供建议、洞察和分析,但最终的决策是你的。你对业务需求的理解、你对类似系统的经验以及你对最适合你特定情况的方法的直觉都是至关重要的。使用AI来增强和挑战你的思考,而不是取代它。
原文链接:AI-Assisted Software Development: A Comprehensive Guide with Practical Prompts (Part 1/3)
汇智网翻译整理,转载请标明出处
