【图解】Claude Code 源码解析 |Prompt 提示词模块

news2026/5/9 19:33:54
Prompt 提示词做过 Agent 的同学都知道调 Prompt 是一个很痛苦的过程不过我们现在可以看看顶级Agent的提示词是怎么做的。CC 的 Prompt 提示词主要分成以下几个部分Core System Prompt明确角色、任务边界、输出风格、风险动作原则、工具总原则。Tool Prompts每个工具的用途、输入约束、什么时候用、什么时候不用、与其他工具的边界。Skill Prompts专项知识包、明确触发条件、限定工具集、可按需展开。Agent Promptscoordinator、worker、verifier、planner。Context Management Prompts压缩、会话总结、记忆提取、恢复。Memory Prompts存储内容、存储方式等等。Core System Prompt整个系统提示词是由静态规则和动态的 dynamicSections 组成。静态规则会做缓存动态规则会做更新并且静态和动态规则之间会有一个boundary做划分。其实我们可以从cc的代码中看到有很多的明切的边界划分不仅是在 system prompt 这里还有上一篇文章的 tool、skill 的划分都是非常明确的界限。静态规则比如if (isEnvTruthy(process.env.CLAUDE_CODE_SIMPLE)) { return [ You are Claude Code, Anthropics official CLI for Claude.\n\nCWD: ${getCwd()}\nDate: ${getSessionStartDate()}, ] }dynamicSections比如const dynamicSections [ systemPromptSection(session_guidance, () getSessionSpecificGuidanceSection(enabledTools, skillToolCommands)), systemPromptSection(memory, () loadMemoryPrompt()), systemPromptSection(language, () getLanguageSection(settings.language)), systemPromptSection(output_style, () getOutputStyleSection(outputStyleConfig)), DANGEROUS_uncachedSystemPromptSection(mcp_instructions,() isMcpInstructionsDeltaEnabled()? null: getMcpInstructionsSection(mcpClients),MCP servers connect/disconnect between turns), systemPromptSection(summarize_tool_results,() SUMMARIZE_TOOL_RESULTS_SECTION) ...]⚠️ 注意在 system prompt 拼接的时候还有一个优先级策略树 buildEffectiveSystemPrompt保证在多模式、多角色、多来源 prompt 共存时 system prompt 的覆盖关系清晰、一致、可维护。Override SystemPromptP0最高优先级如果设置了 override prompt直接替换掉其他所有 prompt其他什么default/custom/agent/coordinator 都不管了这就是硬覆盖。Coordinator Prompt如果当前开了 coordinator mode就要用 coordinator 专用的 system prompt 来代替默认 prompt当前主线程不再是普通 agent而是一个调度者。Agent Prompt如果设置了 mainThreadAgentDefinition主线程本身就变成某个 agent那通常用这个 agent 自己的 system prompt。一般情况下agent prompt 替换 default prompt但在 proactive mode 下agent prompt 会追加到 default prompt 后面不替换 default。Custom System Prompt如果用户传了 --system-prompt 并且前面都没有的情况下就用这个Custom System Prompt最后才是真正的系统默认的 Default System PromptThe System Prompt In Claude CodeTool Promptscc 里面skill和sub agent都是以tool的形式调用的比如 ToolSkill、ToolAgent 之类的。cc 中的每个tool基本都有自己的prompt/description来规定自身的说明方式和工具间的边界这类 prompt 的特点是行为协议可以使用什么不要使用什么。典型结构就是这个工具是什么什么时候该用/什么时候不该用参数/调用约束是什么举个例子比如 GrepTool⚠️ 注意cc里面会把一些规则以自然语言的形式放在Prompt里面而不是以代码的形式对大模型的输出进行做规则定义比如这里面的to find interface in Go Code自身的代码并没有做过多的规则补丁而是充分相信大模型的处理。我们再看一个 BashTool 的例子这个 Tool 的 Desc 已经复杂的不是简单声明了更像一个高风险工具专用操作规程SOP。这里面定义了git的提交 PR 的详细流程什么事情不能做用skill替代部分git流程等等…让我感觉更像一个初版的 Skill有点怀疑是不是因为这个 BashTool 的 Desc 太多了而有了后来的 Skill。descSkill Prompts如果我们都用mcp的话就会导致上下文窗口存在大量的tool定义、描述、参数但一般模型只会选择部分tool执行那么就会有token的浪费所以就出现了渐进式加载的skill。skill 一种Command(typeprompt)形式的可展开能力包支持渐进式加载其实就是一段标准的SOP。核心机制是 先把 skill 作为 prompt 资产注册起来再由 SkillTool 在运行时把它展开成新的上下文消息 而不是像普通 tool 那样直接执行外部动作。我们用一个cc里面的一个skill来举个例子看看cc里面是怎么写skill的比如claude-api的 skill一个skill里面会包含这些核心能力name/description、allowedTools、model、hooks、paths 等等…name这个skill的名字。description这个skill的使用场景什么时候触发什么时候不触发。allowedTools可以允许使用的工具集合。buildPrompt如何构建当前这个skill的 prompt。prompt生成规则先找到## Reading Guide然后把 SKILL_PROMPT 分成两段前半段 basePrompt 会保留中间的 reading guide 不直接用原始版本而是用运行时生成版替换掉我们来看看这个 reading guide是什么Reading Guide简单来说就是一个索引文件遇到不同任务时该读哪些 docs文档入口在哪单轮文本分类 / 摘要 / 信息抽取 / 问答 → 看{lang}/claude-api/README.md聊天 UI 或实时流式响应展示 → 看{lang}/claude-api/README.md{lang}/claude-api/streaming.md长对话可能超过上下文窗口 → 看{lang}/claude-api/README.md中的 Compaction 部分等等…skill 不会把所有语言文档都发给模型只发当前项目最可能相关的那一套这也是一种非常重要的 token 优化策略这里的lang 是根据detectLanguage这个函数来判断的比如有以下的一些策略pyproject.toml / requirements.txt → Pythonpackage.json / tsconfig.json → TypeScriptgo.mod → Gopom.xml → Java如果没有检测出来是什么语言会直接咨询用户当前的编程语言并且 prompt 拼接内容的时候还会用doc标签来区别这个文档内容来自哪里文档后续就不会重复找相同的文件。doc pathtypescript/claude-api/README.md...文档内容.../docdoc pathshared/tool-use-concepts.md...文档内容.../doc整个skill的prompt排版如下Skill Prompt伪 markdown 如下(实际场景中要么纯英文要么纯中文)***name: Claude APIdescription: 这个技能用于帮助你使用 Claude API、Anthropic SDK 或 Agent SDK 构建应用当你处理以下问题时应优先使用这份技能...allowed-tools- Read- WebFetch- ...***# Claude API / Anthropic SDK 专项技能## Reference Documentation...根据 go 定制的 reading guide...---## Included Documentationdoc pathgo/claude-api/README.md.../docdoc pathshared/tool-use-concepts.md.../doc...更多相关 docs...## When to Use WebFetch...## Common Pitfalls避免错误使用模型名、错误流式写法、错误 tool use 方式、缓存误解等...## User RequestUse Go SDK to stream chat responsesAgent Prompts这里有两种 Agent Prompt一种是给主线程看的本质是告诉主线程如何使用 AgentTool这个prompt由以下这几个部分组成Shared core什么是 AgentTool、available agents 列表、subagent_type/fork 的基本语义…When NOT to use读一个文件别开 agent、搜一个类定义别开 agent等等…Usage notesdescription 要怎么写、前台/后台 agent 的区别…Writing the prompt如果是 fresh agent要把背景讲完整、如果是 fork要写 directive、不要重复背景…When to fork仅在 fork 功能开启时出现、强调 fork 继承上下文、不要偷看 output_file、不要猜结果等等…Examples给主模型示范什么时候该开 agent、coordinator/fork 模式和普通模式示例不同等等…Agent Tool Prompt另一种Agent Prompt是给具体的agent做 system prompt 用的比如这个agent是什么、充当什么角色、边界在哪里、输出是什么等等…这类 prompt 有着强角色边界强流程编排特别像人类团队里的 TL/PM 操作手册抽象成可复用的模块大概是以下这个样子你是一个 xxx 角色.## 你的工作职责是- 你负责什么- 你的核心价值是什么## 强制边界- 你绝对不能做什么- 哪些行为会失败或被拒绝## 你可以获取的信息- 你会拿到什么输入- 哪些上下文可以依赖## 执行过程1. 先做什么2. 再做什么3. 什么时候停止4. 什么时候升级/转交## 错误处理- 你最常见的错误行为是什么- 出现时应该如何纠正## 工具使用指南- 应该优先怎么用工具- 哪些工具不能碰- 哪些信号要检查而不是假设## 输出的结果是什么- 必须怎么汇报结果- 必须包含哪些字段- 是否需要 verdict / critical files / summary我们的prompt是给大模型看的所以尽量是模型友好型的语句格式尽量不要弄 json、key、value 之类的编码类的语言用有逻辑的自然语言表达描述。Memory PromptsMemory的Prompt主要有这几个部分组成定义角色一开始先告诉模型你有一个持久的、文件化的 memory 系统路径在哪目录已经存在可以直接写。定位意义为了逐步积累对用户、协作方式、项目背景的理解让未来会话能延续上下文。明确 remember / forget 是一等动作用户显式说“记住”就立即存用户说“忘记”就立马删除。memory类别user、feedback、project、reference每一类都定义了desc、when to save、how to use、examples等等…比如 user是记用户角色、目标、知识水平、偏好的用途是让后续解释和协作更贴合用户。例如用户是资深 Go 开发但不熟 React那以后解释前端问题时就要借后端类比。Types Select Individual如何存储记忆每条 memory 都会按照以下格式写到自己的 markdown 文件里学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2598469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…