Claude Code 入门完全指南(二):对话与提示词技巧

0 阅读20分钟

💬写在前面

上一期我们完成了 Claude Code 2.1.79 的安装配置。这一期,让我们来学习如何与 Claude Code 2.1.79 高效对话!好的提示词能让 AI 精准理解你的需求,输出高质量代码。Claude Code 2.1.79 的新特性让对话更加流畅!


🎯 一、为什么提示词很重要?

提示词(Prompt)是你与 AI 沟通的桥梁。 你的提示词越清晰、越具体,AI 就能越准确地理解你的需求,输出你想要的结果。

❌ 错误示范:
"帮我写个代码"

🔍 AI 收到的信息:
- 语言:不明确
- 功能:不明确
- 约束条件:无
- 预期输出:模糊

→ 结果:AI 只能猜测你的意图,输出质量无法保证



✅ 正确示范:
"帮我写一个 Python 实现的 BMI 计算器,需要包含:
1. 用户输入身高体重(单位:cm/kg)
2. 计算公式:BMI = 体重(kg) / 身高(m)²
3. 结果判定(偏瘦:BMI < 18.5 / 正常:18.5 ≤ BMI < 24 / 偏胖:24 ≤ BMI < 28 / 肥胖:BMI ≥ 28)
4. 错误处理(输入非数字、身高为0等异常情况)
5. 使用函数封装,支持命令行交互"

📊 AI 收到的信息:
- 语言:Python
- 功能:BMI 计算器
- 输入输出:明确
- 判定标准:中国 BMI 标准
- 异常处理:具体列出
- 代码风格:函数封装、命令行交互

→ 结果:精准输出,完全符合需求

好提示词的三个核心要素

要素说明示例
🎯 目标明确说明你要做什么,包含任务类型和期望结果"写一个用户登录验证函数"
📋 具体要求包含详细的功能规格、参数、输出格式"使用 bcrypt 加密密码,密码强度至少 8 位,返回 JWT token"
🔧 上下文提供相关背景信息,如技术栈、现有代码、约束条件"这是 Node.js + Express 项目,已有 User 模型"

📝 二、基础提示词模式

1️⃣ 简单任务型

适用场景:单纯的代码生成任务,需求明确简单,不需要额外解释

"写一个 Hello World 程序""创建一个 CSS 按钮样式""写一个冒泡排序算法""用 Python 读取 CSV 文件并打印前 10 行"

使用技巧

对于简单明确的任务,直接描述需求即可,不需要过多解释。AI 能够理解常见的编程概念。


2️⃣ 详细规格型

适用场景:复杂功能开发,需要详细规格说明,确保输出完全符合预期

"用 Python 写一个文件加密工具,要求:

【功能需求】
- 使用 AES-256-GCM 加密算法
- 支持命令行参数:-e 加密文件,-d 解密文件
- 输入:文件路径、密码(至少 8 位)
- 输出:加密生成 .enc 文件,解密还原原文件

【错误处理】
- 文件不存在:提示 "文件不存在"
- 密码强度不足:提示 "密码强度不足,需要至少 8 位"
- 加密/解密失败:提示具体错误信息

【代码规范】
- 使用 argparse 解析命令行参数
- 使用 type hints 类型注解
- 包含完整的 docstring 文档
- 遵循 PEP 8 规范
"

效果展示

【AI 输出】

#!/usr/bin/env python3
"""
文件加密工具
支持 AES-256-GCM 加密和解密
"""

import argparse
import os
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
from cryptography.hazmat.backends import default_backend

def derive_key(password: str) -> bytes:
    """从密码派生 256 位密钥"""
    ...

def encrypt_file(file_path: str, password: str) -> str:
    """加密文件"""
    ...

def decrypt_file(file_path: str, password: str) -> str:
    """解密文件"""
    ...

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="文件加密工具")
    parser.add_argument("-e", "--encrypt", help="加密文件")
    parser.add_argument("-d", "--decrypt", help="解密文件")
    parser.add_argument("-p", "--password", required=True, help="密码")
    args = parser.parse_args()
    ...

3️⃣ 问答解释型

