去年写过一篇AI编程的入门文章,讲的是怎么用Copilot写简单函数、怎么用ChatGPT调试bug。那篇写完之后收到不少反馈,说内容太基础了,想知道更高级的用法。
行,这篇就讲高级的。
过去一年我用AI编程工具写了不少东西——从个人项目到公司里的生产代码。踩过坑,也找到一些真正好用的技巧。今天把这些经验整理出来,希望对你有用。
第一阶段:从补全到对话
大多数人用AI编程的第一阶段是把它当高级自动补全。写个函数名,它帮你补全函数体。写个注释,它帮你写代码。这很好,但效率提升有限。
真正的提升在第二阶段:把AI当对话对象。
什么意思?不是让它帮你写一行代码,而是跟它讨论你的设计方案。
比如我要实现一个用户认证系统。以前我会直接让它"写一个JWT认证中间件"。现在我会先跟它聊:
"我在做一个Node.js的API服务,需要用户认证。用户量不大,大概几千人。我考虑用JWT,但不确定该不该用refresh token。你怎么看?"
这种对话比直接让它写代码有价值得多。它会给你分析不同方案的优缺点,帮你做决策。而且你在这个过程中会想得更清楚——有时候跟AI聊着聊着,自己就把方案想明白了。
我的习惯是:复杂功能先聊10分钟,再开始写代码。这10分钟省下来的时间,远比直接让AI写代码然后反复修改要多。
第二阶段:Context管理
用了一段时间你会发现,AI编程最大的瓶颈不是模型能力,而是上下文管理。
模型的context window是有限的。你的项目有50个文件,但你一次只能给模型看几个文件。给哪些文件、按什么顺序给、怎么压缩,直接决定了AI输出的质量。
我总结了几条经验:
先给骨架再给细节。先让AI看项目结构(目录树、package.json、README),再看具体文件。它需要先理解项目的整体架构,才能写出符合你项目风格的代码。
只给相关的文件。很多人把整个项目目录丢给AI,结果它在一堆无关代码里迷失了。手动选择3-5个最相关的文件,比自动索引整个项目效果好。
用.cursorrules或.claude文件做项目级别的context。在项目根目录放一个规则文件,写上你的技术栈、代码风格、命名规范。这样每次对话AI都会自动读取,不用你反复解释。
长对话不如多轮短对话。聊了20轮之后,模型的输出质量会下降(因为它被前面的对话内容淹没了)。更好的做法是每完成一个子任务就开新对话,把关键结论写在规则文件里。
第三阶段:Agent模式
2026年最让我兴奋的是Agent模式。Cursor的Composer、Claude Code、Codex——这些工具不只是补全代码,它们能理解你的意图,自己规划步骤,然后执行。
Agent模式和传统AI编程的区别:传统模式是"我告诉AI写什么",Agent模式是"我告诉AI要达到什么目标"。
举个例子。
传统模式:"在UserController里添加一个changePassword方法,接收oldPassword和newPassword参数,验证旧密码是否正确,然后更新数据库。"
Agent模式:"添加修改密码功能。要求:验证旧密码、密码强度检查、更新后发送通知邮件。"
Agent模式下,AI会自己决定需要改哪些文件、怎么组织代码、怎么处理错误。它甚至会帮你写测试。
但Agent模式有个大坑:你必须验证它的每一步操作。
我在一个项目里让Agent模式添加一个支付功能。它确实加了,代码也能跑。但审查的时候我发现它把Stripe的secret key硬编码到了前端代码里。它在技术上完成了任务,但安全上是一场灾难。
我的Agent模式使用原则:
小步前进。每次只让它做一件事。不要说"帮我搭建整个后端",而是"先创建数据库schema"、"然后添加用户注册API"、"再加登录功能"。一步一步来,每步都review。
让它先写测试。先说"帮我写这个功能的测试用例",review测试用例确认理解了需求,然后再说"现在实现这个功能让测试通过"。测试即文档,AI照着测试写出来的代码比照着描述写出来的靠谱得多。
每次提交前diff。Agent模式改的文件可能比你预期的多。养成习惯,每次commit前看一遍所有改动。我有好几次发现Agent偷偷改了我之前的代码,只因为它觉得那个地方"可以优化"。
高级技巧:多模型组合
不要只用一个模型。不同模型擅长不同的事。
我目前的工作流是这样的:
设计阶段用Claude Opus。它的推理能力强,适合做架构设计和方案讨论。跟它聊技术方案,它给出的建议通常比较靠谱。
写代码用Claude Sonnet 4或GPT-4o。这两个在代码生成上差别不大,选哪个看心情。Sonnet 4在Python和TypeScript上略好,GPT-4o在Go和Rust上略好(但差距很小)。
Review用o3。让o3审查代码,它经常能找到其他人(包括我自己)忽略的bug。推理模型在找bug这件事上确实强。
重构用Claude Code的Agent模式。大范围的代码重构(比如把一个类拆成三个、把同步改成异步)用Agent模式效率最高。给它一个清晰的目标,让它自己规划怎么改。
怎么快速切换模型?我用的是SevenFa AI Hub的统一API。一个key搞定所有模型,在Cursor和VS Code里只需要改一行配置就能切换底层模型,不用管各家SDK的差异。
高级技巧:让AI写AI用的代码
这是一个元技巧:用AI帮你写更好的AI编程环境。
比如我让AI帮我写了一个脚本,自动分析项目的依赖关系,生成一个context文件。每次开新对话前先跑这个脚本,AI就能快速理解项目结构。
import os
import json
def generate_project_context(root_dir: str) -> str:
"""生成项目上下文摘要,给AI用"""
lines = []
for dirpath, dirs, files in os.walk(root_dir):
# 跳过node_modules等
dirs[:] = [d for d in dirs if d not in
['node_modules', '.git', '__pycache__', 'dist']]
level = dirpath.replace(root_dir, '').count(os.sep)
if level > 3:
continue
indent = ' ' * 2 * level
lines.append(f"{indent}{os.path.basename(dirpath)}/")
# 读取关键配置文件
for config in ['package.json', 'tsconfig.json', 'requirements.txt']:
path = os.path.join(root_dir, config)
if os.path.exists(path):
with open(path) as f:
lines.append(f"\n--- {config} ---")
lines.append(f.read()[:2000])
return '\n'.join(lines)
再比如我写了一个脚本,在每次AI生成代码之后自动跑lint和type check。如果有错误,把错误信息喂回给AI让它修。这个循环省了我很多手动修复的时间。
高级技巧:处理大型重构
AI编程最难的场景不是写新代码,是改老代码。
尤其是那种跨10个文件的重构——把一个类从A模块移到B模块,所有引用都要改,接口可能还要调整。这种任务用AI做,最容易出错。
我的方法是分步骤来:
第一步,让AI先理解现状。"帮我分析一下UserService这个类,它在哪些文件中被引用了?每个引用是怎么使用的?"
第二步,制定迁移计划。"我要把UserService从src/services移到src/modules/user/services。帮我列出需要修改的所有文件和具体改动。"
第三步,逐步执行。不要让AI一次性改完。"先创建新的目录结构"→"然后移动文件"→"更新import路径"→"运行测试确认没破坏东西"→"更新类型定义"。
第四步,全面验证。"跑一下所有的测试,看看有没有broken的"→"跑一下type check"→"检查有没有遗留的旧import路径"。
这四步看起来啰嗦,但比让AI一口气改完然后花两小时debug靠谱得多。
踩过的坑
说几个我踩过的坑,希望你别重蹈覆辙。
坑一:盲目接受AI的代码风格。AI生成的代码风格可能和你项目不一致。比如你的项目用camelCase,AI可能给你生成snake_case。我有一次merge了一堆AI生成的代码,结果项目里两种命名风格混着来,后面花了半天统一。
解决方案:在.cursorrules里明确写上代码风格要求。
坑二:不看AI生成的测试。有些人让AI写测试,看都不看就跑。AI写的测试可能测的是错误的东西,或者测试本身就有bug。测试通过了不代表功能正确,可能只是测试和实现犯了同一个错误。
解决方案:review AI写的测试,确认测试逻辑是对的。
坑三:过度依赖AI做决策。AI很擅长写代码,但不擅长做产品决策。"这个功能该不该加"、"这个API该怎么设计"、"这个技术选型对不对"——这些问题你得自己判断,AI只能提供信息和分析。
坑四:忽略安全问题。AI生成的代码经常有安全漏洞。SQL注入、XSS、硬编码密钥、不安全的反序列化——这些我都在AI生成的代码里见过。每次AI写涉及用户输入、数据库操作、认证授权的代码,都要仔细审查。
我的日常工作流
最后总结一下我目前的日常工作流,供参考:
早上开始工作,先开一个新对话,把昨天的进展和今天的计划告诉AI。让它帮我梳理一下今天要做的事。
写新功能:先跟AI讨论方案(5-10分钟),确认方案后让AI写测试,review测试,让AI写实现,review实现,跑测试。整个过程大概20-30分钟完成一个中等功能。
修bug:把错误信息和相关代码贴给AI,让它分析可能的原因。它通常会给出3-5个可能的原因,我逐个排查。这比我自己从头debug快得多。
Code review:把PR diff贴给AI,让它review。它会指出潜在问题、建议改进方案。但我不会100%听它的——有些它觉得"不好"的代码其实是故意的trade-off。
学习新技术:遇到不熟悉的领域,先跟AI聊30分钟。它比看文档快,而且你能随时追问。但要注意,AI可能给你过时的信息,关键细节还是要查官方文档。
整个流程的核心是:AI是工具,不是替代品。它能帮你写代码、分析问题、做方案,但最终的判断和决策是你的。