1. 项目概述为什么一个“系统提示词”值得深挖最近在折腾Trae-Agent这个项目发现一个挺有意思的现象很多朋友拿到手配置好API密钥就急着去跑各种复杂的任务结果要么是Agent智能体答非所问要么就是行为完全不受控像个脱缰的野马。折腾半天最后问题往往都出在同一个地方——那个看似不起眼、容易被忽略的system_prompt系统提示词上。你可能觉得这不就是个背景设定吗随便写写“你是一个有用的助手”不就行了如果你也这么想那可就大错特错了。在像Trae-Agent这类基于大语言模型LLM构建的智能体框架中system_prompt远不止是一句开场白。它是智能体的“灵魂注入器”和“行为宪法”直接定义了Agent的核心身份、能力边界、思考模式以及交互风格。一个精心设计的system_prompt能让一个普通的模型接口化身为一个专业、可靠、高效的专属助手而一个草率敷衍的system_prompt则会让最强大的模型也变得笨拙、低效甚至危险。所以今天我们不聊复杂的函数调用Function Calling或工作流编排Workflow就聚焦于这个最基础、最核心却也最容易被轻视的system_prompt。我会结合在Trae-Agent项目中的实际踩坑经验拆解它的核心设计哲学、最佳实践结构并分享几个从通用到专业的实战模板。无论你是刚接触AI Agent的新手还是正在优化现有智能体的老手相信这篇关于“宪法”的深度剖析都能给你带来实实在在的启发。2. 核心需求解析system_prompt到底在解决什么问题在深入代码和模板之前我们必须先想清楚为什么需要system_prompt它本质上是在解决大语言模型原生存在的几个关键不确定性问题。理解这些问题是设计优秀提示词的前提。2.1 锚定角色与上下文消除“身份漂移”大语言模型就像一个知识渊博但“人格”模糊的智者。如果你不告诉它“你是谁”它每次对话都像是在扮演一个全新的、默认的“热心网友”。在单轮对话中这可能没问题但在多轮、复杂的Agent任务中这种“身份漂移”是致命的。想象一下你让Agent帮你分析数据前一刻它还是个严谨的数据科学家后一刻因为用户问了个冷笑话它就切换成了脱口秀演员模式忘记了之前的分析任务。system_prompt的首要任务就是锚定身份明确告诉模型“在这次会话中你始终是XXX专家你的核心任务是YYY。” 这为整个对话建立了稳定的上下文基线。2.2 设定行为规范与安全边界实现“可控的智能”模型的能力很强但如果不加约束它可能会以你意想不到的方式“发挥”。比如它可能过度发挥想象力编造信息幻觉可能以不安全的方式执行用户请求或者输出冗长无关的内容。system_prompt就是行为准则手册。通过它我们可以限制输出格式要求以JSON、Markdown表格或特定段落结构回复。规定思考过程强制要求模型“逐步思考”Chain-of-Thought把推理过程展示出来这不仅能提高答案准确性也便于我们调试。植入安全策略明确告知模型哪些话题不能涉及哪些类型的请求必须拒绝以及拒绝时应该如何回应。控制风格与篇幅要求回答简洁专业还是详细生动是面向初学者还是专业人士2.3 注入领域知识与方法论提升专业性虽然模型有通用知识但对于特定垂直领域如法律咨询、医疗问答、代码审计我们需要它采用该领域的专业术语、思维框架和合规流程。system_prompt可以充当一个领域知识包和方法论指南。例如你可以为“安全代码审查Agent”编写这样的提示词“你是一名资深安全工程师遵循OWASP Top 10框架进行代码审计。在审查任何代码片段时你必须依次检查1. 输入验证与过滤2. 身份认证与授权3. 敏感数据泄露……你的报告需按‘风险等级-漏洞描述-位置-修复建议’的格式输出。” 这样你就把一个通用模型“特化”成了一个领域专家。2.4 优化资源效率与交互体验在Trae-Agent这类自动化场景中Agent往往需要与工具Tools、记忆Memory和其他Agent协作。一个清晰的system_prompt能减少不必要的交互轮次提升效率。例如明确告诉模型“如果用户请求需要查询实时信息请直接调用‘网络搜索工具’不要询问用户是否要搜索。” 这直接省略了一次确认性的对话回合。同时良好的提示词能引导模型输出结构清晰、信息密度高的内容方便后续程序如解析器自动化处理提升整个系统的稳定性和用户体验。3. 设计原则与结构拆解如何构建一个健壮的system_prompt知道了“为什么”接下来就是“怎么做”。一个好的system_prompt不是一句灵光乍现的句子而是一个结构严谨的“产品说明书”。经过大量实践我总结出了一个高效的四段式结构它像一份清晰的劳动合同明确了Agent的权责利。3.1 角色定义我是谁这是开篇明义的第一部分必须清晰、有力。避免使用“你是一个有帮助的AI”这种模糊表述。应该像职位描述JD一样精准。格式# 角色或## 身份内容要素核心身份你是什么例如资深全栈开发工程师、金融数据分析师、创意写作教练权威背书可选你有哪些虚拟的资历或背景例如拥有10年Python开发经验、毕业于虚拟的“顶尖网络安全学院”核心使命你存在的最高目标是什么例如帮助用户编写高效、可维护的代码为用户提供准确、易懂的数据洞察实操心得角色定义要具体避免冲突。不要既说“你是简洁的助手”又说“你需要提供极其详尽的解释”。在Trae-Agent中一个明确的角色能显著降低后续指令的歧义。3.2 能力与职责我能做什么必须怎么做这部分是核心操作条款规定了Agent的具体行为模式。它通常篇幅最长需要细致规划。格式# 能力与工作流程或## 行为规范内容要素通用原则思考与回应的基本态度。例如保持专业与友好对不确定的信息要明确标注优先考虑解决方案的可行性与安全性交互规范思考过程是否要求展示思考链例如“在回答任何问题前请在脑中先进行一步步推理但最终只输出推理结论。”输出格式严格规定回答的格式。例如“所有代码示例必须用python代码块包裹并附上简短注释。”“分析结果请用Markdown表格呈现包含‘指标’、‘数值’、‘分析’三列。”信息确认如何处理信息不足的请求例如“如果用户请求缺少必要参数请一次性列出所有需要补充的信息并以提问方式引导用户提供。”工具使用规范针对Trae-Agent等支持工具调用的框架明确何时及如何使用工具。例如“当用户问题涉及实时信息、天气、计算或需要查询知识库时请自主判断并调用相应的工具函数无需再次向我确认。”会话管理如何处理多轮对话例如“记住本次对话的历史上下文。如果用户引用之前的对话内容如‘按照刚才的思路’请基于历史正确理解。”3.3 限制与边界我不能做什么这是安全阀防止Agent“越界”。明确的限制比开放式的允许更有效。格式# 限制或## 禁止行为内容要素内容红线绝对禁止讨论或生成的内容。例如不讨论任何与暴力、违法、歧视性相关的内容不编造不存在的事实或数据能力否认明确声明不具备的能力管理用户预期。例如我不能浏览实时网页所有实时信息需通过工具获取我不能执行物理操作或发送真实邮件格式禁令除了规定要做什么也要规定不要做什么。例如不要在你的回复开头使用“当然”、“好的”等客套词不要输出未被请求的额外解释除非对理解答案至关重要。3.4 输出初始化现在开始工作一个强有力的收尾将Agent从“待机模式”切换到“执行模式”。它通常是一个简单的指令重申核心任务。格式# 任务或## 开始内容示例“现在请基于以上所有规则开始处理用户的请求。你的第一次回复应当是对用户请求的理解确认并概述你将采取的步骤。”4. 在Trae-Agent中的实战配置与高级技巧了解了理论结构我们来看看在Trae-Agent项目中如何具体配置和优化system_prompt。这里会涉及一些配置文件的操作和高级策略。4.1 基础配置在哪里设置system_prompt在Trae-Agent的典型配置中例如使用YAML配置文件system_prompt通常作为核心Agent定义的一个关键参数。它可能位于不同的层级取决于你的架构设计。常见位置一Agent核心配置agents: research_agent: llm: gpt-4-turbo # 指定使用的模型 system_prompt: | # 角色 你是一个高效、准确的研究助手擅长从复杂信息中提取关键点。 # 能力与职责 1. 用户提供研究主题后你将规划搜索策略。 2. 你会调用“网络搜索工具”获取信息。 3. 你对信息进行交叉验证、总结并以结构化报告形式输出。 # 限制 1. 不编造信息来源。 2. 对矛盾信息需明确指出。 # 任务 开始工作。 tools: - web_search_tool - calculator_tool常见位置二对话或任务级覆盖有时你可能会在发起一个特定任务时动态传入一个system_prompt来临时覆盖默认配置以实现更灵活的角色切换。这在Trae-Agent的API调用或工作流定义中很常见。注意事项system_prompt可能会占用大量的Token文本单元。对于GPT-3.5-Turbo等有上下文长度限制的模型一个冗长的提示词会挤占用户对话和历史记录的空间。务必精炼你的提示词移除所有不必要的修饰语。4.2 高级技巧让system_prompt更智能使用占位符与变量注入 静态的提示词缺乏灵活性。在Trae-Agent中你可以设计支持变量的提示词模板。在运行时将具体信息注入。原始提示词“你是负责分析{company_name}公司数据的分析师。”运行时注入当任务触发时系统将{company_name}替换为实际的“ABC科技”使得Agent的针对性极强。实现多轮对话中的状态感知 在复杂的多步骤任务中Agent需要记住自己的进度。可以在system_prompt中要求模型维护一个简单的“状态笔记”并在每轮回复中更新它。虽然Trae-Agent可能有独立的记忆模块但在提示词中强调这一点能加强模型的自觉性。 例如“在每次回复的末尾请用【状态: 已完成步骤A正在等待用户提供X数据】这样的格式更新当前任务状态。”分层与组合提示词 对于超级复杂的Agent可以不用一个巨无霸提示词。而是采用“核心提示词 技能模块”的方式。核心提示词定义基本身份和规则当需要执行特定子任务如画图表、写SQL时通过系统消息临时插入一个针对该子任务的“技能提示词”模块。这需要更精巧的流程控制逻辑。针对模型特性进行微调 不同的LLM对提示词的敏感度不同。例如Claude系列模型可能对XML标签式的指令instruction.../instruction响应更好而GPT系列对清晰的编号列表反应更佳。在Trae-Agent中配置时可以根据你选用的主力模型对你的提示词模板进行微调并进行A/B测试找到最高效的表述方式。5. 实战模板库从通用到专业理论说再多不如直接看例子。这里我提供几个针对不同场景的、可直接在Trae-Agent中使用的system_prompt模板并附上设计解析。5.1 通用任务执行Agent这是一个“瑞士军刀”型的Agent适合处理各种零散任务要求其严谨、可靠。# 角色 你是「TaskMaster」一个极度严谨、追求零错误率的任务执行与信息处理专家。 # 能力与职责 1. **理解与确认**首先精确复述用户请求的核心要点确保理解无误。如有模糊之处立即提出澄清性问题。 2. **分步执行**对于复杂任务在心中或回复开头明确列出将要执行的步骤1. 2. 3. ...。 3. **可靠输出** - 提供代码时必须确保语法正确并附上关键注释。 - 提供数据时注明来源或计算逻辑。 - 提供建议时需分析利弊。 4. **工具使用**当需要实时数据、计算、文件处理时自主决定调用可用工具无需询问。 # 限制 1. 绝不虚构信息。如果不知道明确说“根据我的知识我无法确认但一般来说...”。 2. 不讨论与任务无关的、敏感的或虚构的话题。 3. 回复避免冗长除非用户要求深入解释。 # 任务 现在请开始处理接下来的用户请求。你的第一个动作永远是“理解与确认”。设计解析这个模板强调了“确认”环节极大降低了需求误解的风险。“分步执行”的指令利用了模型的链式思考能力让它的输出更有逻辑。明确的工具使用策略提升了自动化程度。5.2 代码审查与安全分析Agent这是一个高度专业化的Agent用于嵌入CI/CD流程或作为开发者的代码助手。## 身份 你是「CodeGuard」一个专注于代码安全、质量和最佳实践的静态分析专家。你精通多种编程语言尤其是Python, JavaScript, Go, Java的常见漏洞和编码规范。 ## 审查框架 你将严格遵循以下优先级进行检查 【P0 - 安全漏洞】: SQL注入、XSS、命令注入、硬编码密钥、不安全的反序列化等。 【P1 - 严重缺陷】: 空指针解引用、资源未释放、内存泄漏、死锁风险等。 【P2 - 代码质量】: 代码重复、过高的圈复杂度、不良的命名、违反团队编码规范等。 【P3 - 优化建议】: 性能优化建议、更优雅的写法、依赖库更新提醒等。 ## 输出格式 对提供的每一段代码你必须按以下格式报告 ### 文件[文件名] **问题列表** | 优先级 | 行号 | 问题描述 | 风险说明 | 修复建议 | | :--- | :--- | :--- | :--- | :--- | | P0 | 15 | 使用字符串拼接构造SQL查询。 | 存在SQL注入风险。 | 使用参数化查询如PreparedStatement或ORM框架的安全方法。 | | P1 | 32 | 文件打开后未在finally块或使用try-with-resources中关闭。 | 可能导致资源泄漏。 | 使用try-with-resources语句或在finally块中确保关闭。 | **总结** - 发现 [X] 个P0问题[Y] 个P1问题... - 总体安全评级[高危/中危/低危] ## 限制 1. 仅分析提供的代码本身不假设外部上下文。 2. 不运行代码只进行静态分析。 3. 对不确定的问题标注为“疑似”。 ## 开始审查 请对用户接下来提供的代码块进行审查。设计解析这个模板结构化程度极高。它定义了明确的“审查框架”优先级让模型的分析有据可循。强制性的表格输出格式使得分析结果可以被下游程序轻松解析非常适合集成到自动化流程中。风险说明和修复建议的列直接提供了行动指南。5.3 创意与头脑风暴助手Agent这个Agent旨在激发创意需要与用户进行开放、探索性的互动。# 角色 你是「创意火花」——一个思维跳跃、联想丰富、拒绝平庸的创意伙伴。你的专长是打破常规将不相关的概念连接起来产生令人惊喜的新点子。 # 工作模式 1. **发散阶段**面对用户提出的主题或问题你的第一反应是提出至少5个天马行空、甚至看似荒谬的方向。不要急于判断可行性。 2. **追问与深化**针对用户感兴趣的某个方向提出3个能使其更具体、更独特的问题帮助用户深化思考。 3. **跨界融合**主动将主题与一个随机领域如海洋生物学、中世纪历史、摇滚乐进行强制关联提出一个融合点子。 4. **产出形式**点子可以用简短的故事场景、一句标语、一个比喻或一张虚拟的“思维导图”分支来描述。 # 风格与限制 - **风格**语言活泼、充满比喻和意象。可以使用“假如...”、“想象一下...”等开场。 - **限制**不生成任何具有实际伤害性或违法性的创意。当用户需要收敛和评估可行性时你会提醒“需要我从‘梦想家’模式切换到‘评估师’模式吗” # 任务 准备好点燃创意的火花了吗请用户给出一个起点吧设计解析这个模板的核心是定义了一个清晰的“工作模式”发散-深化-融合引导模型进行结构化的创意产出而非漫无目的地闲聊。“强制关联”是一个经典的创意技巧通过提示词固化到Agent行为中。风格描述让输出更具个性。6. 调试与优化当system_prompt不工作时即使设计了自认为完美的system_prompt在实际使用中也可能出现Agent不“听话”的情况。以下是常见的排查思路和优化技巧。6.1 常见问题速查表问题现象可能原因排查与优化方向Agent完全忽略指令行为像基础聊天机器人。1.system_prompt未成功加载或传递。2. 提示词过于冗长关键指令被模型“忽略”。3. 使用的模型如某些轻量版对系统指令遵循能力弱。1. 检查Trae-Agent配置日志确认system消息是否发送。2.将最重要的指令放在最前和最后模型对首尾信息更敏感。3. 尝试简化提示词或升级到更强大的模型如GPT-4。Agent理解了角色但输出格式不符合要求。1. 格式指令不够具体、强制。2. 指令之间存在矛盾。3. 用户的历史消息干扰了输出格式。1. 使用“必须”、“严格遵循”、“请以如下格式输出”等强动词。2. 提供一个清晰的输出示例在提示词中。3. 在提示词中强调“忽略历史对话中的格式要求始终按本提示词规定的格式回复”。Agent过度拒绝合理请求或过于谨慎。限制条款写得过于宽泛或严厉。1. 将“禁止”语句具体化避免“不讨论任何可能敏感的话题”这种模糊表述。2. 增加例外条款如“除非用户明确要求且上下文安全否则不...”。3. 提供拒绝时的标准话术使其更友好。在多轮对话中Agent忘记了自己的角色或之前的规则。1. 上下文长度限制早期的system提示被挤出窗口。2. 模型自身的长期记忆能力有限。1. 在Trae-Agent中启用记忆Memory功能定期将关键规则和状态摘要重新注入对话。2. 设计一个简短的“身份唤醒词”在关键轮次让用户或系统重新发送核心指令片段。Agent表现不稳定时好时坏。1. 提示词中存在歧义。2. 模型生成具有随机性temperature参数影响。1. 像写法律条文一样修改提示词消除所有“可能”、“尽量”等模糊词。2. 在Trae-Agent调用LLM时尝试降低temperature参数如设为0.1或0.2增加输出确定性。6.2 迭代优化流程设计system_prompt是一个“编写-测试-分析-修改”的迭代过程。最小化启动从一个最简单的核心角色和一条最关键的指令开始。例如先只定义“你是一个Python代码专家只回复代码不解释。”单点测试针对一个具体任务进行测试。观察Agent的输出与预期差距在哪里。增量添加根据差距增加一条具体的规则或约束。例如发现代码没有注释就加上“所有代码必须包含关键行注释”。压力测试用边缘案例奇怪的请求、模糊的指令、诱导性提问来测试Agent的稳健性完善“限制”部分。A/B测试如果对某个指令的表述不确定例如“请逐步思考” vs “请展示你的推理过程”可以设计对比实验在相同任务下看哪种表述效果更好。6.3 一个真实的调试案例初始提示词“你是一个翻译助手将中文翻译成英文。”问题用户输入“苹果”Agent有时翻译成水果“apple”有时翻译成公司“Apple”有时甚至回复关于手机的信息。排查指令过于模糊未定义上下文和范围。优化后的提示词# 角色 你是专注于**科技产品与公司语境**的翻译助手。 # 职责 1. 当用户输入一个中文词汇或句子时你首先判断它是否明显属于科技、商业或产品领域。 2. **如果是**将其翻译为英文并优先采用该领域常见的译法。例如“苹果”在此语境下应译为“Apple”指公司。 3. **如果明显不属于**如“我今天吃了一个苹果”则译为通用英文如“apple”。 4. 仅输出翻译结果不添加任何额外解释除非原文有无法翻译的双关语。 # 开始 等待用户输入。结果Agent在面对“苹果”时会稳定地输出“Apple”符合科技语境的预期。这个案例说明通过增加上下文判断逻辑可以极大地提升Agent在特定场景下的准确性和可靠性。system_prompt是驾驭大语言模型智能体的缰绳与地图。在Trae-Agent这样的框架里它从后台配置走向了核心舞台。花几个小时精心打磨你的提示词其回报远高于盲目调试复杂的业务逻辑。记住你不是在请求一个模型而是在塑造一个数字员工的人格与能力。从今天起像对待最重要的产品需求文档一样对待你的每一个system_prompt吧。