适用场景:学习知识、理解概念、解释代码

"什么是 Python 的装饰器?请举例说明""解释一下 React 的 useEffect 生命周期,附带示例代码""JavaScript 的 var、let、const 有什么区别?分别在什么场景使用?""这段代码在做什么?请逐行解释"

效果展示

User: 什么是 Python 的装饰器?请举例说明

Claude Code:
# Python 装饰器详解

## 基本概念
装饰器是一个接受函数作为输入并返回新函数的函数。它用于在不修改原函数的情况下,增强其功能。

## 简单示例

```python
# 定义一个装饰器
def log_calls(func):
    def wrapper(*args, **kwargs):
        print(f"调用函数: {func.__name__}")
        result = func(*args, **kwargs)
        print(f"函数 {func.__name__} 执行完成")
        return result
    return wrapper

# 使用装饰器
@log_calls
def greet(name):
    return f"你好,{name}!"

# 调用
greet("小明")

输出:

调用函数: greet
函数 greet 执行完成

带参数的装饰器

def retry(max_attempts=3, delay=1):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for attempt in range(max_attempts):
                try:
                    return func(*args, **kwargs)
                except Exception as e:
                    if attempt == max_attempts - 1:
                        raise
                    print(f"重试 {attempt + 1}/{max_attempts}")
            return wrapper
        return decorator
    return decorator

@retry(max_attempts=5, delay=2)
def fetch_data(url):
    ...

---

### 4️⃣ 调试排错型

**适用场景**:Bug 排查、错误修复、性能问题诊断

❌ 低效提问:
"我的代码报错了,帮我看看"

✅ 高效提问:
"这个 Python 代码运行报错:NameError: name 'x' is not defined

代码:

def calculate():
    result = x + 1
    return result

calculate()

请:

  1. 分析错误原因
  2. 提供修复方案
  3. 解释为什么会出现这个错误"

**效果展示**

Claude Code:

错误分析

问题原因

NameError: name 'x' is not defined 表示代码中引用了一个未定义的变量 x

calculate() 函数中,代码尝试使用变量 x,但 x 既不是函数参数,也没有在函数内部或全局作用域中定义。

修复方案

方案一:添加参数

def calculate(x):
    result = x + 1
    return result

calculate(5)  # 输出: 6

方案二:定义全局变量

x = 10

def calculate():
    result = x + 1
    return result

calculate()  # 输出: 11

预防建议

  1. 使用 IDE 的静态分析功能(如 Pylance、Pyright)
  2. 启用 Python 的 -u 参数进行未定义变量检查
  3. 编写单元测试捕获此类错误

---

## 🔧 三、进阶提示词技巧

### 技巧一:指定编程语言和框架

❌ 模糊写法:
"写一个 Web 服务器"

✅ 明确写法:
"用 Node.js + Express 写一个 REST API 服务器"
"用 Flask 写一个简单的后端服务"
"用 Go + Gin 框架写一个 HTTP 服务"


> [!tip] 为什么重要?
> 不同语言和框架有截然不同的语法、库和最佳实践。明确指定可以让 AI 选择最适合的实现方式。

---

### 技巧二:指定代码风格和规范

"用 Python 写一个函数,要求:

【代码规范】

  • 使用类型注解(Type Hints)标注参数和返回值类型
  • 遵循 PEP 8 规范(使用 Black 格式化)
  • 包含 Google 风格的 docstring 文档
  • 使用 Python 3.10+ 现代语法(match-case、 walrus operator 等)

【示例风格】

def process_data(data: list[int]) -> dict[str, int]:
    '''处理数据并返回统计结果。
    
    Args:
        data: 输入的整数列表
        
    Returns:
        包含统计信息的字典
    '''
    return {"sum": sum(data), "count": len(data)}
```"

技巧三:提供参考代码风格

"参考以下代码风格,帮我写一个新的工具类:

