$ cat src/constants/prompts.ts
Prompt 工程 Engineering
深入解析 Claude Code 的提示词架构设计。从身份定义到安全约束,从缓存优化到动态注入, 揭示 Anthropic 官方如何通过精密的 Prompt Engineering 驱动 AI 编码助手。
40+提示词文件
15+安全规则
~90%缓存命中率
3 级压缩层级
$ echo "Prompt Assembly Pipeline"
IDENTITY→
TOOL_PROMPTS→
SECURITY→
PREFILL→
── BOUNDARY ──→
PROJECT_CTX→
MEMORY→
MCP_TOOLS→
DATETIME
■ 静态可缓存■ 分界标记■ 动态每次变化
Claude Code 的系统提示词由 getSystemPrompt() 函数动态组装,分为静态和动态两大部分,通过 SYSTEM_PROMPT_DYNAMIC_BOUNDARY 标记分界。
prompts.ts
function getSystemPrompt(options) {
// 静态部分 - 可被 Prompt Cache 缓存
const staticParts = [
IDENTITY_PROMPT, // 身份定义
TOOL_USE_GENERAL_PROMPT, // 工具使用通则
...toolPrompts, // 各工具专用提示词
IMPORTANT_PREFILL_PROMPT, // 重要预填充
];
// 动态分界标记
const boundary = SYSTEM_PROMPT_DYNAMIC_BOUNDARY;
// 动态部分 - 每次请求都会变化
const dynamicParts = [
projectContext, // 项目上下文
memoryFiles, // 记忆文件内容
userPreferences, // 用户偏好设置
currentDateTime, // 当前时间
];
return [...staticParts, boundary, ...dynamicParts];
}// 关键要点
▸静态部分约占 80% 的 Token,通过 Prompt Cache 可节省大量 API 成本
▸动态部分包含项目特定信息,每次请求都会更新
▸SYSTEM_PROMPT_DYNAMIC_BOUNDARY 是一个特殊标记,告诉 API 从此处开始不缓存
▸这种分离策略是 Claude Code 降低运营成本的关键技术之一