Appearance
System Prompt(系统 Prompt)
OpenClaw 为每次 agent 运行构建自定义系统 Prompt,不使用 pi-coding-agent 默认 Prompt,完全由 OpenClaw 自己组装注入。
Provider Plugin 可以贡献感知缓存的 Prompt 引导,而无需替换整个 Prompt。Provider 运行时可以:
- 替换少量命名的核心区块(
interaction_style、tool_call_style、execution_bias) - 在 Prompt Cache 边界上方注入稳定前缀
- 在 Prompt Cache 边界下方注入动态后缀
Prompt 结构
Prompt 刻意保持紧凑,使用固定区块:
| 区块 | 说明 |
|---|---|
| Tooling | 结构化工具真理源提醒 + 运行时工具使用指引 |
| Safety | 短防护提醒,避免寻求权力或绕过监督 |
| Skills(可用时) | 告知模型如何按需加载 Skill 指令 |
| OpenClaw 自更新 | 如何安全检查/修改/替换配置,以及 update.run 仅在用户明确请求时运行 |
| Workspace | 工作目录(agents.defaults.workspace) |
| Documentation | 本地 OpenClaw 文档路径(仓库或 npm 包)及何时阅读 |
| Workspace Files | 标记 Bootstrap 文件将在下方注入 |
| Sandbox(启用时) | 沙箱路径和是否有提权 exec |
| 当前日期时间 | 用户本地时区(当已知时) |
| Reply Tags | 支持该功能的 Provider 的回复标签语法 |
| Heartbeats | Heartbeat Prompt 和 ack 行为 |
| Runtime | 主机、OS、Node、模型、仓库根目录(检测到时)、thinking 级别 |
| Reasoning | 当前可见性 + /reasoning 切换提示 |
长时任务指引
Tooling 区块还包含长时运行工作的运行时指引:
- 用 cron 处理未来跟进("回头看"、提醒、周期任务),不要用
execsleep 循环或yieldMs延迟技巧 - 仅在命令需要立即启动并继续在后台运行时才用
exec/process - 启用自动完成唤醒时,启动一次命令并依赖基于推送的唤醒路径
- 任务较大时优先用
sessions_spawn;子代理完成基于推送,自动回报给请求者
Prompt 模式
| 模式 | 使用场景 | 省略内容 |
|---|---|---|
full(默认) | 正常 agent | 无 |
minimal | 子代理 | Skills、Memory Recall、OpenClaw 自更新、Model Aliases、User Identity、Reply Tags、Messaging、Silent Replies、Heartbeats |
none | 极简模式 | 仅保留基础身份行 |
promptMode=minimal 时,额外注入的 Prompt 标记为 Subagent Context 而非 Group Chat Context。
Workspace Bootstrap 注入
以下文件在 Project Context 下修剪后附加,让模型无需显式读取就能看到身份和配置信息:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(仅在全新 Workspace 上)MEMORY.md(不存在时用小写memory.md作后备)
注意:这些文件在每次 turn 都注入到上下文窗口,会消耗 token。保持它们简洁——尤其是
MEMORY.md,随时间增长会导致上下文用量意外飙升,更频繁触发 Compaction。
大文件会被截断并附加标记。单文件最大由 agents.defaults.bootstrapMaxChars(默认 20000)控制,总注入量由 agents.defaults.bootstrapTotalMaxChars(默认 150000)上限。
子代理会话仅注入 AGENTS.md 和 TOOLS.md(其他 Bootstrap 文件被过滤,保持子代理上下文精简)。
时间处理
系统 Prompt 的当前日期时间区块仅包含时区(不含动态时钟),以保持 Prompt Cache 稳定性。
agent 需要当前时间时使用 session_status(状态卡片包含时间戳行)。
配置项:
agents.defaults.userTimezoneagents.defaults.timeFormat(auto|12|24)
Skills 注入
有符合资格的 Skill 时,OpenClaw 注入紧凑的可用 Skill 列表(含每个 Skill 的文件路径),并指令模型用 read 按需加载 SKILL.md:
xml
<available_skills>
<skill>
<name>...</name>
<description>...</description>
<location>...</location>
</skill>
</available_skills>这让基础 Prompt 保持精简,同时支持按需 Skill 调用。
文档引用
当本地文档目录可用时,系统 Prompt 的 Documentation 区块会指向本地 OpenClaw 文档路径(仓库 docs/ 或 npm 包),并附上公开镜像、社区 Discord 和 ClawHub(https://clawhub.ai)的 Skill 发现入口。Prompt 指令模型优先查阅本地文档,并在可能时自行运行 openclaw status(只在无法访问时才询问用户)。
Q:怎么查看我的 agent 实际收到的系统 Prompt 是什么? 在聊天中使用 /context list 查看各区块内容和每个注入文件的 token 占用。
Q:如何让 agent 的个性更鲜明? 编辑 SOUL.md——参见 SOUL.md 个性指南。
Q:安全提示真的有约束力吗? 系统 Prompt 中的安全防护是建议性的,引导模型行为但不强制执行策略。用工具策略、exec 审批、沙箱和 channel 白名单做硬性约束。