【现有代码风格】
```python
class FileHandler:
    '''文件处理工具类'''
    
    def __init__(self, path: str):
        self.path = Path(path)
        
    def read(self) -> str:
        '''读取文件内容'''
        if not self.path.exists():
            raise FileNotFoundError(f"文件不存在: {self.path}")
        return self.path.read_text(encoding='utf-8')
        
    def write(self, content: str) -> None:
        '''写入文件内容'''
        self.path.parent.mkdir(parents=True, exist_ok=True)
        self.path.write_text(content, encoding='utf-8')

【要求】

  • 保持相同的命名规范(驼峰命名)
  • 使用相同的错误处理方式(抛出具体异常)
  • 保持相同的文档风格
  • 添加类似的验证逻辑

请帮我写一个 ConfigLoader 工具类"


---

### 技巧四:分步骤请求

第一步:
"帮我设计一个用户数据结构,包含:用户名、邮箱、密码、注册时间、最后登录时间"

第二步:
"基于这个数据结构,写一个用户注册函数,需要:

  • 验证邮箱格式
  • 验证密码强度(至少 8 位,包含数字和字母)
  • 密码使用 bcrypt 加密存储
  • 返回用户 ID"

第三步:
"添加登录验证功能:

  • 验证邮箱和密码
  • 密码正确则返回 JWT token
  • 记录最后登录时间
  • 连续失败 5 次锁定账户 30 分钟"

> [!warning] 注意
> - 避免一次性提出过多要求
> - 每一步确认后再进行下一步
> - 可以用 `/branch` 创建分支尝试不同方案

---

### 技巧五:使用约束条件

"用 JavaScript 写一个深拷贝函数,要求:

【功能要求】

  1. 支持嵌套对象(任意层级深度)
  2. 处理循环引用(防止无限递归)
  3. 保持原始类型(Date、RegExp、Map、Set 等)

【约束条件】

  • ❌ 不使用第三方库(如 lodash)
  • ✅ 使用 ES6+ 语法
  • ✅ 包含 JSDoc 文档
  • ✅ 时间复杂度 O(n)

【测试用例】

const obj = {
  date: new Date(),
  regex: /test/i,
  map: new Map([['key', 'value']]),
  nested: {
    a: 1,
    b: {
      c: 2
    }
  }
};
// 测试深拷贝

"

→ 输出完整函数 + 测试验证


---

### 技巧六:明确输出格式

"用 Python 写一个数据处理脚本,要求:

【输入】

  • 读取 data/input.csv 文件
  • CSV 包含列:name, age, city, salary

【输出】

  • 生成 data/output.json 文件
  • JSON 格式:
{
  "summary": {
    "total_people": 100,
    "average_salary": 50000,
    "cities": ["北京", "上海", "深圳"]
  },
  "people": [
    {"name": "张三", "age": 30, "city": "北京", "salary": 60000}
  ]
}

【处理逻辑】

  • 计算平均工资
  • 提取所有城市列表(去重)
  • 按工资从高到低排序
    "

---

## 📖 四、经典提示词模板库

### 模板一:代码生成

````markdown
"用 [语言] 写一个 [功能描述],要求:

【功能列表】
1. [具体功能点1]
2. [具体功能点2]
3. [具体功能点3]

【约束条件】
- [约束条件1]
- [约束条件2]

【可选】参考现有代码:

[粘贴参考代码]

"

完整示例:

"用 JavaScript 写一个深拷贝函数,要求:

【功能列表】
1. 支持嵌套对象(任意层级深度)
2. 处理循环引用(防止无限递归)
3. 保持原始类型(Date、RegExp、Map、Set、Error 等)
4. 处理函数(可选复制或保持引用)

【约束条件】
- 不使用第三方库(如 lodash、rfdc)
- 使用 ES6+ 语法
- 包含 JSDoc 类型注解
- 时间复杂度 O(n)

【测试用例】
```javascript
const original = {
  date: new Date('2024-01-01'),
  regex: /test/gi,
  map: new Map([['key', {nested: 'value'}]]),
  set: new Set([1, 2, 3]),
  nested: {
    a: 1,
    b: {
      c: [1, 2, {d: 4}]
    }
  },
  circular: {}
};
original.circular = original; // 循环引用

// 测试
const cloned = deepClone(original);
console.log(cloned);

"


---

### 模板二:代码审查

````markdown
"请审查以下代码:

