乐于分享
好东西不私藏

扒开 Claude Code 源码,我发现了 Anthropic 的提示词工程"秘籍"

扒开 Claude Code 源码,我发现了 Anthropic 的提示词工程"秘籍"

摘要:Anthropic 官方 AI 编程助手 Claude Code 的源码已经公开,其中隐藏着一套工业级的提示词工程体系。本文从源码出发,拆解它在 System Prompt 架构、工具设计、安全护栏、多 Agent 协作等方面的核心设计哲学,提炼出 8 条可直接复用的工程实践。


你可能不知道,Claude Code 的提示词已经公开了

最近 Anthropic 的官方编程助手 Claude Code 源码流出,内部代号 Tengu(天狗)

作为目前公开的、工业级 AI Coding Agent 中最具学习价值的代码库之一,它完整展示了一个生产级 Agentic AI 系统的提示词工程体系

我花了几天时间把核心文件读了一遍,整理成这篇文章。


一、最聪明的设计:System Prompt 静/动分割

先看最底层的架构设计。

Claude Code 的 System Prompt 用一行字符串做了物理分割

__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__

这个标记把整个 System Prompt 分成两部分:

边界之前 → 静态内容,全局缓存所有用户的这部分内容完全相同,可以在 Anthropic API 侧跨请求、跨用户复用 KV 缓存。

边界之后 → 动态内容,per-session 计算包含 CLAUDE.md、Git 状态、记忆文件、MCP 服务器指令等用户特定信息。

静态部分大概包括 7 个核心 Section:

Section
内容
Intro
角色身份 + 安全护栏
System
工具权限规则
Doing tasks
任务执行行为规范
Actions
谨慎操作指南
Using tools
工具使用优先级
Tone & style
沟通风格
Output efficiency
输出效率

为什么这样设计? 静态区域一旦确定就不变,大量用户可以共享同一份缓存,大幅降低首 Token 延迟和 API 成本。


二、”代码即文档”:一个函数名引发的思考

源码里有这样两个函数:

// 普通 Section:计算一次,session 内缓存systemPromptSection(name, compute)// ⚠️ 危险 Section:每轮重计算,破坏 prompt cacheDANGEROUS_uncachedSystemPromptSection(name, compute, _reason)

注意看 DANGEROUS_ 前缀——这是一种代码即文档的工程实践。

调用这个函数的工程师,光看函数名就知道:这会破坏 prompt cache,成本高昂,必须提供 _reason 参数说明为何必须这样做。

整个代码库中,只有 mcp_instructions(MCP 服务器指令)使用了这个函数——因为 MCP 服务器可以动态连接/断开,不得不每轮重算。

启示:通过命名约定,把成本意识嵌入代码结构。


三、工具优先级:专用 > 通用,是强制的

很多人用 Claude 时,模型会直接用 bash cat 读文件、用 bash grep 搜索内容。

Claude Code 在 System Prompt 里用双重约束解决了这个问题:

第一层(全局约束),在 # Using your tools Section:

Do NOT use the Bash tool when a relevant dedicated tool is provided.Using dedicated tools allows the user to better understand and reviewyour work. This is CRITICAL.

第二层(工具自身约束),在 BashTool 的提示词里:

IMPORTANT: Avoid using this tool to run find, grep, cat, head,tail, sed, awk, or echo commands...- File search: Use GlobTool (NOT find or ls)- Content search: Use GrepTool (NOT grep or rg)- Read files: Use Read (NOT cat/head/tail)- Edit files: Use FileEdit (NOT sed/awk)

为什么这么重要? 专用工具让用户能审查每一步操作,Bash 是黑盒。这是 Claude Code 信任体系的基础。


四、Git 安全协议:用提示词实现 GitOps 基线

Claude Code 在 BashTool 的提示词里内置了一套完整的 Git 安全规范:

# Git Safety Protocol:- NEVER skip hooks (--no-verify, --no-gpg-sign, etc)- NEVER run force push to main/master- CRITICAL: Always create NEW commits rather than amending  When a pre-commit hook fails, the commit did NOT happen —  --amend would modify the PREVIOUS commit, destroying work- When staging files, prefer specific files over "git add -A"  which can accidentally include sensitive files (.env, credentials)

