# 和智能体沟通的 6 个习惯

> 同一个智能体，有人用得顺手，有人天天返工，差别多半在沟通方式。这一课用「差的说法 vs 好的说法」对比，讲清六个能立刻用上的习惯。

- 网址：https://coding.chengyu.dev/learn/start/talk-to-agents/
- 学习路径：起步：第一次让 AI 写出能跑的东西
- 预计用时：25 分钟；核实日期：2026-10-25
- 官方来源：[Best practices for Claude Code（Claude Code 官方文档）](https://code.claude.com/docs/en/best-practices)，[Common workflows（Claude Code 官方文档）](https://code.claude.com/docs/en/common-workflows)，[Permission modes（Claude Code 官方文档）](https://code.claude.com/docs/en/permission-modes)，[Interactive mode（Claude Code 官方文档）](https://code.claude.com/docs/en/interactive-mode)

## 学习目标

- 能把模糊的想法改写成带验收标准的任务描述
- 能给出恰当的约束和上下文，而不是让智能体猜
- 知道什么时候该让它先出计划，什么时候可以直接动手
- 能用「先读再改」「小步迭代」和「要求验证」减少返工

做完番茄钟你可能已经发现：智能体既不是搜索框，也不是会读心的助手。它更像一位**能力很强、但刚入职、对你的项目一无所知**的同事。你交代得越清楚，它交付得越准。

好消息是，这些沟通技巧不玄学，总结起来就是六个习惯。每个习惯我都配上「差的说法」和「好的说法」的对比，你可以直接模仿。

## 习惯 1：说目标，也说验收标准

「改好看一点」「优化一下」「修个 bug」，这些话的问题在于：**它不知道怎样算做完，你也不知道。** 于是它改完说「已完成」，你一看不对，来回拉扯。

差的说法：

```text
把番茄钟优化一下
```

好的说法：

```text
番茄钟现在在手机上按钮太小，不好点。目标：在 375 像素宽的屏幕上，
三个按钮每个至少 44 像素高，并且一行排得下、不换行、不溢出。
改完后用浏览器的手机模拟模式检查并告诉我结果。
```

好的说法里有三个要素：**现状（哪里不好）、目标（改成什么样）、验收（怎么证明）。** 当你实在不知道验收标准是什么，可以反过来问它：「你觉得怎样验证这个改动是对的？」

## 习惯 2：给约束和上下文

约束是「不要做什么、必须遵守什么」，上下文是「它不知道但需要知道的背景」。智能体能读你的文件，但读不到你的脑子。

差的说法：

```text
加一个计数功能
```

好的说法：

```text
在 @app.js 里加一个「今日完成番茄数」的计数，显示在 @index.html 的倒计时下方。
约束：
- 继续只用原生 JS，不引入任何库；
- 数字存在浏览器的 localStorage 里，刷新页面不丢；
- 每天零点之后重新从 0 开始；
- 不要改动现有计时逻辑。
```

几个技巧：

- 在 Claude Code 里输入 `@` 加文件名，可以直接把那个文件放进对话，省得它去找；
- 有截图（报错、设计稿）直接拖进终端窗口，一图胜千言；
- 报错信息要**原文**贴，不要转述成「好像是数据的问题」；
- 经常重复的约束（比如「所有注释用中文」「不要引入新依赖」），别每次都说，写进项目的说明文件 CLAUDE.md，它每次启动都会读。具体怎么写，见[CLAUDE.md 与记忆](/learn/claude-code/claude-md/)一课。

## 习惯 3：先计划，后动手

上一课你已经试过了。这里补充**什么时候该计划，什么时候别计划**。

官方的最佳实践文档给了一个很实用的判断：**如果你能用一句话描述这次改动的差异，就别折腾计划，直接让它做。** 改错别字、重命名一个变量、加一行日志，直接说。

需要先计划的场景：

- 改动会涉及多个文件；
- 你对做法没把握（该用什么方案）；
- 你不熟悉它要动的那部分代码。

差的说法：

```text
给我的网站加上用户登录
```

好的说法：

```text
我想给网站加用户登录。先不要写代码，请先：
1. 读一下现有的项目结构；
2. 列出你推荐的 2 种做法，各自的优缺点和对项目的改动范围；
3. 推荐一种，并说明需要我提供什么信息。
等我选定后再开始。
```

实操上，按 `Shift + Tab` 切换到计划模式（状态栏显示 plan mode），它只读不改，直到你批准计划。

## 习惯 4：小步迭代

一次交给它一个大任务，出错的位置就藏在大量改动里，你很难审阅，也很难回退。**把任务拆成每一步都能独立验证的小块**，每块做完检查、保存，再做下一块。

差的说法：

```text
给我做一个带用户系统、文章发布、评论和后台管理的博客
```

好的说法：

```text
我们分步做一个博客。第一步：只做首页，显示三篇写死在代码里的示例文章标题和摘要。
不要做登录、评论、数据库。做完我在浏览器里看一眼，没问题再说下一步。
```

小步迭代有个附加好处：当你发现它走偏时，成本很低。官方建议**尽早纠偏**：看到它开始往错误方向走，立刻按 `Esc` 打断，保留已做的工作再改口。

还有一条经验规则：**如果同一个问题你已经纠正了两次还没改对，别继续在这段对话里修补。** 输入 `/clear` 清空对话，把你学到的教训写进一条更具体的新提示词，重新开始。对话里堆满失败的尝试，反而会干扰它。

## 习惯 5：让它先读，再改

智能体最危险的状态是「凭印象写代码」。它没读你的文件就动手，会重复造轮子、风格不一致，甚至覆盖你已有的东西。

差的说法：

```text
给番茄钟加一个提示音
```

好的说法：

```text
给番茄钟加提示音。动手前先读 @app.js，告诉我现在的计时结束时在哪里切换阶段，
以及项目里是否已经有任何声音相关的代码。然后说明你准备把提示音加在哪个函数里，
等我确认再改。
```

「先读再改」还有一个用法：**让它参照现有的写法。** 比如「看一下现有按钮是怎么写的，新加的按钮保持同样的风格」。这能让新增内容和旧代码长得一致，减少你后续整理的工作。

如果它根本不需要读文件（比如只是问概念），可以反过来用：「不要读任何文件，只凭你的知识回答」，省时间。

## 习惯 6：要求它验证

这是六个习惯里**最重要的一个**。官方最佳实践里的说法很直接：给它一个可以运行的检查，是「你得盯着看」和「你可以放手」的区别。没有检查，它判断完成的唯一依据就是「看起来差不多」，你就成了那个验证环节。

差的说法：

```text
修复倒计时显示错误的问题
```

好的说法：

```text
倒计时在 1 分钟以内会显示成 0:5 而不是 00:05。请：
1. 先复现这个问题，说明是哪里导致的；
2. 修复；
3. 验证修复结果：把格式化函数在这些输入下的输出列给我看，
   59 秒、60 秒、61 秒、0 秒、1500 秒，预期分别是 00:59、01:00、01:01、00:00、25:00；
4. 展示验证的证据（运行输出），不要只说「已修复」。
```

验证的形式因任务而异：

| 任务类型 | 可以让它做的验证 |
|---|---|
| 纯逻辑（计算、格式化） | 写几个测试用例并运行，列出输入和输出 |
| 页面改动 | 说明在浏览器里点哪些地方、应该看到什么；有条件的话截图对比 |
| 修 bug | 先复现，再修，再证明不再复现 |
| 重构 | 改前改后跑同一组测试，结果一致 |

养成一个习惯：**让它交出证据，而不是结论。** 看测试输出比重新检查一遍快得多。如果你无法验证，那就先别发布。

## 六个习惯，一个万能骨架

把它们压缩成一个可复用的模板：

**万能骨架：目标、约束、计划、验证**

```text
目标：（一句话说清要达成什么，以及现在哪里不对）

背景：（它需要知道的上下文，相关文件用 @ 引用，报错贴原文）

约束：
- （不能做什么，例如不引入新依赖、不改某个文件）
- （必须遵守什么，例如沿用现有风格）

做法：先读相关文件并告诉我你的理解；如果改动涉及多个文件，先给计划等我确认；只做这一小步，不要顺手扩展其他功能。

验收：（怎样算完成，可以检查的具体标准）
完成后请运行验证，并把验证的输出或结果展示给我。
```

不是每次都要把所有格子填满。小改动三四句话就够；大改动才需要把骨架填完整。**判断标准是：如果这件事交给一位新同事，没有这些信息他能做对吗？**

## 常见的沟通误区

- **道歉式提示**：「不好意思麻烦你帮我看一下……」。不需要客套，直接说事；
- **一次塞三件不相干的事**：对话里的上下文是有限的，互不相干的任务混在一起会互相干扰。官方建议在无关任务之间用 `/clear` 重置；
- **把「不要」说得含糊**：「别搞太复杂」没有信息量，换成「不要引入新依赖，总共不超过 150 行」；
- **盲目全盘接受**：它说完成了，你就默认完成了。回到习惯 6；
- **长期依赖口头约定**：反复提醒同一条规则，说明它该被写进 CLAUDE.md，或做成权限设置。后面的[权限管理](/learn/claude-code/permissions/)与[上下文管理](/learn/claude-code/context/)两课会教你。

> 小测：下面哪条提示词最符合「说目标和验收标准」？

> 小测：你已经让智能体修同一个 bug 两次，每次都没有修对，对话已经很长了。最推荐的做法是？

## 动手试一试

拿上一课的番茄钟练习，每个习惯做一次：

- [ ] 用「现状、目标、验收」三要素，写一条让番茄钟按钮在手机上更好点的提示词并执行
- [ ] 用 @ 引用文件的方式，给番茄钟加一个小功能，并写明至少两条约束
- [ ] 找一个需要改多个文件的需求，先让它给计划，再批准动手
- [ ] 把一个大想法拆成三个小步，每步做完都在浏览器里验收
- [ ] 让它在改动前先读文件并复述现状，观察它的复述和你的认知有没有差异
- [ ] 在一次修改后要求它展示验证的证据，而不是只说完成了
- [ ] 把「万能骨架」存到你的笔记里，以后按需要裁剪