【代码】

[粘贴代码]


【审查要求】
1. 性能问题分析
2. 安全风险检查
3. 代码规范问题
4. 潜在 Bug 预警
5. 改进建议(按优先级排序)

【可选】我关注的重点:
- [重点1]
- [重点2]
"

效果展示:

Claude Code:
# 代码审查报告

## 1. 性能问题 ⚠️

| 问题 | 严重程度 | 建议 |
|:---|:---:|:---|
| 循环内创建对象 | 中 | 移到循环外 |
| 未使用索引缓存 | 低 | 考虑使用 Map |

## 2. 安全风险 🔴

| 问题 | 位置 | 风险 |
|:---|:---|:---|
| SQL 注入风险 | 第 23 行 ||
| XSS 风险 | 第 45 行 ||

## 3. 代码规范 📝

- [ ] 第 12 行:变量命名不规范
- [ ] 第 34 行:缺少 error handling

## 4. 改进建议 ⭐

1. **高优先级**:修复 SQL 注入
2. **中优先级**:添加输入验证
3. **低优先级**:优化性能

模板三:重构优化

"请重构以下代码,使其:
1. 更易读(清晰的命名和结构)
2. 更高效(优化性能瓶颈)
3. 更安全(修复安全漏洞)
4. 符合最佳实践

【原始代码】
```
[粘贴代码]
```

【重构要求】
- 保持原有功能不变
- 尽量减少代码行数
- 添加必要的注释
- 如果有测试用例,请一并提供
"

模板四:Bug 修复

"代码报错:【错误信息】

【代码】
```
[粘贴代码]
```

【请执行】
1. 分析错误原因
2. 提供修复方案(首选方案 + 备选方案)
3. 解释为什么会出现这个错误
4. 说明如何避免类似问题

【可选】错误截图或日志:
[粘贴日志]
"

模板五:技术方案设计

"设计一个 [系统/功能],要求:

【需求描述】
- [需求1]
- [需求2]
- [需求3]

【技术约束】
- 技术栈:[如 Node.js + PostgreSQL + Redis]
- 性能要求:[如 QPS > 1000, 延迟 < 100ms]
- 扩展要求:[如支持水平扩展]

【请提供】
1. 系统架构图(文字描述)
2. 核心数据结构设计
3. API 接口设计
4. 关键实现逻辑
5. 潜在风险和应对方案
"

🎓 五、实战对话示例

场景一:创建一个 TODO 应用

对话 1:需求确认
User: 我想做一个 TODO 应用

Claude Code: 
好的!为了帮你更好地设计,我需要了解:

1. **前端框架**:你希望使用什么框架?
   - React / Vue / Svelte / 原生 HTML+JS / 其他

2. **数据存储**   - 本地存储(localStorage)
   - 后端 API(需要自己提供)
   - 文件存储(JSON)

3. **核心功能**(可多选):
   - ✅ 添加任务
   - ✅ 标记完成/未完成
   - ✅ 删除任务
   - ⬜ 编辑任务
   - ⬜ 分类/标签
   - ⬜ 截止日期
   - ⬜ 优先级
   - ⬜ 搜索/筛选

4. **部署方式**   - 本地运行
   - 部署到 Vercel / Netlify / 其他

5. **特殊需求**   - 暗色模式?
   - 响应式设计?
   - 动画效果?

请告诉我你的选择,或者直接说"帮我用 React + localStorage 做一个简单的 TODO 应用",我可以直接开始!
对话 2:精准请求
User: 用 React + localStorage 做一个简单的 TODO 应用,需要:
- 添加任务
- 标记完成/未完成
- 删除任务
- 页面刷新后数据保留
- 界面简洁美观

Claude Code: 
好的!我来为你创建一个 React TODO 应用。

【技术栈】
- React 18 + Hooks
- localStorage 持久化
- CSS Modules 样式

[开始生成代码...]

✅ 已创建文件:
- src/App.jsx          # 主组件(任务列表 + 添加功能)
- src/components/TodoItem.jsx  # 任务项组件
- src/App.css          # 样式文件

【项目结构】

