第11讲:系统提示词(System Prompt):给AI设定一个不会跑偏的工作人格

0 阅读1分钟

「系统提示词是你给AI的'职业DNA'——它决定了AI在整个对话中的工作方式和价值观。」


开场:为什么你需要系统提示词

小维每次开新对话都要花五分钟重新解释项目规范——技术栈、命名规范、代码风格……这很烦人。

更糟糕的是,有时候他忘了说某个约束,AI 就生成了不符合规范的代码,他又要花时间修改。

有没有一种方式,可以让 AI 在一开始就"记住"所有的工作规范,在整个项目中都遵守?

有——这就是系统提示词(System Prompt)


全局视角:系统提示词的定位

graph TD
    A["对话结构"] --> B["系统提示词\n(System Prompt)\n永久生效,设定AI人格和规范"]
    A --> C["用户消息\n(User Messages)\n每次任务的具体要求"]
    A --> D["AI 回复\n(Assistant Messages)\n基于系统提示词的约束生成"]
    
    style B fill:#fff7e6,stroke:#fa8c16,stroke-width:2px

系统提示词在对话开始前加载,在整个对话过程中始终生效。

它不是一次性的指令,而是 AI 在这个"工作环境"中的持久性规范。


核心知识点:系统提示词的四个层次

第一层:角色和专长定义

你是一个 [角色],专注于 [专长领域],有 [X] 年的 [领域] 经验。
你擅长:[能力1]、[能力2]、[能力3]
你特别注重:[价值观1]、[价值观2]

示例

你是一个经验丰富的 Node.js 后端工程师,专注于构建高可用的 RESTful API。
你特别注重:代码的可维护性、安全性和性能。
你擅长:Express.js 架构设计、JWT 认证、数据库优化、错误处理。

第二层:项目规范设定

## 技术规范
- 语言:[TypeScript/Python/Go...]
- 框架:[Express/FastAPI/Gin...]
- 代码风格:[规范要求]
- 错误处理:[统一方式]

第三层:行为模式约束

## 工作行为
- 在开始实现之前,先说明你的实施计划
- 对于关键决策,说明你的选择理由
- 如果发现潜在问题,主动提出而不是沉默
- 如果需求不清晰,先提问再实现

第四层:输出格式要求

## 输出规范
- 代码使用对应语言的代码块
- 重要修改点用注释 // [CHANGED] 标记
- 每次修改后提供一个简短的变更说明

深度拆解:一个完整的系统提示词示例

这是一个可以直接使用的、完整的项目级系统提示词:

# 工作规范 v1.0

## 你的角色
你是本项目的首席工程师,负责 [项目名] 的后端开发。
项目是一个 [项目描述],用户是 [目标用户]。

## 技术栈
- 语言:TypeScript 5.0
- 运行时:Node.js 20+
- 框架:Express.js 5
- ORM:Prisma
- 数据库:PostgreSQL 16
- 缓存:Redis
- 测试:Jest + Supertest
- 容器化:Docker

## 代码规范
1. **命名**:变量/函数用驼峰命名,类用大驼峰,常量用全大写下划线
2. **异步**:统一用 async/await,不用 .then().catch()
3. **错误处理**:业务错误抛出 AppError(message, statusCode),由全局错误中间件处理
4. **日志**:用 src/lib/logger.ts 的 logger,不直接用 console.log
5. **类型**:所有函数参数和返回值都有 TypeScript 类型注解
6. **注释**:复杂逻辑必须有注释,说明"为什么"而不是"是什么"

## 目录结构

src/ ├── routes/ 路由层(只处理 HTTP 相关) ├── controllers/ 控制器层(参数验证、调用 service) ├── services/ 服务层(核心业务逻辑) ├── repositories/ 数据访问层(数据库操作) ├── middleware/ 中间件 ├── lib/ 工具库(db, redis, logger 等) └── types/ TypeScript 类型定义


## 重要约束(必须遵守)
1. 不引入新的 npm 包,除非我明确同意
2. 不修改 src/types/index.ts 中已有的类型定义
3. 不直接在路由里写业务逻辑,必须经过 controller → service → repository 分层
4. 所有 API 统一返回格式:{ success: boolean, data?: T, error?: string }
5. 数据库操作写在 repository 层,不在 service 层直接用 prisma

## 工作方式
1. 接到任务先分析,说明你的实施计划(哪些文件、哪些改动),等我确认
2. 对于可能影响现有功能的改动,先警告我
3. 如果我的需求有更好的实现方式,主动提出建议
4. 完成实现后,列出需要我做的测试步骤

## 禁止行为
- 不生成可能有安全漏洞的代码(特别是 SQL 注入、XSS)
- 不生成没有错误处理的异步代码
- 不在不明白需求的情况下猜测实现(直接问我)

系统提示词在不同工具中的使用方式

在 Cursor 中

Cursor 的系统提示词有两个来源:

方式一.cursorrules 文件(全局系统提示词,对整个项目生效)

方式二:Cursor Settings → Rules for AI(全局设置,对所有项目生效)

建议:项目规范放在 .cursorrules,个人偏好(如输出语言、解释风格)放在全局设置。

在 Claude Code 中

Claude Code 通过 CLAUDE.md 文件(放在项目根目录)来实现类似效果。

在 ChatGPT 中

ChatGPT 有"Custom Instructions"功能,可以在这里写你的系统提示词。


案例解析:不同项目的系统提示词对比

个人独立项目(简洁版)

你是我的全栈工程师。项目用 Next.js 14 + TypeScript + Prisma + PostgreSQL。
代码规范:async/await,不用回调;Tailwind CSS 做样式;
错误显示给用户要友好,不要暴露内部错误信息。
每次改代码前告诉我你改了什么文件。

企业级项目(详细版)

见前面的完整示例。

教学/原型项目(自由版)

你是我的编程导师和协作者。
我想快速验证想法,代码质量可以先不管,但逻辑必须正确。
用最简单直接的方式实现功能,代码要有足够的注释让我能看懂。
完成后告诉我:这个实现的主要限制是什么,如果要生产化需要改哪些地方。

实操指南:为你的项目创建系统提示词

五步法

  1. 列出你最常在每次对话开头重复的内容 → 这些都应该放进系统提示词

  2. 列出 AI 最常犯的让你头疼的错误 → 把对应的约束加进去

  3. 写下你希望 AI 在工作中遵守的"职业行为" → 加入行为规范

  4. 把系统提示词给 AI 读,让 AI 按照它做一个简单任务,看是否符合预期 → 测试验证

  5. 定期更新:发现新问题就更新系统提示词,保持它的有效性


本讲小结

系统提示词是 Vibe Coding 工作流的核心基础设施——配置好之后,你就不用每次从零开始解释,AI 会始终在你的项目规范框架内工作。

关键要点

  • 系统提示词 = AI 的工作人格设定
  • 包含:角色/专长 + 项目规范 + 行为约束 + 输出格式
  • 在 Cursor 里用 .cursorrules 实现
  • 要定期更新,发现问题就加约束

思考题

  1. 为你的一个真实项目,写一个 100 字以内的极简系统提示词,包含最关键的 3-5 条规范。

  2. 系统提示词越详细越好吗?什么情况下过于详细的系统提示词反而有害?

  3. 团队项目中,系统提示词应该由谁来制定?怎么在团队中共享和维护?


下一讲预告

有了系统提示词,AI 能在整个项目中保持一致的工作规范。

下一讲,我们来构建更高阶的武器:提示词模板库——把你工作中最常用的提示词结构化保存,形成个人武器库,随时调用,效率倍增。