怎么跟 AI 说话才能让它写出你要的代码——我和 Claude Code 的配合心法

发布于 2026-06-17  |  阅读 9 次

如果你以为 AI 编程就是"你描述需求,AI 啪一下给你完美代码"——我得先泼一盆冷水。

不是这样的。

AI 更像是——一个不会累、反应极快、但时不时会理解歪你意思的实习生。它能力很强,但你需要学会怎么跟它沟通。我把这几个月摸索出来的经验写下来,帮你少走点弯路。

一、怎么描述需求

先说一个翻车的例子。

我最早跟 AI 是这么说的:"帮我做一个拼多多订单管理的插件。"

AI 回了一大段,问我:用什么技术栈?界面长什么样?数据从哪来?要不要登录功能?要不要后端?

我当时懵了——这些问题我一个都答不上来。后来才明白,AI 需要你告诉它"具体要什么"

改进后的说法是这样的:

"我需要一个 Chrome 浏览器扩展。功能是:点击工具栏图标弹出一个控制面板页面,页面上有一个按钮'同步订单',点击后从拼多多拉取我的买家订单数据并显示在列表里。列表每行显示订单号、商品名称、金额、订单状态。每个订单前面有勾选框,勾选后可以点击'批量申请发票'按钮。"

有什么区别?改之前的描述太空泛了,改之后包含:具体做什么(同步订单)、怎么做(拉取数据并显示)、长什么样(每行显示哪些字段)、有什么交互(勾选框、按钮)。这些东西 AI 都需要知道才能写出对的代码。

我的经验是:说清楚"输入是什么、输出是什么、在什么情况下做什么"。把这三句话写进你的需求描述里,AI 理解准确的概率会高很多。

二、怎么给反馈

AI 写完第一版代码之后,大概率不是 100% 对的。你可能看到报错了,或者功能跑通了但体验不好。这时候你要"迭代"——告诉 AI 哪不对,让它修改。

我的做法是:

  1. 先描述现象("点击批量开票之后弹窗是空白的")
  2. 贴错误信息(如果有报错的话——这个非常重要,AI 看报错信息比看你的描述更管用)
  3. 说明你期望的结果是什么("希望弹窗里加载出拼多多的发票页面")

还有一个技巧:一次只改一个东西。不要一口气提七八个修改需求。AI 在处理复杂多任务时容易顾此失彼。一个功能搞定了再搞下一个。

三、怎么让 AI 帮你 debug

不要怕报错。报错是 AI 帮你定位问题的最好线索。

比如有次我遇到一个 500 错误——就是页面打不开了。我把完整的报错信息贴给 AI。它几秒钟就定位到了:少了一行 require_once,导致程序找不到类文件。这个问题如果让我自己查——我可能查一天都查不到。但 AI 靠堆栈信息就能定位到具体哪一行。

贴报错信息的时候一定要贴完整的。不要只贴最后一行。完整的堆栈追踪信息能帮 AI 快速回溯到问题源头,比你自己理解半天再描述一遍要准得多。

四、让 AI 写之前,先把项目背景说清楚

Claude Code 有个功能叫 CLAUDE.md——一个放在项目根目录的文件,AI 每次启动都会读。我在里面写了:这个项目是什么、用了什么技术栈、有哪些注意事项(比如"不要主动提交 git"、"数据库是 MySQL 不是 SQLite")。

这个文件非常有用。因为 AI 每次新对话都是"失忆"状态——它需要重新理解你的项目。有了 CLAUDE.md,AI 能更快进入状态,不用每次都重复解释。

五、最最重要的一个原则

不要让 AI 一次做太多事。把大任务拆成小步骤,一个步骤一个步骤来。每个步骤完成了、验证没问题了,再进行下一步。这不是慢——是稳。我最开始走了很多弯路就是因为想让 AI 一次性把所有功能都写完,结果出现了大量乱七八糟的 bug,最后还得一个个排查。

六、几个让 Claude Code 更好用的高级功能

Auto Memory:让 AI 自动记住你的偏好

