Skip to content

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. 是三个英文单词的首字母缩写:

字母英文中文核心问题
RRole角色让 AI 扮演什么身份?
GGoal目标要完成什么任务?
CConstraints约束有哪些限制条件?

这个框架的设计逻辑是:定身份 → 说目标 → 划边界

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

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