---
title: "3.2.3 Role → Goal → Constraints 框架（简化版）"
---


![03-technique_3.2-structured-frameworks_3.2.3-rgc-framework.png](/images/Basic/03-technique_3.2-structured-frameworks_3.2.3-rgc-framework.png)
# 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 CSS
```

### S.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 输出不符合预期，检查是否缺少背景、需求、受众或格式信息


下一节，我们介绍一个"万能模板"——当你不确定用哪个框架时的保底选择。