Claude Code 有个功能叫 Auto Memory。你每次跟它对话的时候,如果它发现某些信息值得记住(比如你的偏好、项目的特殊配置、你之前踩过的坑),它会自动保存到 memory 里。下次对话的时候它会读取这些记忆,相当于 AI 越来越了解你的项目。

不需要手动开启——默认就是打开的。你也可以在 Claude Code 里输入 /memory 来查看和管理已保存的记忆。如果有一条记忆不准确或者过时了,直接删掉就行。

我的实际体验:它记住了一些我之前告诉它的东西——比如"不要主动提交 git""数据库是 MySQL 不是 SQLite"——后面新开的对话里它自动就知道了。省了我不少重复解释的口舌。

Hook(钩子):让 AI 在特定时机自动做事

Hook 是我后来才学会的功能。简单说就是——你可以在特定时机让 Claude Code 自动触发某个操作。

两个实用的 Hook 场景:

任务完成提示音——有时候让 AI 执行一个长任务(比如改好几个文件),你可能切出去干别的事了。任务完成的时候,让 AI 触发一个提示音:

设置一个hook,每次完成任务之后,都自动执行一个声音脚本,发出一个提示音"叮"进行提醒

直接把上面这句话告诉 Claude Code 就行,它会帮你设置好。

代码提交前自动检查——每次 git commit 之前,AI 自动帮你跑一遍代码格式检查,避免把有格式问题的代码提交了:

设置一个hook,每次提交代码之前,都会自动触发代码格式的检查

Hook 的作用就是在你不注意的时候帮你守住底线——相当于一个自动化的"门卫"。

Plugin(插件):把能力打包起来

Plugin 是 Claude Code 里比较高级的概念。简单理解——它把 Skill(技能)、SubAgent(子代理)、Hook(钩子)、MCP(外部工具连接)打包成一个统一的东西。

在 Claude Code 里输入 /plugin 可以进入插件管理界面。在这里,你可以浏览其他人发布的插件、下载安装需要的插件、管理自己已经安装的插件。

举个例子——有个叫 commit-commands 的插件,它可以让你用简单的命令完成 Git 的提交、推送和创建 PR(Pull Request)等操作。不用记复杂的 git 命令,输入几个字就行。

还有个叫 content-creator 的插件,专门用来跨平台写内容——从博客文章到视频脚本到社交媒体内容都覆盖。如果你经常需要写不同平台的内容,这个能节省不少时间。

用 Plugin 的好处是——你不用自己去研究这些功能怎么做。别人做好了,你直接装。

Skill(技能)和 SubAgent(子代理)

Skill 是 Claude Code 的"技能包"——你可以给 AI 安装特定的技能,让它在某些领域变得更专业。SubAgent(子代理)则更进一步——你可以创建多个独立的 AI 助手,每个负责不同类型的任务(比如一个专门写前端、一个专门写后端、一个专门做测试)。

创建子代理很简单——输入 /agents 进入代理管理界面,选择创建项目级的子 Agent,给它起个名字、选个颜色方便区分。之后根据不同需求调用不同的子 Agent 来处理对应的工作。

我自己的项目里用得不多(规模还没到需要分工的程度),但对于大项目或者团队协作来说,这个功能非常实用。

MCP(Model Context Protocol):连接外部工具

MCP 是一个比较新的概念——它让 Claude Code 能连接到外部工具(比如数据库、文件系统、第三方服务等),扩展 AI 的能力范围。举个简单例子:通过 MCP 连接你的 MySQL 数据库,Claude Code 就可以直接查询数据库里的数据、分析表结构——不需要你手动导出数据再贴给它看。

MCP 的配置稍微复杂一点,需要写一些 JSON 配置文件。但对于需要频繁跟数据库打交道的人来说,这是值得投入时间去配的——一劳永逸。

一些常用的指令

除了上面这些,Claude Code 还有很多内置的快捷指令:

这些指令不需要背,用到的时候输入 / 然后按 Tab 键,Claude Code 会列出所有可用的指令让你选。

