系统 Prompt

OpenClaw 为每次 agent 运行构建一个自定义的系统 prompt。这个 prompt 由 OpenClaw 自行管理,不使用 pi-coding-agent 的默认 prompt。

系统 prompt 由 OpenClaw 组装,并注入到每次 agent 运行中。

结构

Prompt 刻意保持紧凑,使用固定的段落:

  • Tooling:当前工具列表 + 简短描述。
  • Safety:简短的安全护栏提醒,避免模型产生权力寻求行为或绕过监督。
  • Skills(如有):告诉模型如何按需加载技能指令。
  • OpenClaw Self-Update:如何运行 config.applyupdate.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;省略 SkillsMemory RecallOpenClaw Self-UpdateModel AliasesUser IdentityReply TagsMessagingSilent RepliesHeartbeats。Tooling、Safety、Workspace、Sandbox、Current Date & Time(已知时)、Runtime 和注入上下文保持可用。
  • none:只返回基础身份行。

promptMode=minimal 时,额外注入的 prompt 标记为 Subagent Context 而非 Group Chat Context

工作空间引导注入

引导文件经裁剪后追加到 Project Context 中,让模型无需显式读取就能看到身份和配置上下文:

  • AGENTS.md
  • SOUL.md
  • TOOLS.md
  • IDENTITY.md
  • USER.md
  • HEARTBEAT.md
  • BOOTSTRAP.md(仅在全新工作空间)
  • MEMORY.md(存在时),否则尝试小写的 memory.md

这些文件全部注入到每一轮的上下文窗口中,也就是说它们会消耗 token。请保持它们简洁——尤其是 MEMORY.md,它可能随时间增长,导致意料之外的高上下文占用和更频繁的压缩。

注意: memory/*.md 每日文件不会自动注入。它们按需通过 memory_searchmemory_get 工具访问,所以除非模型主动读取,否则不占用上下文窗口。

过大的文件会被截断并标记。单文件大小上限由 agents.defaults.bootstrapMaxChars 控制(默认:20000)。所有注入的引导内容总量受 agents.defaults.bootstrapTotalMaxChars 限制(默认:150000)。文件不存在时会注入一条简短的缺失标记。发生截断时,OpenClaw 可以在 Project Context 中注入警告块;通过 agents.defaults.bootstrapPromptTruncationWarning 控制(offoncealways;默认:once)。

子 agent 会话只注入 AGENTS.mdTOOLS.md(其他引导文件被过滤掉,以保持子 agent 上下文精简)。

内部钩子可以通过 agent:bootstrap 拦截此步骤来修改或替换注入的引导文件(例如将 SOUL.md 替换为另一个角色设定)。

要查看每个注入文件的上下文贡献(原始 vs 注入大小、截断情况,以及工具 schema 开销),使用 /context list/context detail。参见 Context

时间处理

系统 prompt 在用户时区已知时包含一个 Current Date & Time 段落。为了保持 prompt 缓存稳定,现在只包含时区信息(不含动态时钟或时间格式)。

当 agent 需要当前时间时,使用 session_status;状态卡片中包含时间戳行。

配置项:

  • agents.defaults.userTimezone
  • agents.defaults.timeFormatauto | 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(只在缺少访问权限时才询问用户)。