当前位置: 首页 > news >正文

Claude Code 源码分析之提示词工程

每天免费领 1亿 Token,白嫖DeepSeek、GLM、MiniMax、Kimi等大模型!

在搞大模型应用开发的时候,系统提示词的管理经常是个让人头疼的工程难题。要是只靠简单的字符串拼接,代码很快就会变得乱七八糟,而且面对长上下文时,不仅费 Token 钱,响应还慢得要死。
每天免费领 1亿 Token,白嫖DeepSeek、GLM、MiniMax、Kimi等大模型!
这篇文章咱们来拆解一下 Claude Code 的源码(主要涉及src/QueryEngine.tssrc/utils/等核心部分),看看它是怎么设计提示词管理架构的。它的核心套路其实很清晰:把模块化解耦做到极致,深度压榨提示词缓存(Prompt Caching)的性能,再加上多级路由调度和并发的上下文组装。

1. 像搭积木一样的模块化注册

对于复杂的应用,如果把 Prompt 全写成一坨大字符串,改起来准得打架。Claude Code 聪明地采用了类似插件的模块化注册方式。这样一来,要是想加个新功能(比如引入特定的 MCP Server 指令),直接在组装层加个 Section 就行,不用去那几千行的主逻辑里翻找,完全符合“对扩展开放、对修改关闭”的设计原则。
src/constants/systemPromptSections.ts文件里,所有的规则和指令都被拆成了独立的片段,通过systemPromptSection(name, compute)这个工厂函数来统一打理。咱们看看几个核心模块是怎么写的:
getSimpleIntroSection(AI 的身份底色)
代码语言:javascript
AI代码解释

You are an interactive agent that helps userswithsoftware engineering tasks...IMPORTANT:Assistwithauthorized security testing...Refuse requestsfordestructive techniques...IMPORTANT:You mustNEVERgenerate or guess URLsforthe user unless you are confident...

大白话:开门见山告诉 AI 它是谁,并打好预防针,防止它被诱导去做破坏性的坏事。
每天免费领 1亿 Token,白嫖DeepSeek、GLM、MiniMax、Kimi等大模型!
getSimpleDoingTasksSection(干活儿的原则)
代码语言:javascript
AI代码解释

# Doing tasks-In general,donot propose changes to code you haven't read.If a user asks about or wants you to modify a file,read it first.-Do not create files unless they're absolutely necessary...prefer editing an existing file...-If an approach fails,diagnose why before switching tactics...Escalate to the userwithAskUserQuestionTool only when you're genuinely stuck...-The right amountofcomplexity is what the task actually requires—no speculative abstractions...Three similar linesofcode is better than a premature abstraction.

大白话:这就是典型的工程师思维:没看过的代码别乱动、能不新建文件就不建、搞不定了先找原因别瞎试、别搞那些过度封装的空架子。
getActionsSection(高危操作拦截规范)
代码语言:javascript
AI代码解释

# Executing actionswithcare Carefully consider the reversibility and blast radiusofactions.Generally you can freely take local,reversible actions like editing files or running tests.Butforactions that are hard to reverse...checkwiththe user before proceeding.Examples...Destructive operations:deleting files/branches,dropping database tables...When you encounter an obstacle,donot use destructive actionsasa shortcut...only take risky actions carefully,and whenindoubt,ask before acting.

大白话:这里引入了“爆炸半径”和“操作可逆性”的概念。教 AI 怎么分清什么是安全的日常操作,什么是必须得请示主人的危险动作。
getOutputEfficiencySection(治好 AI 的话痨病)
代码语言:javascript
AI代码解释

# Output efficiencyIMPORTANT:Go straight to the point.Try the simplest approach first...Be extra concise.Keep your text output brief and direct.Leadwiththe answer or action,not the reasoning...If you can say itinone sentence,don't use three...

大白话:简单粗暴,要求 AI 说话捡重点,能动手就别吵吵,拒绝长篇大论的废话。
每天免费领 1亿 Token,白嫖DeepSeek、GLM、MiniMax、Kimi等大模型!

2. 靠提示词缓存来实现动静分离

Anthropic 的提示词缓存(Prompt Caching)有个要求:前面的内容得够稳,才能蹭到缓存。为了省下那 90% 的成本并让首字秒出,Claude Code 在架构上做了明显的隔离。
src/constants/prompts.ts里,系统专门弄了个SYSTEM_PROMPT_DYNAMIC_BOUNDARY(动态边界标记)来切分提示词:

  1. 静态长效区:放那些雷打不动的规矩,比如人设、编码规范、全局安全指令等。这部分在不同对话里都能稳稳命中缓存。
  2. 动态易变区:放在分界线后面。这里塞的是经常变的东东,比如当前的 Git 状态、临时思考草稿、还有总在更新的工具列表。
  3. 避坑策略:对于那些变动极快的数据,系统还提供了DANGEROUS_uncachedSystemPromptSection接口。这样开发者临时加点东西,也不会把上面那块巨大的缓存给搞失效。
    每天免费领 1亿 Token,白嫖DeepSeek、GLM、MiniMax、Kimi等大模型!

3. 提示词也要排座次

