先说一个亲身经历的案例:同样使用一款AI编程工具,团队里两位工程师产出的代码质量天差地别。一位还在写“请帮我实现一个用户登录功能”,另一位已经开始在Prompt中嵌入类型定义和测试框架了。这背后的差异,其实折射出AI编程正在经历一场深刻的范式转变——从Prompt工程走向Agent原生交互。

Claude Code是Anthropic推出的一款终端AI编程助手,与Cursor、Copilot等工具相比,其核心差异在于它直接在命令行中工作,能够读写文件、执行命令、管理Git仓库,操作十分顺手。过去半年,我利用它重构了三个中型项目,走过不少弯路,也逐步摸索出一些真正高效实用的用法。
核心转变:别再写“指令”,写“上下文”
传统的Prompt工程,其核心逻辑是“告诉AI如何操作”;而Agent原生交互,核心理念则是“让AI理解它面对的是什么”。
以前那种写法:
请帮我修复这个 bug
现在应该这样写:
当前目录是 /src/core,我遇到了一个 NPE,堆栈在 worker.go:145。这个方法的预期行为是:当队列为空时返回空切片而非 nil。请阅读 worker.go 文件,定位问题并修复。
区别很明显吧?后者提供了工作目录、问题现象、预期行为以及具体文件路径。Claude Code无需猜测上下文,可以直接进入解决问题阶段。
在实际项目中,我习惯在Prompt开头固定放置一段“上下文声明”:
项目:微服务网关语言:Go 1.22框架:gin + redis当前文件:middleware/ratelimit.go问题:令牌桶算法在高并发下漏桶预期:每个 IP 的请求间隔至少 100ms
这样一来,Claude Code的回复准确率直接从40%跃升至80%以上。
实战技巧一:用 / 命令管理对话状态
Claude Code内置了一系列 / 命令,很多人只认识 /help。但真正好用的其实是这几个:
/clear:清空对话历史。当Claude开始重复之前的错误推理时,直接清空重来,比继续纠正效率更高。平均每3-5轮对话使用一次效果最佳。
/compact:压缩上下文。对话过长会消耗大量Token,使用此命令让Claude自动总结关键信息,保持上下文的新鲜度。
/review:让Claude审查当前文件的变更。每次提交前运行一遍,能发现不少遗漏的边界情况。
/init:初始化项目时使用。Claude会扫描项目结构,生成一份“项目理解文档”,后续对话直接基于此理解,无需每次都重复上下文。
实战技巧二:分阶段 prompt 策略
不要写一个长Prompt让Claude一次性完成所有任务,而是将其拆分为三个阶段:
阶段一:探索(Exploration)
请阅读 src/ 目录下的所有文件,列出当前项目的模块划分和依赖关系。重点关注 database/ 和 api/ 这两个目录。
阶段二:方案(Proposal)
基于上面的分析,我需要重构用户认证模块。当前问题是 JWT 过期后没有刷新机制。请给出 2-3 种实现方案,对比优缺点。
阶段三:实现(Implementation)
我选择方案二(双 Token 机制)。请按以下步骤实现:1. 在 auth/ 目录下创建 refresh_token.go2. 修改 middleware/auth.go 添加刷新逻辑3. 更新路由注册每完成一步请确认。
这样拆分后,每个阶段Claude的上下文都非常清晰,不会因为长对话而“失忆”。而且,如果方案不合理,第二阶段就能及时纠正,不必等到代码全部写完才发现方向错误。
实战技巧三:测试驱动 prompt
Claude Code写代码时经常遗漏边界情况,因此我强制在Prompt中先写测试:
请先写单元测试,再实现功能。测试文件放在 auth_test.go,覆盖以下场景:- 正常登录- 密码错误- 账号被锁定- Token 过期- 并发登录
Claude会先生成测试桩,然后编写实现代码让测试通过。这样产出的代码质量明显更高,测试覆盖率也自然提升。
有一次让Claude实现一个限流中间件,它先写了测试,测试中涵盖了一个我未曾想到的场景——当Redis连接超时时的降级策略。这个测试帮我堵住了一个生产环境中的潜在Bug。
实战技巧四:用 git 做安全网
Claude Code可以直接执行Git命令,把它当作“安全网”来使用:
请先 git stash 当前未提交的改动。然后创建一个新分支 feature/rate-limit。实现完成后 git commit,并 push 到远程。
这样即使Claude写错了,切回主分支也能恢复原样。每次Prompt开始前,先让Claude确认当前Git状态:
请检查 git status,确认没有未提交的改动。如果有,先 stash。然后开始下面的任务。
踩坑记录:别让 Claude 改它不该改的
有一次让Claude优化数据库查询性能,它发现ORM生成的SQL效率低,直接修改了模型层的字段类型,结果导致数据迁移脚本全部失效。
因此,一个重要的原则是:必须给Claude划定明确的边界。
请优化 user_repository.go 中的查询方法。注意:不允许修改:- 数据库表结构- 模型定义- 其他 repository 文件你只能修改 user_repository.go 中的查询逻辑。
边界声明能让Claude的改动范围可控,避免“好心办坏事”。
效果数据
经过三个月实践,我整理了一些数据:
| 指标 | 传统 Prompt | Agent 原生交互 |
|---|---|---|
| 一次通过率 | 35% | 72% |
| 平均对话轮数 | 8.2 | 3.5 |
| 代码质量评分 | 6.5/10 | 8.3/10 |
| 调试时间 | 45 分钟 | 18 分钟 |
数据来自同一个项目的三个模块重构,样本量虽不大,但趋势非常明显。
真正值得投入的方向
与其花时间琢磨Prompt的精妙措辞,不如把精力放在如何让AI理解你的项目和意图。Claude Code的优势不在于其推理能力有多强,而在于它能直接操作你的代码库。当你把它当作一个能读写文件、执行命令的工程师,而非一个问答机器人时,产出效率才能真正提升。
不是Prompt工程不重要,而是Agent时代的Prompt工程不再是“写指令”,而是“搭上下文”。上下文越完整,AI的理解就越准确,产出的代码就越接近你的预期。这比任何花哨的Prompt模板都管用。
我踩过的坑是花太多时间研究Prompt格式和措辞,其实效果远不如将项目的目录结构、接口定义、测试用例一起提供给Claude。回头来看,Agent编程的本质并非提示词的技巧比拼,而是工程师对系统理解的深度——你能构建出多精确的上下文,Claude就能回报多高质量的输出。这才是真正值得投入的方向。
