扒开 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:
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
为什么这样设计? 静态区域一旦确定就不变,大量用户可以共享同一份缓存,大幅降低首 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...
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
六、两条反幻觉原则
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 分割 |
|
DANGEROUS_ 命名约定 |
|
!cmd 内联执行 |
|
| XML 标签通信协议 |
|
| Feature Flag 控提示词 |
|
| 三层身份定义 |
|
| MEMORY.md 索引+详情分离 |
|
| 独立对抗性验证 |
|
结语
Claude Code 的提示词工程体系告诉我们一件事:
提示词工程已经不只是”写几句话告诉 AI 怎么做”,而是一套有缓存策略、版本管理、A/B 测试、安全审查机制的基础设施。
从单个 prompt → prompt infrastructure,这可能是未来 AI 产品工程的核心竞争力之一。
原始技术报告(1400行源码分析)见:Claude-Code技术架构与提示词工程分析.md
夜雨聆风