$ 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 降低运营成本的关键技术之一