规划流程

  • 制定全面计划:先与 AI 协作,在 Markdown 文件中编写详细的实施计划(解释:借助 AI 梳理思路,用 Markdown 的结构化特性确保计划清晰可追溯,避免遗漏关键环节)
  • 评审与优化:删除不必要的内容,若功能过于复杂则标记为 “暂不开发”(解释:通过精简和优先级划分,防止计划膨胀导致精力分散,聚焦核心目标)
  • 保持范围可控:单独设立 “后续想法” 板块,以此保持专注(解释:将非核心需求暂时剥离,避免开发中频繁偏离主线,确保当前阶段目标明确)
  • 增量式实现:分模块逐步开发,而非试图一次性构建所有内容(解释:降低单次开发复杂度,便于及时发现问题,同时能快速看到阶段性成果)
  • 跟踪进度:功能成功实现后,让 AI 将对应板块标记为 “已完成”(解释:通过可视化进度管理,清晰掌握开发节奏,增强推进动力)
  • 定期提交代码:在进入下一个模块前,确保当前工作板块已提交至 Git(解释:避免代码丢失,同时为后续可能的回滚提供依据,降低开发风险)

版本控制策略

  • 严格使用 Git:不要完全依赖 AI 工具的 “回退” 功能(解释:AI 工具的回退机制可能不完善,Git 作为专业版本控制工具,能更可靠地管理代码历史)
  • 从 clean 状态开始:开发每个新功能时,以干净的 Git 状态启动(解释:减少历史代码干扰,降低新功能与旧代码冲突的概率)
  • 卡顿时重置:若 AI 陷入 “空想式编码”,使用 git reset --hard HEAD 命令重置(解释:当 AI 生成的代码偏离需求且难以修正时,快速回到干净状态重新开始,避免无效堆叠)
  • 避免累积问题:多次失败的尝试会导致代码层叠式崩坏(解释:错误代码的反复修改会让逻辑越来越混乱,后期调试成本呈指数级上升)
  • 干净地实现:当最终找到解决方案时,重置并干净地实现代码(解释:确保最终代码逻辑清晰、无冗余,便于后续维护和扩展)

测试框架

  • 优先高阶测试:相较于单元测试,更注重端到端的集成测试(解释:从用户实际使用场景出发验证功能,更能发现真实环境中的问题,避免 “单元测试通过但整体用不了” 的情况)
  • 模拟用户行为:通过模拟用户点击网站 / 应用的操作来测试功能(解释:站在用户视角验证交互逻辑,确保功能符合实际使用习惯)
  • 捕捉回归问题:大语言模型(LLM)常对无关逻辑进行不必要的修改(解释:AI 可能在优化某功能时误改其他代码,测试能及时发现这类 “牵一发而动全身” 的问题)
  • 分步前先测试:进入下一个功能前,确保测试通过(解释:及时验证当前成果,避免带着问题推进,防止后期问题集中爆发难以定位)
  • 用测试作 “护栏”:部分创始人建议从测试用例入手,以明确边界(解释:先定义 “什么是对的”,为 AI 提供清晰的目标框架,减少无效尝试)

高效调试

  • 利用错误信息:直接复制粘贴错误信息,对 AI 而言通常就足够了(解释:错误信息包含具体报错位置和原因,能帮助 AI 精准定位问题,提高调试效率)
  • 编码前先分析:让 AI 思考多种可能的原因(解释:避免 AI 局限于单一思路,通过多维度分析覆盖潜在问题点)
  • 失败后重置:每次修复尝试失败后,从 clean 状态重新开始(解释:防止错误修复方案的残留代码干扰下一次尝试,保持代码环境纯净)
  • 实现日志记录:添加策略性日志,以更好地理解程序运行情况(解释:通过日志追踪代码执行流程,快速定位隐藏在逻辑深处的问题)
  • 切换模型:当一个 AI 模型卡住时,尝试不同的模型(解释:不同 AI 模型的训练数据和逻辑侧重不同,换模型可能带来新的解题思路)
  • 干净地实现修复:一旦确定修复方案,在干净的代码库上重置并实现(解释:确保修复后的代码无冗余,避免 “补丁摞补丁” 导致的维护难题)

