提示词工程(Prompt Engineering)是与 Claude Code 高效协作的核心技能。本文将深入探讨如何编写结构化指令、利用 ultrathink 深度推理模式、识别和避免常见的提示词反模式,并通过大量实战示例展示不同场景下的最佳提示词写法。

Claude Code 提示词工程 — 结构化指令、ultrathink 与反模式

简介

提示词工程(Prompt Engineering)是与 Claude Code 高效协作的核心技能。本文将深入探讨如何编写结构化指令、利用 ultrathink 深度推理模式、识别和避免常见的提示词反模式,并通过大量实战示例展示不同场景下的最佳提示词写法。

在与 AI 编程助手协作的过程中,提示词的质量直接决定了输出的质量。一个精心设计的提示词可以让 Claude Code 产出高质量、可直接使用的代码;而一个模糊的提示词则可能导致 Claude Code 偏离方向,产生不符合预期的结果。这就是为什么提示词工程不仅仅是一个"技巧",而是一项必须系统学习的核心能力。

本文将 CRISPE 框架作为提示词设计的理论基础,结合 Claude Code 特有的 ultrathink 深度推理模式,为你提供一套完整的提示词编写方法论。无论你是想提高代码生成的准确率、优化重构建议的质量,还是构建复杂的自动化工作流,都能在这里找到实用的指导。

目录

一、提示词工程基础原则

1.1 CRISPE 框架

编写 Claude Code 提示词时,推荐使用 CRISPE 框架。这个框架来源于提示词工程的最佳实践,它将一个完整的提示词分解为六个关键要素,确保你不会遗漏任何重要的信息。

CRISPE 框架的优势在于它的系统性——通过逐一考虑每个要素,你可以构建出结构完整、信息充分的提示词。在实际使用中,你不需要每次都明确标注这六个部分,但它们在思维层面帮助你组织提示词的结构。

要素 说明 示例
Capacity 角色设定 "作为资深 Python 架构师"
Request 具体任务 "重构用户认证模块"
Insight 背景信息 "当前使用 session 认证,需要迁移到 JWT"
Statement 输出要求 "提供完整代码,包含类型注解和测试"
Personality 风格偏好 "代码简洁,遵循 PEP 8"
Experiment 约束条件 "不要修改数据库 schema"

1.2 实际应用

bash
# 糟糕的提示词
claude -p "修一下代码"

# 好的提示词(CRISPE 框架)
claude -p "
作为资深 Python 后端工程师,
请重构 src/auth/ 目录下的用户认证模块。

背景:
- 当前使用 Flask-Session 进行认证
- 需要迁移到 JWT token 认证
- 数据库使用 SQLAlchemy

要求:
1. 保留原有 API 接口不变
2. 添加完整的类型注解
3. 包含单元测试
4. 更新相关文档

约束:
- 不要修改数据库 schema
- 不要改变外部 API 行为
- 使用 PyJWT 库
"

1.3 提示词设计原则

  1. 具体明确:避免模糊描述,给出具体的输入和期望输出
  2. 上下文充分:提供足够的背景信息,但不要过度
  3. 约束清晰:明确告诉 Claude 不要做什么
  4. 分步执行:复杂任务拆分为多个步骤
  5. 示例驱动:提供示例输入和期望输出

二、结构化指令框架

2.1 模板格式

markdown
# [任务类型]

## 角色
[设定 Claude 的专业角色]

## 任务
[清晰描述要完成的任务]

## 上下文
[提供必要的背景信息]

## 输入
[描述输入文件或数据]

## 输出要求
[描述期望的输出格式和内容]

## 约束
[列出必须遵守的规则]

## 验收标准
[定义完成的标准]

2.2 实战模板

bash
# 代码审查模板
claude -p "
# 代码审查

## 角色
你是一位有 10 年经验的高级代码审查员,擅长发现潜在的安全漏洞、性能问题和设计缺陷。

## 任务
审查以下代码变更,提供详细的审查意见。

## 上下文
- 项目: FastAPI 用户管理系统
- 语言: Python 3.11
- 变更范围: src/auth/ 目录

## 输出要求
请按以下结构输出:

### 📊 概览
- 变更文件数
- 变更行数
- 风险评估(低/中/高)

### ✅ 优点
- 做得好的地方

### 🔴 问题
按严重程度分类:
- 🔥 阻塞级(必须修复)
- ⚠️ 建议级(应该修复)
- 💡 优化级(可以优化)

