OpenClaw 的 系统提示词是每次代理运行时,由 OpenClaw 自己动态组装并注入给模型的。它完全由 OpenClaw 掌控,目的是让模型每次都知道当前环境、规则和上下文,同时尽量保持简洁高效。
系统提示词的基本结构
系统提示词被分成几个清晰的固定部分,按顺序拼在一起。主要包括:
- Tooling:当前可用的所有工具列表,以及每个工具的简短描述。
- Safety:简短的安全提醒,告诉模型不要追求权力或绕过监管(这只是建议,不是硬性强制)。
- Skills(如果有可用技能):用 XML 格式列出可用的技能名称、描述和文件位置,告诉模型需要时用
read工具去加载对应的SKILL.md文件。 - OpenClaw Self-Update:如何使用
config.apply和update.run来更新自己的配置。 - Workspace:当前工作目录的路径(来自配置里的
agents.defaults.workspace)。 - Documentation:本地 OpenClaw 文档的路径(仓库里的 docs/ 或 npm 包里),同时给出公共镜像、源码仓库、Discord 社区和 ClawHub的链接。提示模型优先查本地文档,尽量自己运行
openclaw status而不是问用户。 - Workspace Files (injected):一个标记,说明下面会注入工作空间里的引导文件(Project Context)。
- Sandbox(沙箱开启时):说明当前是沙箱环境、路径,以及是否允许提升权限执行。
- Current Date & Time(知道用户时区时):只包含用户的时区(不会放实时时间,避免缓存问题)。实际当前时间要通过
session_status工具获取。 - Reply Tags(部分渠道支持时):回复标签的语法。
- Heartbeats:心跳机制的提示和确认方式。
- Runtime:主机、操作系统、Node 版本、当前模型、仓库根目录(如果检测到),以及思考层级。
- Reasoning:当前推理可见级别,以及如何用
/reasoning命令切换的提示。
这些部分共同组成一个紧凑的系统提示,确保模型知道自己在什么环境下、能做什么、该怎么做。
提示词模式(Prompt Modes)
OpenClaw 有三种模式,默认是 full(完整模式),包含上面几乎所有内容。
- minimal(精简模式):主要用于子代理(sub-agents)。会去掉 Skills、Self-Update、心跳、回复标签等比较重的部分,只保留核心的工具、安全、工作空间、运行时等。注入的内容会标成 Subagent Context 而不是群聊上下文。子代理会话只注入
AGENTS.md和TOOLS.md,其他文件都过滤掉,目的是节省 token。 - none:最极端,只返回一行基本的身份描述。
模式由运行时内部决定,一般用默认的 full 就行。
工作空间文件注入(最重要的一部分)
每次运行都会把 workspace 里的几个关键文件自动“塞”进提示词的 Project Context 部分,让模型不用每次都去读文件就能知道你的偏好和规则。这些文件是:
AGENTS.md(操作指令和记忆)SOUL.md(人格、边界、语气)TOOLS.md(工具使用笔记和约定)IDENTITY.md(代理名字、风格、emoji)USER.md(你的资料和称呼偏好)HEARTBEAT.mdBOOTSTRAP.md(只在新 workspace 第一次运行时)MEMORY.md(如果存在,否则 fallback 到memory.md)
这些文件每次都会注入,所以会占用 token。
如果你有 memory/*.md 这种每天的记忆文件,它们不会自动注入,必须用 memory_search 或 memory_get 工具按需读取,避免浪费上下文。
文件太大时会有限制:
- 单个文件最多
agents.defaults.bootstrapMaxChars(默认 20,000 字符) - 所有注入内容总和最多
agents.defaults.bootstrapTotalMaxChars(默认 150,000 字符) - 超出的部分会被截断,并加上标记。
- 文件缺失时会插入一个简短的“missing file”提示。
- 截断警告默认只显示一次(
once),也可以设成always或off。
想修改注入过程,可以用内部钩子 agent:bootstrap(比如换掉 SOUL.md 换成别的角色)。
检查注入情况:可以用命令 /context list 或 /context detail,能看到原始内容 vs 注入后的大小、是否截断、工具 schema 占了多少 token 等。
技能(Skills)的处理
如果有可用的技能,提示词里会加一个简短的可用技能列表(包含名字、描述、文件位置)。模型不会自动加载技能内容,而是告诉你用 read 工具去读对应位置的 SKILL.md。这样基础提示词就能保持很小,只有真正需要时才加载。
时间和配置相关
- 当前日期时间部分只放时区(通过
agents.defaults.userTimezone设置)。 - 为了让提示词缓存更稳定,不会把实时时间写死进去。
- 安全提醒只是指导性的,最终安全靠工具策略、沙箱、执行审批、渠道白名单等机制来硬性控制。
新手要注意的事
- Token 消耗:因为引导文件每次都注入,
AGENTS.md、SOUL.md、MEMORY.md等文件一定要写得简洁。写得太长很容易把上下文塞满,导致频繁压缩或模型表现变差。 - 建议经常用
/context命令检查当前上下文占用情况。 - 记忆类内容最好放到
memory/文件夹,用搜索工具读取,而不是全塞进MEMORY.md。 - 安全部分只是提醒,不是万能的防护墙。
总体来说,OpenClaw 的系统提示词设计得很工程化:结构清晰、模块化、可控,同时尽量节省 token。它把环境信息、你的个性化设置、可用工具和技能都打包好交给模型,让代理每次启动时状态都很一致。
如果你刚开始用,重点先把 workspace 里的 AGENTS.md、SOUL.md、TOOLS.md、IDENTITY.md 和 USER.md 写清楚,这些内容会直接影响模型的行为和语气。