我与 AI 结对编程

88 阅读8分钟

你好,我是 hockor,过去一年多,我的工作状态和开发习惯都经历了显著的变化。

过去我的日常主战场是 IDE 和 Google、官方文档以及 stackOverflow 等,而现在,我会让 AI 基于 PRD文档给我生成思维导图帮助我梳理需求,基于流程图规划流程,基于 projects rules 规划它的编码方式,甚至还有 AI 帮我 CR 代码。

自从深入接触并开始使用AI辅助编程工具,我发现自己对过去那种逐行逐字符“码”代码的热情有所减退。这并非源于懈怠,而是因为我的工作重心和关注点已转移到更上游、更全局的层面。

总结起来就是:

深入挖掘业务需求与目标: 专注于理解问题的本质、服务对象以及解决方案的价值,这成为一切技术实现的基石。

规划系统的整体蓝图: 大部分思考时间用于设计系统架构,包括主要组成部分、数据流向、模块边界及相互通信方式。

细化各部分的具体职责: 在宏观框架确定后,进一步明确每个模块或组件的功能和角色,同时配置各个模块的 rules。

AI 给我生成代码并验证效果: 不再直接编写实现代码,而是用清晰准确的文字描述功能,将其转化为Prompt交给AI生成初步代码草稿。

Cursor 的入坑之旅

我记得第一次用 cursor 应该是 2022 年底的时候吧,第一次下载下来简单体验了一下,说实话,没啥感觉,我记得当时功能还比较粗糙,可以选中一段内容,按 cmd+k,然后在提示框里面输入你的提示词,最后回车,等大模型返回内容,其他没啥大的功能点了。简单用了一下,嗯...,继续回去用我的 webstorm + copilot 了。

再一次用应该是2024年开端了,那个将体验做到极致的光标预测功能真的太强了,以前的我试过很多次从 webstorm 切换到 vscode ,每次都因为不习惯各种体验然后又逃回webstorm阵营,而cursor这一次的光标预测功能,直接让我 2 天就卸载了webstorm,而后面随着系统化学习了cursor的各种使用技巧,我只能说:“真香”。

我的一些使用习惯

4.22号的时候,cursor的首席设计师发表了12条关于cursor的实战指南频频刷屏,

X 地址: x.com/ryolu_/stat…

这里结合文中的内容和自己的一些使用体验,总结一下:

清晰具体的提示

这个应该是大模型交互中最重要的一点了,清晰具体的内容才能让大模型更好的理解你的意图,比如下面 2 个

帮我实现一个贪吃蛇的网页游戏
帮我实现一个贪吃蛇的网页游戏,要求
- 使用 pixijs 作为渲染引擎
- 支持响应式
- 统计每一次的分数,并实现一个排行榜
- ....

总的来说就是尽可能的约束你的需求,不要让大模型去猜。

别着急让 AI 写代码

很多人一上来就让 AI 开始写代码,结果 AI 一通哐哐哐的写,完了以后一看,WTF,程序都跑不起来了,然后开发者不得的 Reject 所有的修改,心里还默默骂着:SX 大模型。

因此我建议别着急让 AI 一上来就开始写代码,你可以把他当做一个入职的新人,先跟他讨论清楚需求,看看它是否完全理解的意思,也就是

  1. 先拆解需求,缩小关注范围

  2. 让大模型明确实现的目标

参考如下提示词:

我们先探讨方案,在我让你写代码之前不要生成代码
我想实现一个 XXX 功能,请先逐步分析需求
在想明白后向我说明为什么要这么设计,等我确认以后你再写代码,
同时要遵循最小改动原则,避免影响原先的功能,如果需要调整,请先向我确认

设定项目规则

cursor 目前支持 3种规则设定,即 User Rules 、Project Rules 和一个即将废弃的 .cursorrules,目前官方只推荐前 2 种。

第一个 User Rules 可以理解为一个编辑器全局的规则,比如你的语言偏好等

第二个 Project Rules 会在你当前项目下创建一个 .cursor/rules 目录,用来存放你的规则,它是一个以.mdc 结尾的文件(即加强版的 markdown),并且支持 4 种规则类型

具体可以参考官方文档:docs.cursor.com/context/rul…