src/
├── App.jsx # 主组件
├── components/
│ └── TodoItem.jsx # 任务项
├── App.css # 样式
└── index.jsx # 入口文件


【功能说明】

1. **添加任务**
   - 输入框输入任务内容
   - 按 Enter 或点击按钮添加
   - 空内容不允许添加

2. **完成任务**
   - 点击任务项切换完成状态
   - 完成的任务显示删除线

3. **删除任务**
   - 点击删除按钮移除任务

4. **数据持久化**
   - 自动保存到 localStorage
   - 刷新页面后自动恢复

【运行方式】
```bash
npm install
npm run dev

【界面预览】

┌─────────────────────────────────┐
│  📝 My TODO List                │
├─────────────────────────────────┤
│  [输入任务...        ] [添加]   │
├─────────────────────────────────┤
│  ☐ 学习 React                   │
│  ☑️ 完成作业          [🗑️]    │
│  ☐ 锻炼身体            [🗑️]    │
└─────────────────────────────────┘

---

### 场景二:调试复杂问题

User: 我的 Node.js API 服务响应很慢,请帮我分析

Claude Code:
好的!请提供以下信息:

  1. 问题现象

    • 所有接口都慢,还是特定接口?
    • 慢到什么程度?(100ms / 1s / 10s?)
    • 什么时候开始变慢的?
  2. 环境信息

    • Node.js 版本
    • 使用的框架(Express / Fastify / Koa)
    • 是否有数据库?什么数据库?
  3. 可能的原因(请检查)

    • 数据库查询慢(缺少索引?N+1 查询?)
    • 第三方 API 调用延迟
    • 内存泄漏
    • CPU 密集型计算
    • 网络问题
  4. 请提供

    • 关键代码(路由处理函数)
    • 错误日志(如果有)
    • top 或任务管理器显示的 CPU/内存使用情况

请告诉我更多信息,我可以帮你定位问题!


---

### 场景三:代码审查

User: 请帮我审查以下代码:

// 用户登录
app.post('/login', async (req, res) => {
  const { email, password } = req.body;
  const user = await User.findOne({ email });
  if (!user) {
    return res.json({ success: false });
  }
  if (user.password === password) {
    return res.json({ success: true, token: 'xxx' });
  }
  return res.json({ success: false });
});

Claude Code:

🔴 代码安全审查报告

严重问题(必须修复)

1. 密码明文存储和比对 🔴

位置:第 7 行
问题

  • 密码以明文存储(应该 bcrypt 哈希存储)
  • 使用 === 明文比对密码

风险:数据库泄露后所有用户密码暴露

修复方案

const bcrypt = require('bcrypt');
const saltRounds = 10;

// 登录时
const match = await bcrypt.compare(password, user.password);
if (match) {
  // 登录成功
}

2. SQL/NoSQL 注入风险 🟠

位置:第 4 行
问题User.findOne() 直接使用用户输入

风险:可能通过特殊的 email 输入绕过验证

修复方案

// 使用参数化查询或 ORM 的预编译语句
// Mongoose 默认已经防止了 NoSQL 注入,但建议显式验证
const email = validator.normalizeEmail(req.body.email);
if (!validator.isEmail(email)) {
  return res.status(400).json({ error: 'Invalid email' });
}

3. 缺乏速率限制 🟠

位置:整个路由
问题:没有限制登录尝试次数

风险:暴力破解攻击

修复方案

const rateLimit = require('express-rate-limit');
const loginLimiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 分钟
  max: 5 // 最多 5 次尝试
});
app.post('/login', loginLimiter, async (req, res) => {
  // ...
});

4. 缺乏错误处理 🟡

位置:数据库查询
问题:如果数据库出错,会返回 {success: false} 而不是 500 错误

修复方案

try {
  const user = await User.findOne({ email });
  // ...
} catch (error) {
  console.error('Login error:', error);
  return res.status(500).json({ error: 'Internal server error' });
}

改进建议

优先级建议原因
🔴 高使用 bcrypt 加密安全性
🟠 中添加速率限制防暴力破解
🟠 中完善错误处理用户体验
🟡 低添加登录日志审计追踪
🟡 低JWT 过期时间安全性

总结

这段代码存在严重的安全问题,不建议在生产环境使用。请优先修复密码存储和速率限制问题。


---

## 🎯 六、Claude Code 2.1.79 对话内命令详解

### 常用命令一览表

| 命令 | 功能 | 示例 |
|:---|:---|:---|
| `/model <model>` | 切换使用的模型 | `/model opus-4-6` |
| `/help` | 显示帮助信息 | `/help` |
| `/quit` | 退出当前会话 | `/quit` |
| `/clear` | 清除对话历史 | `/clear` |
| `/compact` | 压缩上下文,释放空间 | `/compact` |
| `/context` | 查看当前上下文状态 | `/context` |
| `/resume` | 恢复之前的工作 | `/resume` |
| `/effort` | 设置任务努力级别 | `/effort high` |
| `/plan` | 进入计划模式 | `/plan` |
| `/branch` | 创建分支会话 | `/branch` |

### 新增命令(v2.1+)

| 命令 | 功能 | 版本要求 | 示例 |
|:---|:---|:---|:---|
| `/remote-control` | 连接到 claude.ai/code | v2.1.3+ | `/remote-control` |
| `/teleport` | 远程会话 | v2.1.3+ | `/teleport session-id` |
| `/btw` | 侧边问题回答 | v2.1.78+ | `/btw 顺便问下...` |
| `/extra-usage` | 显示额外使用量 | v2.1.50+ | `/extra-usage` |

### 努力级别设置

Claude Code 2.1.79 简化了努力级别设置:

/effort low # ○ 快速完成任务,适合简单重复任务
/effort medium # ◐ 平衡速度和深度
/effort high # ● 深入分析(默认),适合复杂问题
/effort auto # - 重置为默认


| 级别 | 符号 | 适用场景 | 响应特点 |
|:---|:---|:---|:---|
| `low` | ○ | 简单任务、格式化、翻译 | 快速响应,减少思考 |
| `medium` || 一般开发任务 | 平衡速度和深度 |
| `high` | ● | 复杂问题、架构设计 | 深入分析(默认) |
| `auto` | - | 重置为默认设置 | 恢复正常 |

> [!tip] 使用技巧
> - 输入 `/` 开头即可触发命令补全
> - 复杂问题用 `/model opus-4-6` + `/effort high` 组合
> - 简单任务用 `/effort low` 节省时间和成本

### 模型切换

```bash
$ claude

