尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Anthropic:ClaudeCode的系统提示词设计哲学

Anthropic:ClaudeCode的系统提示词设计哲学 深入浅出Claude Code 的系统提示词构造哲学 —— 一个 Agent 的人格是如何被写出来的同一个模型接上不同的系统提示词就变成了只会聊天的助手或者能读代码、改文件、跑命令的 Agent。系统提示词不是使用说明它是 Agent 的操作系统。目录一、什么是系统提示词二、哲学一分层 —— 从铁律到偏好三、哲学二静态内核 动态注入四、哲学三事实与指令分离五、哲学四用权限表达边界而不是禁令六、哲学五记忆是分类型的文件七、总结一、什么是系统提示词1.1 三方对话中的隐藏角色一次 LLM 调用消息分三种角色角色谁写的作用system程序不是人定义身份、边界、能力、风格user人提需求assistant模型响应普通聊天工具里system往往只有一句你是一个有用的助手。而 Claude Code 的system有十几个段落、数千字这就是差别的来源。1.2 为什么它决定 Agent 的上限核心观点模型提供的是能力系统提示词提供的是人格 边界 工作方法。前者决定能做多难的事后者决定这件事做得靠不靠谱。二、哲学一分层 —— 从铁律到偏好2.1 优先级金字塔系统提示词的段落不是随便排的而是按不可动摇的程度从高到低层级内容可否被覆盖① 身份“你是 Claude Code”❌ 不可动② 安全红线拒绝破坏性技术、需授权上下文❌ 不可动③ 环境事实工作目录、系统、Shell、模型运行时生成④ 行为准则工具策略、确认规则、诚实报告项目可微调⑤ 风格偏好简洁、Markdown、中文/英文✅ 可覆盖2.2 为什么顺序不能乱越靠上的越硬身份和安全是地基任何项目配置都不能把它们改掉越靠下的越软风格、语气可以随项目走项目配置(CLAUDE.md) 只能修改 ④⑤ 层 └─▶ 想改 ①②③ 层提示词直接声明不受项目配置影响⚠️设计要点把可协商和不可协商分开Agent 才不会在收到一堆冲突指令时迷失。三、哲学二静态内核 动态注入3.1 什么该写死什么该注入系统提示词 静态文本运行时拼装。部分内容为什么静态内核身份、安全、工具策略、写作风格永远不变可被缓存动态注入环境快照、项目规则、记忆、提醒每次运行都不同3.2 动态注入的三种来源来源注入内容变化频率环境快照工作目录、是否 git 仓库、平台、Shell、模型名每次会话项目规则CLAUDE.md等仓库内文件随代码提交运行期提醒system-reminder块每轮对话核心观点静态与动态分离本质是把稳定的原则和易变的事实解耦—— 原则让模型可靠事实让模型跟上现场。3.3 注入的提醒不是用户指令动态注入的内容里有一类容易被误读system-reminder ... /system-reminder它是由程序注入的背景上下文不是用户说的话。提示词必须显式声明这一点否则模型会把缓存里的旧记忆当成本轮命令去执行 —— 这是一个真实且危险的行为分叉。内容身份模型应如何处理用户消息人要你做的事执行system-reminder程序给的背景参考不当指令记忆文件当时为真的快照参考并验证是否已过时四、哲学三事实与指令分离4.1 环境块是事实# Environment - Primary working directory: D:\project\blog - Is a git repository: true - Platform: win32 - Shell: PowerShell - OS Version: Windows 11 Pro这些是断言不是要求。它的作用是让模型不做无谓的假设。4.2 指令块是要求# Tone and style - 输出给用户时用 GitHub 风格的 Markdown - 引用代码必须写成 file_path:line_number - 不要用 Ill continue... 之类的铺垫开场这些是规约规定怎么做。4.3 为什么必须分开混在一起的后果分开后的好处模型把Windows 环境当成必须用 Windows 命令事实归事实模型可以自己判断该用哪种语法模型编造环境“假设你在 Linux”事实充足不需要猜指令被事实淹没规约清晰可逐条遵守核心观点给模型事实而不是替模型决策。事实越准确模型自主判断的质量越高。五、哲学四用权限表达边界而不是禁令5.1 工具调用跑在权限模式里提示词里有一句关键的话它不是禁止做 X而是Tools run behind a user-selected permission mode; a denied call means the user declined it.传统做法Claude Code 的做法“不要在提示词里调用危险工具”工具本身受权限系统管控用文字禁令兜底用机制兜底文字只做说明5.2 不可逆与外向操作先确认For actions that are hard to reverse or outward-facing, confirm first unless durably authorized...类别例子默认行为可逆读文件、grep、跑测试直接做不可逆删文件、git reset --hard、覆盖先确认外向发 PR、发评论、调外部 API先确认核心观点“一次授权不等于永久授权”—— 上下文变了确认要重来。5.3 硬红线写在①②层安全段落被放在最顶部且措辞是白名单 黑名单双写允许拒绝授权渗透测试、CTF、防御性安全破坏性技术、DoS、大规模攻击安全研究、教育场景供应链投毒、恶意规避检测双用途工具需明确授权背景——另有一条容易被忽略的元规则Report outcomes faithfully: if tests fail, say so with the output; if a step was skipped, say that.⚠️诚实报告也是一条硬线—— 不只是别做坏事还包括别美化结果。六、哲学五记忆是分类型的文件6.1 四种记忆类型Claude Code 的持久记忆不是一锅粥而是带类型标签的文件类型记什么例子user用户是谁角色、专长、偏好feedback用户给的工作指导“别写 JVM就写垃圾回收”含 whyproject项目目标与约束用绝对日期不用上周reference外部资源指针URL、看板、工单每个文件带 frontmatter--- name: csdn-blog-style description: CSDN 技术博客写作风格规范 metadata: type: project --- 博客遵循固定骨架封面图 → 标题 → 引言 → 目录 → 正文 → 总结 → 标签。6.2 MEMORY.md 是索引不是内容MEMORY.md ← 每次会话都加载一行一条做召回 ├─ csdn-blog-style.md ← 具体内容按需读取 ├─ user-preference.md └─ project-goal.md文件何时进上下文作用MEMORY.md总是索引决定要不要细看单个记忆文件相关时正文6.3 为什么用文件而不是向量库维度文件 索引向量库可读人直接打开就能改需要工具可审计git 可 diff黑盒可删删文件即失效需重建索引内容只存非显而易见的事容易存成代码复述⚠️关键约束提示词明确写了 ——不要存代码结构、git 历史、CLAUDE.md 里已有的东西。记忆的价值在于代码里读不出来的事实。七、总结7.1 核心要点分层身份/安全在最顶风格在最底项目配置只能动下面两层静动分离稳定原则写死易变事实运行时注入事实与指令分开给模型准确事实让它自己判断而不是替它决策权限优于禁令边界靠机制兜底文字只做说明不可逆/外向操作先确认记忆分类型且文件化索引进上下文正文按需读只存代码里读不出的东西7.2 最后的话核心观点写好系统提示词的关键不是把要求堆得更多而是把不同性质的内容分开—— 硬的和软的分开、稳定的和易变的分开、事实和指令分开。分开之后模型才知道哪条不能碰、哪条可以商量。记住面试/面试官视角系统提示词 Agent 的操作系统决定行为可靠性工程实践静态内核可缓存省 token动态部分才需要每轮拼装进阶方向CLAUDE.md层级继承、子 Agent 的提示词隔离、上下文压缩后的摘要续跑标签Claude Code, 系统提示词, Prompt Engineering, AI Agent, 上下文工程, 权限模型
返回列表