### 💡 改进建议
- 具体的改进方案和代码示例

### 📋 检查清单
- [ ] 安全性检查
- [ ] 性能检查
- [ ] 可维护性检查
"

三、ultrathink 深度推理模式

3.1 什么是 ultrathink?

ultrathink 是 Claude Code 的深度推理模式,适用于需要复杂分析、架构设计、算法优化等场景。它会让 Claude 进行更深入的思考,产出更高质量的结果。与普通的提示词不同,ultrathink 模式鼓励 Claude 展示其完整的思考过程——从问题分析到方案评估,再到最终决策。这种"透明推理"不仅让你了解 Claude 是如何得出结论的,还能帮助你发现可能被忽略的关键因素。

需要注意的是,ultrathink 模式会消耗更多的 token 和时间,因此不应该用于所有任务。只有当任务的复杂度超过了模型的"直觉"范围,需要系统性的分析和推理时,才值得启用 ultrathink 模式。

3.2 启用 ultrathink

bash
# 方式一:在提示词中声明
claude -p "
<ultrathink>
请设计一个高并发的用户认证系统架构。
考虑以下方面:
1. 水平扩展能力
2. 故障恢复机制
3. 安全策略
4. 性能优化
</ultrathink>
"

# 方式二:使用系统提示
claude --system-prompt "启用深度推理模式" -p "分析系统瓶颈"

# 方式三:在 CLAUDE.md 中配置
echo "
## Claude Code 行为
- 对于架构设计和复杂分析任务,自动启用深度推理模式
" >> CLAUDE.md

3.3 ultrathink 适用场景

场景 描述 示例
架构设计 系统架构、模块划分 "设计微服务架构"
算法优化 性能瓶颈分析、算法改进 "优化 O(n²) 算法"
安全审计 漏洞扫描、安全策略 "审计认证模块安全性"
复杂重构 大规模代码重构 "将单体拆分为微服务"
技术方案 技术选型、方案对比 "对比 Redis vs Memcached"

3.4 ultrathink 输出示例

text
<思考过程>
1. 首先分析当前架构的瓶颈...
   - 数据库连接池已满
   - 认证服务是单点
   - 缺少缓存层

2. 提出改进方案...
   - 引入 Redis 缓存
   - 认证服务无状态化
   - 添加负载均衡

3. 评估方案可行性...
   - Redis 缓存可减少 80% 数据库查询
   - JWT 使认证服务可水平扩展
   - 负载均衡需要修改部署配置

4. 最终方案...
   [详细架构设计]
</思考过程>

[最终输出]
...

四、场景化提示词模板

4.1 代码生成

bash
claude -p "
生成一个 FastAPI 用户注册端点。

要求:
- 使用 Pydantic v2 验证
- 密码使用 bcrypt 哈希
- 返回标准 APIResponse
- 包含完整的错误处理
- 添加类型注解和 docstring

现有依赖:
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel, EmailStr
import bcrypt

数据库模型:
class User(Base):
    id = Column(Integer, primary_key=True)
    email = Column(String, unique=True)
    password_hash = Column(String)
"

4.2 代码重构

bash
claude -p "
重构以下函数,使其符合 SOLID 原则。

当前问题:
1. 函数太长(>100 行)
2. 职责不单一
3. 硬编码配置
4. 缺少错误处理

请:
1. 拆分为多个小函数
2. 提取配置到配置类
3. 添加适当的异常处理
4. 保持原有功能不变
"

4.3 Bug 调试

bash
claude -p "
分析以下错误日志,定位根因并提供修复方案。

错误日志:

Traceback (most recent call last): File "app.py", line 42, in create_user db.session.commit() sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: user.email

text

项目信息:
- ORM: SQLAlchemy 2.0
- 数据库: SQLite (开发) / PostgreSQL (生产)
- 相关代码在 src/services/user_service.py

请提供:
1. 错误原因分析
2. 修复代码
3. 预防措施
"

4.4 文档编写

bash
claude -p "
为以下模块编写 API 文档。

要求:
- 使用 Google 风格的 docstring
- 包含参数说明、返回值、异常
- 提供使用示例
- 标注废弃的方法

模块: src/api/users.py

文档格式: Markdown
输出文件: docs/api/users.md
"

五、反模式与避坑指南

5.1 反模式 1:模糊指令

