module1
20 分钟

结构化提问方法

学习进度

当前模块0/6 课
总进度0/36 课
学习时长0 分钟

学习目标

  • 运用 RGC(角色+目标+约束+格式)方法构造高质量指令
  • 分辨好提问与差提问,避免常见沟通陷阱
  • 使用 @file 引用让 Codex 精确理解上下文
  • 通过多轮对话逐步细化需求

004 结构化提问方法

掌握 RGC 提问公式,让 Codex 每次都准确理解你的意图,输出高质量结果。

学习目标

完成本课程后,你将能够:

一、RGC 提问公式

Codex 是一个 AI 智能体,它的输出质量**直接取决于你的提问质量**。RGC 是一个简单但高效的提问框架:

R — Role(角色):为 Codex 设定专家身份
G — Goal(目标):清晰描述要做什么
C — Constraints(约束):限定范围、技术栈、规范
F — Format(格式):指定输出格式

完整示例对比

**❌ 差提问(无结构):**

帮我写个登录功能

Codex 不知道:用什么框架?什么语言?要不要验证?错误处理?这让输出不可控。

**✅ 好提问(RGC 方法):**

【角色】你是一名资深 React + TypeScript 全栈工程师

【目标】为 Next.js 14 项目创建登录表单组件

【约束】
- 使用 React Hook Form + Zod 做表单验证
- 邮箱格式验证,密码至少 8 位
- 处理加载状态和 API 错误
- 符合项目已有的 Tailwind CSS 设计风格
- 组件放在 src/components/auth/LoginForm.tsx

【格式】
- 输出完整文件代码,包含 import
- 导出为 default export 的函数组件
- 使用 JSDoc 注释

二、RGC 每个维度的用法

R — 角色设定

角色设定影响 Codex 的代码风格、注释质量和技术决策。

角色适用场景
"资深全栈工程师"架构设计、全栈功能开发
"React 组件专家"前端组件开发,关注可复用性
"DevOps 工程师"CI/CD 配置、Docker、部署脚本
"安全审计专家"代码安全审查、漏洞修复
"性能优化专家"识别性能瓶颈、优化渲染/查询

G — 目标描述

目标要具体、可验证。对比:

模糊目标具体目标
"优化代码""将 ProductList 组件从 200 行重构为 <100 行,提取 3 个子组件"
"修复 bug""修复购物车商品数量不减反增的问题,错误出现在 CartContext.tsx 第 47 行"
"加测试""为 checkout.ts 的 calculateTotal 函数写 6 个测试用例,覆盖空购物车、折扣叠加、税率计算"

C — 约束条件

约束让 Codex 不会"自由发挥"。常用约束:

# 技术约束
- 使用 TypeScript 严格模式
- 不引入新的第三方依赖
- 兼容 Node.js 18+

# 风格约束
- 使用 async/await,不用 .then()
- 变量命名用 camelCase
- 单个函数不超过 50 行

# 范围约束
- 只修改 src/services/ 目录
- 不要改动已有测试文件

F — 格式要求

明确输出格式,避免 Codex 给出你不想要的形式:

  • "只输出代码,不要解释" vs "先解释思路,再输出代码"
  • "输出完整的 diff patch 格式" vs "直接输出修改后的文件"
  • "用 markdown 表格对比方案优劣"

三、@file 引用技巧

Codex 支持 `@file` 语法直接引用项目中的文件,让 Codex 精确读取上下文。

基本用法

> /review @src/app/api/users/route.ts 检查这个文件的安全问题

> /test 参考 @src/utils/formatDate.ts 的实现风格,为 @src/utils/formatPrice.ts 写测试

> /refactor 参考 @src/components/ui/Button.tsx 的组件模式,重构 @src/components/ui/Input.tsx

多文件引用

> /code 为 @src/types/user.ts 中的 User 类型,创建 CRUD API 路由
  参考 @src/app/api/products/route.ts 的路由模式

> /debug 当调用 @src/lib/api.ts 的 fetchUser() 时出现错误
  错误信息来自 @logs/error.log 第 15-30 行

引用策略建议

场景引用什么
写新功能引用类型定义文件 + 类似功能文件
重构引用原文件 + 项目中风格参考文件
调试引用报错文件 + 日志文件
写测试引用被测文件 + 已有测试示例
写文档引用完整模块目录

四、多轮对话技巧

Codex 是对话式智能体,**不要期望一次完成复杂任务**。学会分轮迭代。

四轮迭代模式

第一轮:对齐理解
  "我想给购物车添加优惠券功能,先不写代码,帮我梳理需要改哪些文件"

第二轮:分步实现
  "好的,先实现第一步:在 hooks/useCart.ts 中添加 applyCoupon 方法"

第三轮:补充完善
  "在表单上加上优惠券输入框,连接到刚才的方法"
  "处理优惠券过期和已使用的错误状态"

第四轮:测试验证
  "/test 为优惠券相关逻辑写测试"
  "/review 审查这次变更的整体质量"

上下文策略

Codex 会记住对话历史,不需要每次都重新描述背景。

  • 同一任务的子步骤在同一个会话中完成
  • 不同任务用新会话或明确说"开始一个新任务"
  • 当上下文变得混乱时,重新打开 Codex 开始新会话

五、常见提问错误

错误类型坏例子改进
太模糊"改进代码""将 utils.ts 中重复的数组去重逻辑提取为独立函数"
无技术栈"写个 API""用 Express + TypeScript 写一个 REST API"
无错误处理"调用 API 获取数据""调用 API 获取数据,处理网络超时、4xx 和 5xx 错误"
一次太多"同时写登录、注册、找回密码、OAuth"拆分成 4 个独立任务,逐步完成
角色缺失"帮我审查""你作为安全审计专家,审查这个文件中潜在的注入漏洞"

六、本课总结

**核心要点:**

  • RGC 公式:Role(角色)+ Goal(目标)+ Constraints(约束)+ Format(格式)
  • `@file` 引用让 Codex 准确读取上下文,避免猜测
  • 复杂任务分 4 轮迭代:对齐理解、分步实现、补充完善、测试验证
  • 提问质量直接决定输出质量——花 1 分钟写好提问,省 10 分钟修代码

**下一步:** 下一课将深入学习 codex.yaml 的项目管理能力,掌握项目级配置和团队标准统一。

上一课
下一课