Skip to content

系统提示词

概述

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."

下一步