# 沟通规范:一次性讲清楚 vs 多轮小修改
# 核心问题
很多用户习惯"聊天式"地和 Claude/ChatGPT 说话:
用户:帮我写个登录组件
Claude/ChatGPT :[写了一个]
用户:改成用 TypeScript
Claude/ChatGPT :[改了]
用户:再加个邮箱验证
Claude/ChatGPT :[加了]
用户:还要 loading 状态
Claude/ChatGPT :[加了]
用户:其实我想要 Google OAuth
Claude/ChatGPT :[全部重写]
用户:对了,还要支持记住密码
...
每一条消息都会重新发一遍完整历史 —— 上面的对话可能消耗 10 倍于实际工作量的 token。
# 正确做法:一次性把需求说全
用户:帮我写一个登录组件,要求:
- 使用 TypeScript + React 18
- 走 Google OAuth(不要自建邮箱密码流程)
- 包含 loading 状态、错误提示
- 有"记住登录"功能(localStorage 存 refresh token)
- 样式用 Tailwind,匹配现有 design system
- 组件名 LoginForm,放在 src/components/auth/
Claude/ChatGPT 直接出一版完整的 → 你反馈 1-2 处小问题 → 完事。
token 节省:一次性讲清楚 vs 10 轮小修改,后者多花 3-5 倍 token,还多花 3-5 倍时间。
# 需求描述的黄金模板
每次发需求,确保这 5 要素都有:
# 1. 背景(Context)
“我在开发一个 SaaS dashboard,用 Nuxt 4 + PostgreSQL”
让 Claude/ChatGPT 知道项目类型,避免它假设错误(比如给你 Next.js 代码)。
# 2. 目标(Goal)
“想加一个 admin 页面列出所有用户”
明确结果,不要说"加点功能"这种模糊的。
# 3. 约束(Constraints)
"- 必须复用现有的
<AdminLayout>组件
- 不要引入新的 state 管理库
- 分页每页 50 条"
让 Claude 不要自作主张引入你不想要的技术。
# 4. 期望交付物(Deliverable)
“输出:文件
app/pages/admin/users.vue,带搜索框和分页”
明确要几个文件、文件路径、功能点。
# 5. 已知坑(Gotchas)
“注意:项目用的是 PostgreSQL 的 jsonb 字段存 user metadata,查询时用
->>取字段”
提前告诉 Claude 项目特殊约定,避免返工。
# 反面例子对照
❌ 不好:
“加个搜索”
Claude 不知道搜什么、搜哪张表、UI 长什么样、要不要分页、要不要实时搜索。它会猜,猜错的概率 80%。
✅ 好:
“在 admin/users 页面顶部加一个搜索框,搜 email 和 username 字段(后端做 ILIKE 模糊匹配),防抖 300ms,支持清空。搜索期间禁用翻页按钮。搜 0 结果时显示"无匹配用户”。"
Claude/ChatGPT 一次到位。
# 打字太累怎么办
不要因为懒而用短消息浪费 token。几个技巧:
- 用 markdown 格式化:要点用 bullet list,让 Claude/ChatGPT 看得清楚
- Voice-to-text:Mac 的听写、iOS 的语音输入、ChatGPT 手机 app 转写都比打字快
- 先在 editor 写完再粘贴:比在 Claude/ChatGPT 输入框里边想边打更有条理
- 用代码块复制现有文件:
这是现在的登录组件: [贴代码] 帮我改成...
# 真实数据对比
一个典型场景:写一个带表单验证的注册页面。
| 方式 | 对话轮数 | 总 token | 总时间 |
|---|---|---|---|
| 一次性讲清楚 | 2-3 轮(需求 → 代码 → 微调) | ~30K | 10 分钟 |
| 聊天式碎片化 | 15-20 轮 | ~150K | 45 分钟 |
5 倍 token、4.5 倍时间。