AI 工具优化

  • 创建指令文件:在合适的文件(如 cursor.ruleswindsurf.rulesclaude.md)中为 AI 编写详细指令(解释:将长期有效的要求固化为文件,避免重复沟通,确保 AI 持续遵循统一标准)
  • 本地文档化:将 API 文档下载到项目文件夹,以确保准确性(解释:AI 对实时 API 细节的记忆可能有偏差,本地文档能让 AI 参考最新、最准确的信息)
  • 使用多工具:部分创始人会在同一个项目中同时运行 Cursor 和 Windsurf(解释:不同工具的优势互补,能提高解决方案的多样性和质量)
  • 工具专业化:Cursor 在前端工作中速度稍快,而 Windsurf 思考更慢(但可能更深入)(解释:根据任务类型选择工具,前端快速迭代用 Cursor,复杂逻辑分析用 Windsurf,提升效率)
  • 对比输出结果:生成多个解决方案,然后挑选最佳方案(解释:通过横向对比不同方案的优劣,选择最适合当前场景的实现方式)

复杂功能开发

  • 创建独立原型:先在干净的代码库中构建复杂功能(解释:隔离复杂逻辑与主项目,降低对现有代码的干扰,便于专注突破难点)
  • 使用参考实现:将 AI 指向可参考的工作示例(解释:给 AI 提供具体的 “标准答案” 模板,减少其凭空创造的试错成本)
  • 清晰的边界:保持外部 API 一致,同时允许内部修改(解释:确保复杂功能与其他模块的交互稳定,内部逻辑则可灵活优化)
  • 模块化架构:具有清晰边界的基于服务的架构,比单体仓库(monorepos)更适用(解释:模块化能降低代码耦合度,让 AI 更容易理解和修改单一模块,减少连锁反应)

技术栈考量

  • 成熟框架更出色:Ruby on Rails 因 20 年的一致约定而表现良好(解释:成熟框架的规范清晰、社区支持完善,AI 对其语法和最佳实践的掌握更精准)
  • 训练数据很重要:像 Rust 或 Elixir 这类较新的语言,训练数据可能更少(解释:AI 对训练数据少的语言理解有限,容易生成不规范代码,增加调试成本)
  • 模块化是关键:小而模块化的文件,对人类和 AI 而言都更易处理(解释:文件体积小、逻辑单一,便于 AI 快速理解上下文,减少解读偏差)
  • 避免大文件:不要保留数千行的超大文件(解释:大文件逻辑复杂、上下文关联紧密,AI 难以整体把握,容易在修改时出错)

编码之外

  • DevOps 自动化:用 AI 配置服务器、DNS 和托管服务(解释:AI 可生成标准化配置脚本,减少手动操作的繁琐和错误)
  • 设计辅助:生成图标等设计元素(解释:借助 AI 快速产出基础设计素材,降低对专业设计工具的依赖)
  • 内容创作:起草文档和营销材料(解释:AI 擅长文字组织,可快速生成初稿,节省内容创作时间)
  • 学习工具:让 AI 逐行解释实现逻辑(解释:通过 AI 讲解代码细节,帮助开发者理解陌生技术或复杂逻辑)
  • 使用截图:可视化分享 UI bug 或设计灵感(解释:图片比文字更直观,能让 AI 精准理解视觉相关的问题或需求)
  • 语音输入:像 Aqua 这样的工具支持每分钟 140 词的输入(解释:语音输入比打字更快,适合快速记录想法或下达指令)

持续改进

  • 定期重构:测试到位后,频繁进行重构(解释:通过重构优化代码结构,避免技术债务累积,保持代码可维护性)
  • 发现优化机会:让 AI 寻找可重构的候选点(解释:AI 可从全局视角识别冗余或低效代码,提供人类可能忽略的优化方向)
  • 紧跟更新:尝试每一个新的模型版本(解释:新模型通常在特定任务上有性能提升,及时体验可发现更高效的工作方式)
  • 识别优势:不同模型在不同任务上各有所长(解释:了解各模型的擅长领域,在合适的场景使用合适的工具,最大化效率)
Logo

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

更多推荐