Skip to content
Built 26/04/16 13:13commit cc1e88d

How Claude Code Builds a System Prompt

中文 | English

原文来源:https://www.dbreunig.com/2026/04/04/how-claude-code-builds-a-system-prompt.html 收录日期:2026-04-16

摘要

这篇文章解释了 Claude Code 的 system prompt 更像是一个动态组装出来的上下文,而不是一条固定不变的字符串。作者以一次意外泄露的源代码为证据,梳理了哪些组件可能进入最终 prompt,包括全局指令、编码哲学、工具使用策略、沟通规则、subagent 指导、skills、memory 行为、MCP 指令、scratchpad 规则、git 上下文以及其他按条件附加的后缀。

关键要点

  • 在严肃的 agent 产品里,system prompt 通常不是一整段固定文本,而是由许多条件片段动态拼装而成。
  • Claude Code 的 prompt builder 同时包含始终注入的部分和只有在特定条件下才注入的部分。
  • 文中强调,system prompt 只是更大 harness context 的一层,旁边还存在 tool definitions、user content、conversation history、attachments 与 skills。
  • 这种组装逻辑本身就是重要的产品证据,因为它说明大量 context engineering 发生在基础模型之外。
  • 文章没有直接重发泄露源码,而是把其结构整理成可视化图示和可读说明。

文中提到的代表性组件

  • 全局 system framing 与 response style
  • 工具使用策略,以及优先使用专用工具的倾向
  • 编码哲学与最小改动规范
  • 对破坏性操作或外部动作进行风险确认的指导
  • 沟通方式与 verbosity 规则
  • 动态 cache boundary 标记
  • 澄清问题与向用户提问的规则
  • 交互式 shell 使用指导
  • subagent 与 fork 指导
  • skills 的发现与调用
  • 独立验证要求
  • 自动记忆行为
  • runtime / model / environment 后缀
  • 用户语言偏好与输出风格
  • MCP server 指令
  • scratchpad 与 function result 清理行为
  • git status 上下文与附加的 system-prompt 后缀

摘录

System prompts generally aren’t static strings; they’re dynamically assembled contexts with many conditional statements determining what makes it in the prompt.

When you type instructions and hit ‘Enter’, Claude Code assembles a rich context to increase the odds that it obtains a successful response from Opus or Sonnet. As we can see, agents are more than just models. Context engineering is critical.

对本知识库的实际启发

  • 这个来源补足了“反向抽取 prompt 清单”类资料的另一面:它解释了 harness 在运行时如何决定哪些 prompt 片段真的会出现。
  • 它特别适合和记录 Claude Code prompt 片段的来源并读,因为它补充的是组装逻辑与条件结构,而不只是 prompt 内容本身。
  • 这篇文章进一步强化了一个判断:prompt / control surface、skills、memory 系统、MCP 指令与 tool definitions 应该被视作同一个互相耦合的操作层。