> /model opus-4-6
✓ 已切换到 Opus 4.6 模型(支持 1M token 上下文)

> /effort high

> 分析这个 50 万行的代码库
[Opus 4.6 开始深度分析...]

⚙️ 七、模型选择与提示词效果

不同模型的能力对比

能力HaikuSonnetOpusOpus 4.6
简单代码生成⚡ 快速✅ 正常✅ 正常✅ 正常
复杂推理❌ 能力不足✅ 可以✅✅ 深度✅✅✅
代码优化✅ 基本正确✅✅ 更好✅✅✅ 最佳✅✅✅
超长上下文❌ 不支持❌ 有限✅ 有限✅✅✅ 1M
价格免费中等较高较高

模型选择建议

任务类型推荐模型原因
简单代码生成Haiku / Sonnet快速且足够
代码审查Sonnet / Opus需要一定推理
复杂架构设计Opus 4.6需要深度分析
超大代码库分析Opus 4.61M token 上下文
学习解释概念Sonnet / Opus需要详细解释

Opus 4.6 新能力

Claude Opus 4.6 支持 100 万 token 超长上下文,适合:

  • 分析整个代码仓库
  • 处理大型文档
  • 复杂的多文件重构
  • 长期项目的全局规划

⚠️ 八、常见问题与解决

Q1:提示词越长越好吗?

Answer

不是! 提示词要简洁但完整,包含必要信息即可。

❌ 过长提示词的问题

  • AI 可能忽略部分信息
  • 增加理解难度
  • 消耗更多 token

✅ 好的提示词

  • 包含必要信息(目标 + 要求 + 上下文)
  • 结构清晰(分点列举)
  • 不过度解释常识

