系统 Prompt
OpenClaw 为每次 agent 运行构建一个自定义的系统 prompt。这个 prompt 由 OpenClaw 自行管理,不使用 pi-coding-agent 的默认 prompt。
系统 prompt 由 OpenClaw 组装,并注入到每次 agent 运行中。
结构
Prompt 刻意保持紧凑,使用固定的段落:
- Tooling:当前工具列表 + 简短描述。
- Safety:简短的安全护栏提醒,避免模型产生权力寻求行为或绕过监督。
- Skills(如有):告诉模型如何按需加载技能指令。
- OpenClaw Self-Update:如何运行
config.apply和update.run。 - Workspace:工作目录(
agents.defaults.workspace)。 - Documentation:OpenClaw 文档的本地路径(仓库或 npm 包),以及何时查阅。
- Workspace Files (injected):标示引导文件已包含在下方。
- Sandbox(启用时):标示沙箱运行时、沙箱路径,以及是否有提权执行能力。
- Current Date & Time:用户本地时间、时区和时间格式。
- Reply Tags:支持的服务商的可选回复标签语法。
- Heartbeats:心跳 prompt 和确认行为。
- Runtime:主机、操作系统、node、模型、仓库根目录(检测到时)、思考级别(一行)。
- Reasoning:当前可见性级别 + /reasoning 切换提示。
系统 prompt 中的安全护栏是建议性的。它们引导模型行为但不强制执行策略。硬性约束请使用工具策略、执行审批、沙箱和渠道允许列表;运维人员可以按需禁用这些限制。
Prompt 模式
OpenClaw 可以为子 agent 渲染更精简的系统 prompt。运行时会为每次运行设置一个 promptMode(不是面向用户的配置):
full(默认):包含上述所有段落。minimal:用于子 agent;省略 Skills、Memory Recall、OpenClaw Self-Update、Model Aliases、User Identity、Reply Tags、Messaging、Silent Replies 和 Heartbeats。Tooling、Safety、Workspace、Sandbox、Current Date & Time(已知时)、Runtime 和注入上下文保持可用。none:只返回基础身份行。
当 promptMode=minimal 时,额外注入的 prompt 标记为 Subagent Context 而非 Group Chat Context。
工作空间引导注入
引导文件经裁剪后追加到 Project Context 中,让模型无需显式读取就能看到身份和配置上下文:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(仅在全新工作空间)MEMORY.md(存在时),否则尝试小写的memory.md
这些文件全部注入到每一轮的上下文窗口中,也就是说它们会消耗 token。请保持它们简洁——尤其是 MEMORY.md,它可能随时间增长,导致意料之外的高上下文占用和更频繁的压缩。
注意:
memory/*.md每日文件不会自动注入。它们按需通过memory_search和memory_get工具访问,所以除非模型主动读取,否则不占用上下文窗口。
过大的文件会被截断并标记。单文件大小上限由 agents.defaults.bootstrapMaxChars 控制(默认:20000)。所有注入的引导内容总量受 agents.defaults.bootstrapTotalMaxChars 限制(默认:150000)。文件不存在时会注入一条简短的缺失标记。发生截断时,OpenClaw 可以在 Project Context 中注入警告块;通过 agents.defaults.bootstrapPromptTruncationWarning 控制(off、once、always;默认:once)。
子 agent 会话只注入 AGENTS.md 和 TOOLS.md(其他引导文件被过滤掉,以保持子 agent 上下文精简)。
内部钩子可以通过 agent:bootstrap 拦截此步骤来修改或替换注入的引导文件(例如将 SOUL.md 替换为另一个角色设定)。
要查看每个注入文件的上下文贡献(原始 vs 注入大小、截断情况,以及工具 schema 开销),使用 /context list 或 /context detail。参见 Context。
时间处理
系统 prompt 在用户时区已知时包含一个 Current Date & Time 段落。为了保持 prompt 缓存稳定,现在只包含时区信息(不含动态时钟或时间格式)。
当 agent 需要当前时间时,使用 session_status;状态卡片中包含时间戳行。
配置项:
agents.defaults.userTimezoneagents.defaults.timeFormat(auto|12|24)
完整行为详见 Date & Time。
Skills
当有符合条件的 skill 时,OpenClaw 注入一个紧凑的可用技能列表(formatSkillsForPrompt),其中包含每个 skill 的文件路径。Prompt 指示模型使用 read 工具加载对应位置(工作空间、托管或内置)的 SKILL.md。如果没有符合条件的 skill,Skills 段落会被省略。
<available_skills>
<skill>
<name>...</name>
<description>...</description>
<location>...</location>
</skill>
</available_skills>
这样可以保持基础 prompt 精简,同时支持针对性的技能调用。
文档
可用时,系统 prompt 包含一个 Documentation 段落,指向本地 OpenClaw 文档目录(仓库工作空间中的 docs/ 或内置 npm 包文档),同时注明公开镜像、源码仓库、社区 Discord 和 ClawHub(https://clawhub.com)用于技能发现。Prompt 指示模型优先查阅本地文档来了解 OpenClaw 的行为、命令、配置或架构,并尽量自行运行 openclaw status(只在缺少访问权限时才询问用户)。