3.2.3 Role → Goal → Constraints 框架(简化版)
经过本节学习,你将掌握
- R.G.C. 框架的三个要素及其含义
- 什么场景适合用这个精简框架
- S.C.A.F.F. 和 R.G.C. 的选择标准
- 知道何时从 R.G.C. 升级到 S.C.A.F.F.
框架结构
R.G.C. 是三个英文单词的首字母缩写:
| 字母 | 英文 | 中文 | 核心问题 |
|---|---|---|---|
| R | Role | 角色 | 让 AI 扮演什么身份? |
| G | Goal | 目标 | 要完成什么任务? |
| C | Constraints | 约束 | 有哪些限制条件? |
这个框架的设计逻辑是:定身份 → 说目标 → 划边界。
相比 S.C.A.F.F.,R.G.C. 更轻量,适合快速提问和相对简单的任务。
三要素详解
R - Role(角色)
让 AI 进入特定的"专家模式"。
为什么角色很重要:同样的问题,程序员视角和产品经理视角的回答会很不同。指定角色可以让 AI 的输出更符合你的期望。
常用角色示例:
- "你是一个资深的 React 开发者"
- "你是一个注重代码可读性的 Python 工程师"
- "你是一个擅长数据可视化的分析师"
- "你是一个对初学者友好的编程导师"
填写技巧:角色描述可以包含专长、风格偏好、经验水平。
G - Goal(目标)
说清楚要完成什么任务。
填写内容:
- 具体的任务描述
- 期望的输出结果
- 成功的标准
填写技巧:用"动词 + 名词"的结构,如"实现一个函数"、"分析这段代码"、"解释这个概念"。
C - Constraints(约束)
划定任务的边界。
填写内容:
- 技术限制(语言、框架、库)
- 格式要求(长度、风格)
- 内容限制(不要什么)
填写技巧:约束越明确,AI "加戏"的空间越小。
完整示例:代码重构
任务场景
你有一段能用但很乱的代码,想让 AI 帮你重构。
❌ 差提示词
帮我优化这段代码:
[粘贴代码]问题:"优化"可以有很多种理解——性能优化?可读性优化?架构优化?AI 不知道你想要哪种。
✅ 用 R.G.C. 框架改写
markdown
【Role - 角色】
你是一个注重代码可读性和可维护性的 Python 工程师。
【Goal - 目标】
重构下面这段代码,提高可读性:
- 让变量命名更清晰
- 把重复逻辑提取成函数
- 添加必要的注释
```python
def f(l):
r=[]
for i in l:
if i>0:
r.append(i*2)
return r【Constraints - 约束】
- 保持功能完全不变
- 不使用列表推导式(我还没学到那部分)
- 不需要添加类型注解
- 注释用中文
### AI 的可能输出
```python
def double_positive_numbers(numbers):
"""
从列表中筛选正数,并将每个正数翻倍
参数:numbers - 输入的数字列表
返回:包含翻倍后正数的新列表
"""
result = []
for number in numbers:
# 只处理正数
if number > 0:
doubled = number * 2
result.append(doubled)
return result更多 R.G.C. 示例
示例一:解释概念
markdown
【Role】你是一个对编程初学者友好的导师
【Goal】用通俗的语言解释什么是"回调函数"
【Constraints】
- 不要用其他技术术语
- 举一个生活中的类比
- 控制在 200 字以内示例二:生成测试数据
markdown
【Role】你是一个熟悉电商业务的数据工程师
【Goal】生成 10 条模拟的订单数据
【Constraints】
- 格式:JSON 数组
- 每条包含:订单ID、用户名、商品名、金额、下单时间
- 金额范围:50-500 元
- 时间范围:2024 年 1 月示例三:代码审查
markdown
【Role】你是一个严格但友善的代码审查员
【Goal】审查这段代码,指出潜在问题:
[粘贴代码]
【Constraints】
- 只关注安全性和性能问题
- 不评价代码风格
- 每个问题给出修复建议
- 问题数量不超过 5 个S.C.A.F.F. vs R.G.C.:同一任务的两种写法
假设任务是:为待办清单添加"完成任务"功能。
R.G.C. 写法(快速版)
markdown
【Role】你是一个 React 开发者
【Goal】实现点击任务时将其标记为已完成的功能
【Constraints】
- 用 TypeScript
- 完成的任务显示删除线
- 用 Tailwind CSSS.C.A.F.F. 写法(完整版)
markdown
【Situation】
待办清单项目,React + TS + Tailwind,已有 AddTask 和 TaskList 组件
【Challenge】
实现"完成任务"功能:
- 点击任务文本,切换完成/未完成状态
- 完成的任务显示删除线和浅灰色
- 可以重复点击切换状态
【Audience】
我是 React 初学者,请解释状态管理的逻辑
【Format】
更新 TaskList 组件代码,添加必要注释
【Foundations】
- 用 useState 管理状态
- 不用任何动画库
- 样式变化要有 0.2s 过渡效果选择标准
| 场景 | 推荐框架 |
|---|---|
| 对项目背景熟悉,任务简单明确 | R.G.C. |
| 新项目或复杂任务,需要详细说明背景 | S.C.A.F.F. |
| 快速提问,只是想验证一个想法 | R.G.C. |
| 正式开发,代码要进入项目 | S.C.A.F.F. |
| AI 输出不理想,需要增加约束 | 从 R.G.C. 升级到 S.C.A.F.F. |
何时从 R.G.C. 升级到 S.C.A.F.F.
当你用 R.G.C. 提问后,发现 AI 的输出不符合预期,这通常是信息不足的信号。
常见信号:
| 问题表现 | 可能缺少的信息 | 升级方向 |
|---|---|---|
| 技术栈不对 | 项目背景 | 添加 Situation |
| 功能太简单/太复杂 | 具体需求 | 补充 Challenge |
| 代码风格不匹配 | 维护者信息 | 添加 Audience |
| 输出格式混乱 | 格式要求 | 添加 Format |
升级示例:
markdown
# 原来的 R.G.C.
【Role】React 开发者
【Goal】实现表单验证
【Constraints】不用第三方库
# AI 输出了一个过于复杂的验证方案
# 升级为 S.C.A.F.F.
【Situation】个人博客项目,只有一个简单的登录表单
【Challenge】验证邮箱格式和密码非空,错误时显示提示
【Audience】我是初学者,请用最简单的方式实现
【Format】完整组件代码 + 中文注释
【Foundations】只用 useState,不用 useReducer 或其他复杂模式可复制的 R.G.C. 模板
markdown
【Role - 角色】
你是一个 [专长/风格描述] 的 [职业身份]
【Goal - 目标】
[动词] [具体任务描述]
【Constraints - 约束】
- [限制条件1]
- [限制条件2]
- [限制条件3]本节要点
✓ R.G.C. 三要素:Role(角色)→ Goal(目标)→ Constraints(约束)
✓ 适用场景:快速提问、简单任务、对项目已有清晰认知
✓ 与 S.C.A.F.F. 的关系:R.G.C. 是精简版,输出不理想时可升级
✓ 升级信号:当 AI 输出不符合预期,检查是否缺少背景、需求、受众或格式信息
下一节,我们介绍一个"万能模板"——当你不确定用哪个框架时的保底选择。
