Appearance
System Prompt就是Agent的“操作系统“,所有的底层规则都写在这里
指责可以归为五类
- 角色定义和行为准则
- 告诉模型“你是谁”,约束语气、风格、边界
- 工具使用规范和约束
- agent最核心的能力是能调用工具,System prompt要告诉模型有哪些工具能用,每个工具怎么调,什么场景用什么
- 输出格式要求
- 规定模型以什么格式回复,比如json还是markdown
- 安全与权限控制
- 设定模型不能做什么,给ai划红线
如何解决System Prompt越来越长的问题
- 拆,把SystemPrompt按照职责拆成独立模块,每个模块管一件事
- 选,根据当前任务场景只注入相关模块,不需要的不用塞进去
- 扔,把稳定不变的知识从prompt拿出去,放到外部文件或者知识库里,需要的时候让ai调工具自己去读
模块化组装方案
以OpenClaw为例,它的system prompt就是拆分成十几个独立模块
- 第一层 基础身份与安全(每次必加)
- 身份生命
- 安全红线
- 工具列表
- 工具调用风格,例如敏感工具要先跟用户确认
- 第二层 场景能力模块(按需加载)
- 技能提示,告诉agent有哪些技能可以激活
- 记忆召回,指导模型回答前先搜索历史记忆,避免失忆
- 消息路由
- 语音合成
- 第三层 动态运行时的上下文(每次请求动态生成)
- 当前时间、工作目录、操作系统等环境信息
- 授权白名单列表
- 沙箱信息
- 项目配置文件的内容
还可以利用分级加载
- 完整模式:加载全部模块,主agent用
- 精简模式:子agent用,只保留工具列表、工作目录、运行时信息等核心模块,不需要路由、心跳等
- 最小模式:只返回一句身份证明
插件化扩展机制(扩展相关)
如果要支持第三方插件向system prompt注入内容
直接弄个hook
- 替换系统提示
- 系统提示头部追加
- 系统提示尾部追加
- 对话层注入