七、我实际用到的 Claude Code Skills

Claude Code 有一个 Skill(技能)系统——你可以把它理解成给 AI 安装"专业技能包"。安装了某个 Skill 之后,AI 在对应场景下会变得更专业。我这个项目的过程里实际用了下面这些 Skill,每个都发挥了很明显的作用。

brainstorming — 头脑风暴

最常用的 Skill 之一。当我不确定"接下来该做什么"的时候,就让 AI 用这个 Skill 来帮忙想方案。比如 30 天 300 篇文章的发布计划——"帮我调研一下应该写什么内容比较好"——AI 会自动去搜索当前的热门话题、分析关键词、然后给出一份详细的选题计划。不是拍脑袋瞎编的,是基于实际搜索数据来的。SEO 关键词策略、文章主题分类、甚至"用户会怎么搜索"——这些我完全不懂的东西,都是这个 Skill 帮我搞定的。

writing-plans + executing-plans — 写计划 + 执行计划

这两个是一对搭档。writing-plans 负责把一个模糊的想法变成清晰的执行计划——分几步、每步做什么、需要改哪些文件。executing-plans 负责照着计划一步步执行。比如做"批量开票进度窗口"这个功能的时候,AI 先用 writing-plans 写了一个方案:改哪些文件、UI 怎么设计、状态机怎么流转。然后我用 executing-plans 让它一步步实现。有计划和没计划的区别——没计划的时候 AI 容易跑偏,做着做着忘了最初要干什么。有了计划,每步都有明确的验收标准。

systematic-debugging — 系统化调试

这个 Skill 是我最喜欢的。它让 AI 不再"凭感觉猜 bug",而是按照一套系统化的方法来排查问题。有次管理后台改密码报 500 错误——页面完全白屏,没有任何提示。AI 用这个 Skill 先是让我打开 PHP 的错误显示,看到具体的报错信息(Class "Auth" not found),然后追查这个类在哪些文件里被引用、哪个文件漏了 include,最后定位到 settings.php 缺少一行 require_once。整个过程大概五分钟。如果是我自己排查——我连"Class not found"是什么意思都不知道,更别说定位到具体文件了。

verification-before-completion — 完成前验证

每次 AI 说"问题已修复"的时候,这个 Skill 会让它先去验证一下——"先确认修改有没有生效,再告诉我完成了"。比如改完 Nginx 配置之后,它不只是说"配置已修改",而是会实际访问一下页面看看返回码是不是 200。这个习惯避免了"我以为修好了但其实没有"的情况。

webapp-testing — 网页测试

用来在本地测试网站功能的。AI 可以用这个 Skill 自动打开浏览器、访问页面、检查元素是否正确显示。我在本地调试管理后台的激活码生成功能时用过——AI 自动打开页面,填充表单,点提交按钮,然后检查返回结果。比我自己手动测试快多了。

strategic-compact — 对话压缩

Claude Code 的对话是有长度限制的——聊太久了之后,前面的内容会被"遗忘"。这个 Skill 会在对话太长之前主动提醒——"现在是个好时机,要不要把前面的内容总结一下,然后继续?"这个功能对长项目特别有用。我开发这个项目的过程中,有时候一个功能会跟 AI 来回几十轮对话。如果没有 compact 机制,AI 可能已经忘了前面讨论过的关键信息。

subagent-driven-development — 子代理开发

当有多个独立任务可以同时进行的时候,这个 Skill 可以创建子代理来并行处理。比如有一天我需要同时做三件事——修批量开票的 bug、写新的 SEO 文章、更新管理后台的样式。AI 用这个 Skill 创建了三个子代理,每个负责一个任务,同时进行。效率比串行高了很多。

这些 Skill 不需要我去"学"——每次用到的时候,AI 会自动加载。我只需要描述我要做什么,AI 自己会选择最合适的 Skill 来辅助。这种体验的好处是——你甚至不需要知道这些 Skill 的存在,它们就在后台默默帮你把事做好了。