💬写在前面
上一期我们完成了 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()
请:
- 分析错误原因
- 提供修复方案
- 解释为什么会出现这个错误"
**效果展示**:
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
预防建议
- 使用 IDE 的静态分析功能(如 Pylance、Pyright)
- 启用 Python 的
-u参数进行未定义变量检查 - 编写单元测试捕获此类错误
---
## 🔧 三、进阶提示词技巧
### 技巧一:指定编程语言和框架
❌ 模糊写法:
"写一个 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 写一个深拷贝函数,要求:
【功能要求】
- 支持嵌套对象(任意层级深度)
- 处理循环引用(防止无限递归)
- 保持原始类型(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:
好的!请提供以下信息:
-
问题现象
- 所有接口都慢,还是特定接口?
- 慢到什么程度?(100ms / 1s / 10s?)
- 什么时候开始变慢的?
-
环境信息
- Node.js 版本
- 使用的框架(Express / Fastify / Koa)
- 是否有数据库?什么数据库?
-
可能的原因(请检查)
- 数据库查询慢(缺少索引?N+1 查询?)
- 第三方 API 调用延迟
- 内存泄漏
- CPU 密集型计算
- 网络问题
-
请提供
- 关键代码(路由处理函数)
- 错误日志(如果有)
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 开始深度分析...]
⚙️ 七、模型选择与提示词效果
不同模型的能力对比
| 能力 | Haiku | Sonnet | Opus | Opus 4.6 |
|---|---|---|---|---|
| 简单代码生成 | ⚡ 快速 | ✅ 正常 | ✅ 正常 | ✅ 正常 |
| 复杂推理 | ❌ 能力不足 | ✅ 可以 | ✅✅ 深度 | ✅✅✅ |
| 代码优化 | ✅ 基本正确 | ✅✅ 更好 | ✅✅✅ 最佳 | ✅✅✅ |
| 超长上下文 | ❌ 不支持 | ❌ 有限 | ✅ 有限 | ✅✅✅ 1M |
| 价格 | 免费 | 中等 | 较高 | 较高 |
模型选择建议
| 任务类型 | 推荐模型 | 原因 |
|---|---|---|
| 简单代码生成 | Haiku / Sonnet | 快速且足够 |
| 代码审查 | Sonnet / Opus | 需要一定推理 |
| 复杂架构设计 | Opus 4.6 | 需要深度分析 |
| 超大代码库分析 | Opus 4.6 | 1M token 上下文 |
| 学习解释概念 | Sonnet / Opus | 需要详细解释 |
Opus 4.6 新能力
Claude Opus 4.6 支持 100 万 token 超长上下文,适合:
- 分析整个代码仓库
- 处理大型文档
- 复杂的多文件重构
- 长期项目的全局规划
⚠️ 八、常见问题与解决
Q1:提示词越长越好吗?
Answer
不是! 提示词要简洁但完整,包含必要信息即可。
❌ 过长提示词的问题:
- AI 可能忽略部分信息
- 增加理解难度
- 消耗更多 token
✅ 好的提示词:
- 包含必要信息(目标 + 要求 + 上下文)
- 结构清晰(分点列举)
- 不过度解释常识
Q2:AI 理解错了我的意思怎么办?
Answer
- 明确指出具体问题:"不是这样的,我是说..."
- 提供更多上下文:"在 XXX 场景下..."
- 拆分任务:分步骤完成复杂任务
- 压缩上下文:
/compact后重新描述 - 尝试分支:
/branch创建分支尝试不同方案
Q3:可以连续对话吗?
Answer
当然可以! Claude Code 支持上下文连续对话:
- 追问细节
- 让 AI 解释代码
- 提出修改要求
- 继续完善功能
/resume恢复之前的工作
Q4:对话太长变慢了怎么办?
Answer
/compact- 压缩上下文,保留关键信息/clear- 清除对话历史,开始新对话/branch- 创建分支会话
Q5:如何利用新版本特性?
Answer
- 使用
/branch尝试不同的解决方案 - 使用
/plan进行系统规划 - 使用 Opus 4.6 处理超长代码库
- 使用
Shift+Enter输入多行代码 - 使用
/btw快速询问侧边问题
Q6:输出结果不符合预期怎么办?
Answer
- 检查提示词:是否有歧义或遗漏?
- 提供示例:给出期望的输出格式示例
- 指定约束:强调必须满足的条件
- 分步验证:让 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 的新特性,如分支会话、多行输入、远程控制等。
下期预告
第三篇我们将讲解 代码生成与修改,手把手教你如何快速生成高质量代码!
敬请期待!