系统提示词
概述
Claude Code 的系统提示词由多个部分组合而成,指导 Claude 如何使用工具、遵循安全规则、处理权限等。
组装流程
在 QueryEngine 中的组装
typescript
// Source: src/QueryEngine.ts:287-328
// 1. 获取系统提示词各部分
const parts = await fetchSystemPromptParts();
// 2. 选择基础提示词
const basePrompt = this.config.customSystemPrompt ?? parts.defaultPrompt;
// 3. 添加 Memory 机制(如果使用自定义提示词 + 启用记忆覆盖)
const memoryPrompt = memoryMechanicsPrompt;
// 4. 添加追加提示词
const appendPrompt = this.config.appendSystemPrompt;
// 5. 组合
const systemPrompt = composeSystemPrompt(basePrompt, memoryPrompt, appendPrompt);默认系统提示词结构
Claude Code 的默认系统提示词包含以下主要部分:
| 部分 | 内容 |
|---|---|
| 身份与角色 | Claude Code 的身份定义、能力描述 |
| 安全规则 | 授权安全测试、拒绝恶意请求的边界 |
| 工具使用指南 | 每个工具的使用场景、最佳实践 |
| 代码质量 | 编码规范、安全性要求 |
| 权限处理 | 如何处理工具权限请求 |
| 输出格式 | 响应风格、Markdown 格式 |
| 环境信息 | 运行时环境、平台信息 |
运行时上下文注入
系统提示词在 query() 循环内被进一步扩展:
typescript
// Source: src/query.ts:449-451
const fullSystemPrompt = appendSystemContext(systemPrompt, systemContext);这会在系统提示词末尾追加:
gitStatus: Current branch: main
Main branch (you will usually use this for PRs): main
Git user: developer
Status: (clean)
Recent commits:
abc1234 Latest commit message工具描述注入
每个工具通过 tool.prompt() 方法提供自己的系统提示词内容,这些内容会在工具描述中传递给 API:
typescript
// 工具的 prompt() 方法提供额外指导
async prompt() {
return `When using ${this.name}, follow these guidelines:
- Always quote file paths with spaces
- Prefer dedicated tools over shell commands
...`;
}自定义提示词
用户可以通过 --system-prompt 参数完全替换默认系统提示词:
bash
claude --system-prompt "You are a Python expert. Only suggest Python solutions."也可以通过 --append-system-prompt 在默认提示词后追加内容:
bash
claude --append-system-prompt "Always use TypeScript strict mode."下一步
- API 客户端 — 系统提示词如何传递给 API