并且强制要求用 HEREDOC 格式传 commit message:

git commit -m "$(cat <<'EOF'Your commit message here.EOF)"

这避免了 commit message 中特殊字符(引号、换行)导致 shell 解析错误的经典 bug。


五、多 Agent 协作的灵魂:Fork vs. 新 Subagent

Claude Code 的 AgentTool 提示词里,有一个设计让我眼前一亮:

Fork(复用上下文 + 共享缓存)

Fork yourself (omit `subagent_type`) when the intermediate tooloutput isn't worth keeping in your context.Forks are cheap because they share your prompt cache. Don't set`model` on a fork — a different model can't reuse the parent's cache.

新 Subagent(从零开始)

When spawning a fresh agent (with a subagent_type), it starts withzero context. Brief the agent like a smart colleague who just walkedinto the room...
Fork
新 Subagent
上下文
继承父级全部
从零开始
缓存
共享父级
独立缓存
成本
低(复用缓存)
相对高
适用
研究/并行调查
专业化独立任务

六、两条反幻觉原则

AgentTool 里最精妙的是这两条规定:

“Don’t peek”(不要偷看)

Fork 出去的子任务还没完成——你不能去 Read 它的输出文件”看进度”。因为这会把 fork 的工具调用噪音拉回你的上下文,破坏了 fork 的意义。

“Don’t race”(不要抢跑)

你对 fork 的发现一无所知。永远不要预测或捏造 fork 的结果——不管是以散文、摘要还是结构化输出的形式。结果通知会以 user 角色消息出现在后续轮次。

这两条规定直指 AI 幻觉的根源:模型会因为”有帮助”的意愿,在信息不足时主动填充内容。明确禁止这种行为,是反幻觉设计的关键。


七、记忆系统:索引 + 详情分离

Claude Code 实现了一套基于文件的持久记忆系统,设计非常巧妙:

  • MEMORY.md:始终加载的索引文件(≤200行/25KB),每条记忆只有一行 - [标题](file.md) — 一句话描述
  • 主题文件:每个记忆存一个独立 .md 文件,按需读取

记忆分四种类型:user(用户偏好)、feedback(行为反馈)、project(项目上下文)、reference(外部参考)。

禁止保存的内容

- 可以从代码读出的架构/设计模式- README 里已有的信息- Git 历史观察

这很关键——只存代码推断不出的信息,避免记忆与代码状态不同步的问题。


八、安全护栏:Safeguards 团队专属

源码里最醒目的注释:

/** * OWNED BY SAFEGUARDS TEAM * DO NOT CHANGE without review from @anthropic-ai/safeguards-team */exportconst CYBER_RISK_INSTRUCTION = `...`

这段提示词通过代码所有权机制受到保护——普通开发不能随意修改,必须经过安全团队审查。

内容采用”正面清单 + 负面清单”结构:

  • 可以:解释漏洞原理、CTF 辅助、授权渗透测试、防御性工具
  • 不可以:攻击生产系统的具体步骤、功能性恶意软件、针对已知目标的漏洞利用

可直接复用的 8 条工程实践

实践
核心价值
静态/动态 Prompt 分割
最大化 prompt cache 命中率
DANGEROUS_ 命名约定
通过函数名传达成本警告
!cmd 内联执行
Slash 命令自动携带当前状态
XML 标签通信协议
区分系统注入内容和用户输入
Feature Flag 控提示词
A/B 测试提示词变体,量化改进
三层身份定义
CLI / SDK / 自主模式各一套
MEMORY.md 索引+详情分离
记忆系统的可扩展性方案
独立对抗性验证
禁止自我核验,防止”自批自改”

结语

Claude Code 的提示词工程体系告诉我们一件事:

提示词工程已经不只是”写几句话告诉 AI 怎么做”,而是一套有缓存策略、版本管理、A/B 测试、安全审查机制的基础设施。

从单个 prompt → prompt infrastructure,这可能是未来 AI 产品工程的核心竞争力之一。


原始技术报告(1400行源码分析)见:Claude-Code技术架构与提示词工程分析.md