系统提示词
OpenClaw 为每次代理运行构建自定义系统提示词。该提示词由 OpenClaw 拥有,不使用 p-coding-agent 的默认提示词。
提示词由 OpenClaw 组装并注入到每次代理运行中。
结构
提示词有意保持紧凑并使用固定的部分:
- 工具: 当前工具列表 + 简短描述。
- 安全: 简短的护栏提醒,避免权力寻求行为或绕过监督。
- 技能(可用时): 告诉模型如何按需加载技能指令。
- OpenClaw 自更新: 如何运行
config.apply和update.run。 - 工作区: 工作目录 (
agents.defaults.workspace)。 - 文档: OpenClaw 文档的本地路径(仓库或 npm 包)及何时阅读。
- 工作区文件(已注入): 指示下方包含引导文件。
- 沙箱(启用时): 指示沙箱运行时、沙箱路径以及是否可用提升执行。
- 当前日期和时间: 用户本地时间、时区和时间格式。
- 回复标签: 支持的提供商的可选回复标签语法。
- 心跳: 心跳提示和确认行为。
- 运行时: 主机、操作系统、node、模型、仓库根目录(检测到时)、思考级别(一行)。
- 推理: 当前可见性级别 + /reasoning 切换提示。
系统提示词中的安全护栏是建议性的。它们引导模型行为但不强制执行策略。使用工具策略、执行审批、沙箱和通道允许列表进行硬性强制;操作员可以按设计禁用这些。
提示词模式
OpenClaw 可以为子代理渲染更小的系统提示词。运行时为每次运行设置 promptMode(不是面向用户的配置):
full(默认): 包含上述所有部分。minimal: 用于子代理;省略 技能、记忆回忆、OpenClaw 自更新、模型别名、用户身份、回复标签、 消息传递、静默回复 和 心跳。工具、安全、 工作区、沙箱、当前日期和时间(已知时)、运行时和注入的 上下文保持可用。none: 仅返回基本身份行。
当 promptMode=minimal 时,额外注入的提示词标记为 子代理 上下文 而不是 群聊上下文。
工作区引导注入
引导文件被修剪并附加在 项目上下文 下,以便模型无需显式读取即可看到身份和配置文件上下文:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(仅在全新工作区)
大文件会被截断并带有标记。每个文件的最大大小由 agents.defaults.bootstrapMaxChars 控制(默认: 20000)。缺失的文件会注入一个 简短的缺失文件标记。
内部钩子可以通过 agent:bootstrap 拦截此步骤来修改或替换 注入的引导文件(例如将 SOUL.md 替换为备用人格)。
要检查每个注入文件的贡献量(原始 vs 注入、截断,加上工具架构开销),请使用 /context list 或 /context detail。参见 上下文。
时间处理
当已知用户时区时,系统提示词包含专用的 当前日期和时间 部分。为保持提示词缓存稳定,现在仅包含 时区(无动态时钟或时间格式)。
当代理需要当前时间时使用 session_status;状态卡 包含时间戳行。
配置选项:
agents.defaults.userTimezoneagents.defaults.timeFormat(auto|12|24)
有关完整行为详情,请参见 日期和时间。
技能
当存在符合条件的技能时,OpenClaw 注入一个紧凑的 可用技能列表 (formatSkillsForPrompt),其中包含每个技能的 文件路径。提示词 指示模型使用 read 加载列出位置(工作区、托管或捆绑)的 SKILL.md。如果没有符合条件的技能,则 省略技能部分。
<available_skills>
<skill>
<name>...</name>
<description>...</description>
<location>...</location>
</skill>
</available_skills>这使基础提示词保持精简,同时仍能实现有针对性的技能使用。
文档
可用时,系统提示词包含 文档 部分,指向 本地 OpenClaw 文档目录(仓库工作区中的 docs/ 或捆绑的 npm 包文档),同时还注明公共镜像、源代码仓库、社区 Discord 和 ClawHub(https://clawhub.com)用于技能发现。提示词指示模型首先查阅本地文档以了解 OpenClaw 行为、命令、配置或架构,并在可能时自行运行 openclaw status(仅在无法访问时询问用户)。