善于利用上下文

cursor的@符很强大,可以将大模型更精确的导向代码库的特定文件,以及提供更准确的资料、上下文信息。

用语音讲描述

科学研究,说话的速度是打字的3倍及以上,所以在一些规则描述或者是提示词书写的时候,不妨试试看语音输入,mac自带的F5就是语音输入,我使用频率贼高。不过一些专业术语识别一般,自己改一改也还是要比纯输入快的多。

另外最近了解到也有一个语音输入的工具 superwhisper ,感兴趣的同学可以自己了解一下:superwhisper.com/

不同场景的模型选择

根据任务需求选择合适的 AI 模型,可以参考下cline 官方的博客: cline.bot/blog/what-m…

总结起来就是:

设计与架构阶段: 需要强大推理能力和丰富知识库的模型,以理解业务需求并做出清晰的架构决策。关注点是强大的思维链推理和一般知识。当前表现强劲的模型包括OpenAI o1、Gemini 2.5 Pro、DeepSeek R1等。在这个阶段投资高端模型能有效节省后期重做成本。

开发阶段: 需要擅长理解代码模式、建议补全和解释实现的模型。关注点是真实世界的编码性能。社区驱动的排行榜如Chatbot Arena是重要参考。当前表现强劲的模型有Gemini 2.5 Pro、GPT-4o、Grok 3等。

我好像还是 Claude 3.7 用的多,但是 gemini 2.5 我感觉是真的强。后面要切到 gemini 去了

测试阶段: 需要擅长理解边缘情况和编写健壮测试代码的模型。关注点是编码任务和挑战中的熟练度,参考Big CodeBench基准。当前表现强劲的模型包括Claude 3.7、OpenAI o1、GPT-4o mini等,中级模型通常能胜任简单测试套件,高级模型用于复杂场景。

部署与审查阶段: 需要具有大上下文窗口的模型,能够理解整个代码库。关注点是大上下文窗口和多模态能力。参考MMMU基准,当前表现强劲的模型有Gemini 2.5 Pro、GPT-4o mini、GPT-4.1、OpenAI o1等,处理整个代码库的能力能显著加快审查周期。

其他

粘贴文档链接: 在不熟悉的技术栈中,粘贴文档链接(如使用Context7获取最新文档)帮助AI理解和解释代码错误,这里推荐大家可以装一下 context7 的 MCP 服务。

先写测试: 先让 AI 实现测试文件,然后生成代码直到通过所有测试。

保存设计文档和检查清单: 将相关文档保存在.cursor/或README文件中,帮助Agent全面了解项目进度和计划。

与AI的结对编程

过去一年多,我感觉自己正与 AI 进行一种全新的“结对编程”,AI负责快速生成代码实现,而我则扮演着总指挥、审查员和修正师的角色。我负责检查AI的输出是否正确,纠正错误,并在AI遇到困难或理解偏差时提供更详细的指引。

起初,这种将实现工作“外包”给AI的模式让我有些不适应,感觉似乎失去了对代码的掌控感,但是后面逐渐意识到,我并未停止“写”代码,只是“写作”的单位变得更大、更抽象。我从专注于实现细节的“码农”,正在向更注重设计和协作的“架构师”转变。

这种转变带来了效率的显著提升。过去可能需要十小时编写几百行代码并进行调试,现在只需三小时进行思考、设计和编写Prompt,然后与AI协作调整,即可快速获得功能完善的Demo。最终运行的代码虽大部分非我亲手逐行敲写,但系统的“灵魂”和“骨架”——设计思路、模块划分、核心逻辑——都源于我的构思和决定(PS:也有好多时候是 AI 教我 😂)。

那么,有了AI编程,程序员是否还有用武之地?

我的答案是肯定的,而且未来的程序员需要具备更高级、更全面的能力。我们不再是单纯的代码实现者,而是要成为能够驾驭AI工具、具备系统设计能力、理解业务本质、善于协作和解决复杂问题的“新一代建造师”。

AI解放了我们的双手,让我们有更多时间去思考那些真正有价值、需要人类智慧才能解决的问题。我们不是被取代,而是与AI一同升级,探索编程的无限可能。

qrcode_for_gh_4c654a420e3e_344.jpg