Q2:AI 理解错了我的意思怎么办?

Answer

  1. 明确指出具体问题:"不是这样的,我是说..."
  2. 提供更多上下文:"在 XXX 场景下..."
  3. 拆分任务:分步骤完成复杂任务
  4. 压缩上下文/compact 后重新描述
  5. 尝试分支/branch 创建分支尝试不同方案

Q3:可以连续对话吗?

Answer

当然可以! Claude Code 支持上下文连续对话:

  • 追问细节
  • 让 AI 解释代码
  • 提出修改要求
  • 继续完善功能
  • /resume 恢复之前的工作

Q4:对话太长变慢了怎么办?

Answer

  • /compact - 压缩上下文,保留关键信息
  • /clear - 清除对话历史,开始新对话
  • /branch - 创建分支会话

Q5:如何利用新版本特性?

Answer

  • 使用 /branch 尝试不同的解决方案
  • 使用 /plan 进行系统规划
  • 使用 Opus 4.6 处理超长代码库
  • 使用 Shift+Enter 输入多行代码
  • 使用 /btw 快速询问侧边问题

Q6:输出结果不符合预期怎么办?

Answer

  1. 检查提示词:是否有歧义或遗漏?
  2. 提供示例:给出期望的输出格式示例
  3. 指定约束:强调必须满足的条件
  4. 分步验证:让 AI 一步步解释它的方案

📊 九、提示词效果对比

等级提示词示例效果评分
❌ 模糊"写个排序"输出随机,功能不定
⚠️ 一般"写一个排序算法"能工作,但可能不符合需求⭐⭐
✅ 清晰"用 Python 写一个快速排序,要求原地排序、时间复杂度 O(n log n)"精准输出⭐⭐⭐
⭐ 优秀"用 Python 写快速排序,原地排序、O(n log n),包含单元测试和性能对比。参考现有代码风格:..."超出预期⭐⭐⭐⭐⭐

🎯 十、练习作业

动手练习

尝试用今天学的提示词技巧,向 Claude Code 请求以下内容:

1️⃣ 初级练习

"用 Python 写一个计算阶乘的函数,要求:
- 使用递归实现
- 包含类型注解
- 处理 n < 0 和 n = 0 的边界情况
- 包含 docstring 文档"

2️⃣ 中级练习

"用 React 写一个简单的计数器组件,要求:
- 显示当前计数
- +1 和 -1 按钮
- 重置按钮
- 样式简洁美观
- 使用函数组件 + useState"

3️⃣ 高级练习

"用 Node.js + Express 写一个文件上传 API,要求:

【功能】
- 支持单文件上传
- 上传到 ./uploads 目录
- 限制文件大小 10MB
- 限制文件类型(图片和 PDF)
- 返回文件信息(名称、大小、路径)

【约束】
- 使用 multer 中间件
- 统一的错误处理
- 基础类型注解

【测试】
- 用 curl 测试上传功能"

4️⃣ 挑战练习

"帮我设计一个博客系统架构,包括:

1. 技术栈选择(前端 + 后端 + 数据库 + 缓存)
2. 数据库设计(用户、文章、评论、标签)
3. API 接口设计
4. 核心功能流程图(文字描述)
5. 部署方案

请给出详细的架构文档。"

🎉 总结

技巧要点示例
目标明确说清楚要做什么"写一个登录验证函数"
具体要求列出详细规格"使用 bcrypt,返回 JWT"
提供上下文说明技术栈和环境"Node.js + Express 项目"
适当约束指定代码风格和限制"PEP 8 + 类型注解"
分步请求复杂任务拆分做先设计数据结构,再写函数
模型选择根据复杂度选模型复杂问题用 Opus 4.6
命令使用善用内置命令/model/effort/branch

进阶提示

逐渐培养"与 AI 协作"的思维方式,把 AI 当作一个经验丰富的搭档,而不是一个听话的工具。善用 Claude Code 2.1.79 的新特性,如分支会话、多行输入、远程控制等。


下期预告

第三篇我们将讲解 代码生成与修改,手把手教你如何快速生成高质量代码!

敬请期待!