Claude Code 面对终端、REPL、编排模式还有各种子智能体,有一套分五个等级的优先级机制(写在src/utils/systemPrompt.tsbuildEffectiveSystemPrompt()里):
这套优先级从高到低的逻辑是:

  • 优先级 0(绝对覆盖):权力巅峰。用于最特殊的时刻(比如强行拦住 AI 确认操作,或者只让它按死格式输出)。只要用了这个,之前的规矩全靠边站。
  • 优先级 1(编排者模式):大管家专属。碰到复杂大活儿时,AI 会变成调度员,不亲自码代码,而是专心分发任务、盯着进度。
  • 优先级 2(子智能体人设):给具体的“打工人”分工。比如专门看代码的 ExploreAgent,会多一套“多看少动”的紧箍咒,让它干活更专业。
  • 优先级 3(命令行临时干预):用户说了算。你在终端敲命令时带的自定义 Prompt 就在这儿,AI 会优先听你的话。
  • 优先级 4(兜底套餐):平常干活最常用的模式。如果没别的特殊交代,就按部就班地调用前面那些模块拼出来的标准提示词。
    每天免费领 1亿 Token,白嫖DeepSeek、GLM、MiniMax、Kimi等大模型!
    此外,系统还留了个appendSystemPrompt管道,专门用来随时补刀一些强制性的安全策略。

4. 现场情报搜集机制

在所有指令都备齐、真正给 AI 发请求之前,核心引擎QueryEngine会通过src/context.ts里的逻辑,同步跑两项“情报搜集”任务:

  1. 第一条线:扫描物理环境(System Context)。这就是给 AI 发一份代码库的“实时快照”。它会偷偷查现在的 Git 分支、最新的提交 ID,还有你手里还没提交的代码改了啥。这就是为什么它总能秒懂你刚才写了什么。
  2. 第二条线:注入时间和背景(User Context)。AI 自己是不知道日子的,所以得把当前时间塞给它。更厉害的是,它会去读项目根目录下的CLAUDE.md,这就像是一份“入职指南”,你写在里面的架构规范、命名习惯,都会在这个阶段喂给 AI。
    每天免费领 1亿 Token,白嫖DeepSeek、GLM、MiniMax、Kimi等大模型!
    通过fetchSystemPromptParts()搞定这两路数据后,系统会把这些“现场情报”跟前面排好优先级的提示词合体,最后才封装成请求发给 API。

总结

看懂了 Claude Code 的源码,你会发现现代化的 Prompt 工程早就不再是乱堆字符串了。它更像是一个精密的多级分发系统:一方面把职责拆得细细的,好应对各种运行模式;另一方面紧贴底层硬件(缓存机制),把动静分离玩到了极致。这种既好扩展又保性能的设计方案,非常值得咱们在做企业级 AI 工具时抄抄作业。
每天免费领 1亿 Token,白嫖DeepSeek、GLM、MiniMax、Kimi等大模型!

http://www.jsqmd.com/news/595399/

相关文章:

  • Qwen-Image-Lightning部署教程:国产昇腾/海光平台适配可行性初探
  • 【Linux/C++网络篇(一) 】网络编程入门:一文搞懂 TCP/UDP 编程模型与 Socket 网络编程
  • Qwen3-VL-WEBUI接口调用常见问题解决:从部署到调通全流程避坑
  • Qwen3.5-2B效果实测:多语言混合图文(中英日)识别与响应一致性
  • 04-扣子(Coze)智能体工作流开发实战
  • 乙巳马年·皇城大门春联生成终端W项目依赖管理:使用Matlab进行生成效果数据分析
  • Qwen2.5-VL实战体验:上传图片就能问,Ollama部署真简单
  • Intv_AI_MK11 架构设计咨询:后端微服务拆分与通信方案评估
  • Qwen3.5-2B效果对比:不同Top-K值对代码补全准确性的影响实验分析
  • Meta:构建数学对象推理新范式
  • 网络协议必考基础:OSI七层模型是什么?七层结构+流程图+协议+记忆口诀全网最详
  • 从一次网络故障学到的:为什么你的ping命令会收到‘网络不可达‘回复?
  • 网络协议基础(如403 Forbidden)与模型API调用错误排查指南
  • Java学习——数据类型
  • 别再让YOLO的检测框丑哭你!手把手教你根据图片大小动态调整边框粗细(附Ultralytics源码修改)
  • SenseVoice Small效果展示集:10个真实场景音频转文字高清截图
  • MiniMax M2.7 优惠码
  • 小白也能用!M2FP多人人体解析服务一键部署教程
  • Unity中导入URDF模型实战:以TurtleBot3 Waffle Pi为例
  • 基于DSP28335的三电平PCS系统代码功能说明
  • 千问3.5-9B模型Visual Studio开发环境集成教程
  • Qwen3-Reranker-0.6B效果实测:轻量级模型重排序能力展示
  • 【人工智能训练师3级】考试准备(2026)二、实操题
  • Jimeng LoRA惊艳效果:同一LoRA版本在不同seed下风格稳定性测评
  • HTML中的分级标题标签
  • 2026年知名的伺服冲床/20吨伺服冲床/5吨伺服冲床值得信赖厂家推荐(精选) - 行业平台推荐
  • 告别S7.Net黑盒!零基础C#原生Socket手撕西门子S7协议,打造工业数据采集神器
  • Qwen3-ASR-1.7B全流程指南:硬件要求、软件配置与生产部署
  • Qwen3-TTS在VSCode中的开发调试技巧:从语音克隆到音色设计
  • GLM-4.1V-9B-Base部署指南:模型权重校验+SHA256完整性验证流程