# System Prompt 与 User Prompt：GenAI 功能下面的那一层

**Summary:** 一篇面向初学者的 system_prompt 与 user_prompt 解释，用 ChatGPT、Claude Projects、Claude Cowork 和 Claude Code 作为例子。

- Canonical: https://markhuang.ai/zh/blog/system-prompt-user-prompt-genai-features
- Language: zh-CN
- Author: [Mark Huang](https://markhuang.ai/about)
- Published: 2026-05-26
- Section: AI 与 LLM
- Tags: claude-code, 提示工程, AI 技能, subagents, AI 架构
- License: https://creativecommons.org/licenses/by-nc/4.0/

---

![系统提示词和用户提示词两条通道进入通用 AI 助手的卡通图](https://cdn.markhuang.ai/blog/system-prompt-user-prompt-genai-features/hero.webp)

*系统提示词和用户提示词两条通道进入通用 AI 助手的卡通图*

## 一句话总结

2026 年了，GenAI 产品的各种功能越出越多，但只要搞清一件事就能看懂大半：模型回答之前，这段文字到底被塞到了哪里？是 system prompt、user prompt，还是可复用的上下文？

| Prompt 层级     | 控制什么                 | 一秒判断法          |
| ------------- | -------------------- | -------------- |
| System prompt | 助手的角色、规则和边界          | "这是运行规则吗？"     |
| User prompt   | 当前任务、文件和对话上下文        | "这是本次请求的一部分吗？" |
| 可复用上下文        | 保存的项目指令、技能、记忆笔记和上传文件 | "以后的任务也会加载它吗？" |

用这个思路去 debug AI 行为会简单很多：确认指令有没有被带上、放对了位置、写得够不够具体。这个框架也能衔接到 [超越 RAG 的 AI 记忆](/blog/ai-memory-beyond-rag)——持久化的"记忆"只有被产品正确检索并放到正确位置时，才能真正发挥作用。

大多数 AI 教程一上来就甩产品名：ChatGPT 项目、Claude Projects、Claude Cowork、`CLAUDE.md`、技能（skills）、子智能体（subagents）、记忆（memory）、上传文件……

对新手来说，概念密度太高了。

换个角度理解就轻松了：

**这些功能本质上就是把指令或上下文放到模型面前的不同方式。**

关键问题不是"这个功能叫什么名字"，

而是：

**AI 回答之前，这段文字去了哪里？**

这就是为什么理解 `system_prompt` 和 `user_prompt` 很重要。

## 最简单的理解方式

把 AI 聊天想象成去餐厅吃饭。

**System prompt** 就是餐厅的运营手册——告诉助手"你是什么角色、该遵守什么规矩、用什么语气、什么事绝对不能干"。

**User prompt** 就是今天点的菜——包括你说的话、附件、之前的对话，以及应用为这次请求补充的上下文。

比如你说：

```text
帮我把这份会议记录整理一下，发给老板。
```

这就是 user prompt。

而应用悄悄告诉 AI 的那段话：

```text
你是一个乐于助人的助手。回答要简洁。不要编造事实。
```

这就属于 system prompt 的范畴。

真实产品里的层级更多，但先用两个"桶"来分类就够了：

| 桶             | 大白话        | 举例             |
| ------------- | ---------- | -------------- |
| System prompt | 助手的工作职责和规矩 | "你是一个写作助手。"    |
| User prompt   | 当前请求和上下文   | "把这封邮件改得友好一点。" |

一旦你脑子里有了这两个桶，各种 AI 功能就不再显得乱七八糟了。

## Projects 就是可复用上下文

![项目说明通过用户消息通道进入模型的卡通图](https://cdn.markhuang.ai/blog/system-prompt-user-prompt-genai-features/claude-md-user-context.webp)

*项目说明通过 user message 通道流入的卡通图*

拿桌面端的 Claude Project 举例。

假设你建了一个叫"公司博客"的项目，往里面丢了：

- 品牌规范
- 过往博客文章
- 产品笔记
- 项目指令，比如"写给非技术读者"

之后在这个项目里开的每一次对话，都自动带上了这些背景信息。你不用再反复粘贴同样的文件和规则了。

但要注意：不是说项目里的每个文件都会变成隐藏的 system prompt。更准确的心智模型是：

**项目知识和项目指令，是 AI 回答你当前请求时可以调用的额外上下文。**

举个例子：

```text
项目上下文：
  我们的读者是创业者。
  避免过于技术化的表达。
  多用营销和运营方面的例子。
​
用户请求：
  写一篇关于 AI 提示词的博客开头。
```

最终的回答取决于这两部分信息的配合——这就是 prompt routing。

## Cowork 本质上还是 prompt 驱动

Claude Cowork 用起来感觉跟普通聊天很不一样，因为你可以交给它一个更大的任务。

不再是一问一答，而是直接说：

```text
读一下这个文件夹里的文件，按供应商把发票分类，然后生成一份汇总表格。
```

Cowork 能操作本地文件和桌面任务，所以体感上更像是在"派活"，而不是跟聊天机器人对话。

但拆开来看，核心还是那套东西：

- 你布置的任务 → user prompt
- 文件和工作区 → 上下文
- 产品自身的行为规则 → 接近 system prompt
- 每个子任务也需要各自的指令

对新手来说，记住一句话就够了：

**交互界面变了，但模型需要指令和上下文这件事没变。**

## 拿 Claude Code 来具体说明

Claude Code 特别适合拿来举例，因为它的源代码是公开的，能看到一些功能到底是怎么路由的。这里只聊 `CLAUDE.md`、skills 和 subagents。

简单说：

`CLAUDE.md` 看起来像 system prompt，因为大家确实在里面写规则：

```text
用 pnpm。
提交前必须先跑测试。
不要动生成的文件。
```

但在 Claude Code 的源码里，`CLAUDE.md` 实际上是作为 user context 加载的，被拼到对话开头当提醒用。它是很重要的上下文，但并不是在改写 Claude Code 的核心 system prompt。

**Skill** 是一个可复用的 prompt 包。Claude 首先会看到一个简短的列表，知道有这个 skill、什么时候该用。真正触发时，完整的 `SKILL.md` 内容才会被加载进对话。

所以 skill 特别适合那些需要反复执行的流程：review PR、写 release note、生成图片、跑公司 checklist。

**Subagent** 就不一样了。每个 subagent 有自己的指令。Claude Code 启动一个 subagent 时，subagent 的指令体就变成了它的 system prompt，传给它的任务就变成了它的 user prompt。

这就是为什么 subagent 能表现得像一个领域专家。

## 记住这张图就行

![可复用提示词包与专家提示词隔离的卡通图](https://cdn.markhuang.ai/blog/system-prompt-user-prompt-genai-features/skills-subagents.webp)

*可复用 prompt 包和专家级 prompt 隔离的卡通图*

各种 AI 功能，说到底就是不同的文字放置方式。

| 功能               | 大白话理解             | Prompt 心智模型                   |
| ---------------- | ----------------- | ----------------------------- |
| Claude Project   | 一个存了知识和指令的工作区     | 项目内对话共享的可复用上下文                |
| Claude Cowork 任务 | 交给 Claude 的一个大活   | 用户请求 + 文件 + 规划 + 执行上下文        |
| `CLAUDE.md`      | Claude Code 的项目指令 | user context 级别的提醒            |
| Skill            | 可复用的工作流           | 按需加载的 prompt 包                |
| Subagent         | 领域专家              | 独立的 system prompt + 任务 prompt |

文件格式本身不重要。Markdown 就是 Markdown。真正关键的是：产品在模型回答之前，把这份 Markdown 放到了哪里。

## 为什么新手应该搞懂这件事

不理解 prompt 的放置位置，AI 的行为就会显得"玄学"。

你写了一大段项目指令，想不通为什么 Claude 还是漏掉了。你建了一个 skill，想不通为什么它不是每次都生效。你搞了一个 subagent，想不通为什么回答总是泛泛而谈。

问题往往出在这几个地方：

- 指令根本没被带上
- 带上了，但来得太晚
- 放到了 context 里，而不是更强优先级的规则层
- 当前请求没有明确指向它
- 指令写得太模糊

所以下次 debug 的时候，问自己一个更精准的问题：

**AI 是否在正确的位置、正确的时间，收到了正确的指令？**

这比背产品名有用得多。

## 总结

AI 产品会不断推新功能。但剥开外壳，很多功能背后都是同一套基本模式：

```text
system_prompt = 助手是谁，该怎么表现
user_prompt   = 用户现在要什么，加上回答所需的上下文
```

Claude Projects、Claude Cowork、ChatGPT 项目、上传文件、`CLAUDE.md`、skills、subagents——一旦你用这两个通道去理解，全都清晰了。

你越清楚 prompt 被放在了哪里，就越能理解 AI 到底在基于什么干活。

## 补充说明

文中关于 Claude Projects 和 Cowork 的例子是基于用户可见的功能描述，不涉及 Anthropic 内部 prompt 的猜测。详见 Anthropic 的 [Projects 帮助页面](https://support.claude.com/en/articles/9519177-how-can-i-create-and-manage-projects) 和 [Cowork 帮助页面](https://support.claude.com/en/articles/13345190-get-started-with-claude-cowork)。

Claude Code 的例子基于 Claude Code 源代码，具体是加载 `CLAUDE.md`、skills 和 subagent 定义的代码路径。