模糊指令是最常见的提示词错误。当你给出一个模糊的指令时,Claude 不得不猜测你的意图,这往往导致输出不符合预期。模糊指令的根源在于你作为提示词的编写者,没有充分思考自己真正想要什么。在编写提示词之前,花时间明确你的目标、约束和期望的输出格式,这将大幅提升 Claude 的输出质量。

bash
# ❌ 模糊
claude -p "优化代码"

# ✅ 具体
claude -p "优化 src/data_processor.py 中的数据处理函数,
将时间复杂度从 O(n²) 降低到 O(n log n),
使用哈希表替代嵌套循环。
保持原有功能不变,添加性能基准测试。"

5.2 ❌ 反模式 2:过度约束

bash
# ❌ 过度约束
claude -p "
用恰好 50 行代码重写这个函数,
必须使用 for 循环,
不能使用任何内置函数,
变量名必须是一个字母,
不要添加注释。
"

# ✅ 合理约束
claude -p "
重写这个函数以提高可读性和性能。
- 保持简洁(建议在 30-60 行)
- 使用描述性变量名
- 添加关键逻辑的注释
- 可以合理使用内置函数
"

5.3 ❌ 反模式 3:缺少上下文

bash
# ❌ 缺少上下文
claude -p "修复这个 bug"

# ✅ 充分上下文
claude -p "
修复以下 bug:

现象:用户注册时,重复邮箱未被正确拒绝

预期行为:返回 409 Conflict
实际行为:返回 500 Internal Server Error

相关代码:src/api/users.py 第 42-55 行
数据库:PostgreSQL,user 表有 email 唯一约束
ORM:SQLAlchemy 2.0

请分析原因并提供修复。
"

5.4 ❌ 反模式 4:不验证输出

bash
# ❌ 不验证
claude -p "生成测试用例"

# ✅ 验证输出
claude -p "
生成测试用例,然后:
1. 运行测试验证通过
2. 检查覆盖率是否达到 80%
3. 如果有失败,分析原因并修复
"

5.5 ❌ 反模式 5:忽略边界条件

bash
# ❌ 忽略边界
claude -p "写一个排序函数"

# ✅ 考虑边界
claude -p "
写一个排序函数,考虑以下边界条件:
- 空列表
- 单元素列表
- 已排序列表
- 逆序列表
- 包含重复元素
- 包含负数
- 大数据量(性能)

添加对应的测试用例。
"

六、高级技巧

6.1 链式提示词

bash
# 第一步:分析
claude -p "分析 src/ 目录的代码质量问题" > analysis.json

# 第二步:基于分析结果生成修复方案
jq -r '.issues[] | .file + ": " + .description' analysis.json \
  | xargs -I {} claude -p "修复以下问题: {}" > fixes.patch

# 第三步:验证修复
claude -p "验证以下修复是否正确: $(cat fixes.patch)" > validation.md

6.2 多角色提示词

bash
claude -p "
请依次扮演以下角色完成任务:

1. 【架构师】分析当前系统架构,识别瓶颈
2. 【开发者】根据架构师的建议编写代码
3. 【审查员】审查开发者的代码
4. 【测试工程师】编写测试用例

每个角色的输出用分隔线标明。
"

6.3 交互式提示词

bash
claude -p "
我将逐步提供信息,请在每一步给出反馈:

步骤 1: 我描述需求
步骤 2: 你提出设计方案
步骤 3: 我确认或调整方案
步骤 4: 你生成代码
步骤 5: 你编写测试

现在开始步骤 1:
需求是:实现一个支持 OAuth2 的登录系统...
"

6.4 提示词版本管理

bash
# 将提示词保存为模板文件
mkdir -p prompts/

cat > prompts/code-review.md << 'EOF'
# 代码审查提示词模板

## 角色
...

## 任务
...
EOF

# 使用模板
claude -p "$(cat prompts/code-review.md)" --file src/main.py

七、总结

提示词工程是与 Claude Code 高效协作的核心能力。掌握 CRISPE 框架、结构化指令、ultrathink 模式,同时避免常见的反模式,可以大幅提升 Claude Code 的输出质量。

关键要点:

  • 使用 CRISPE 框架构建完整提示词
  • 复杂任务启用 ultrathink 深度推理
  • 避免模糊指令、过度约束和缺少上下文
  • 使用链式提示词处理复杂工作流
  • 将高质量提示词保存为模板复用

八、下篇预告

权限管理与安全深度指南 — 深入理解 Claude Code 的权限系统,学习 dangerously-skip-permissions 的风险与替代方案,掌握工具白名单配置、沙箱环境搭建和企业级安全策略。