前言
系统提示词(System Prompt)是定义 AI Agent 行为的基石。一个精心设计的系统提示词可以让 AI 准确扮演特定角色、遵循特定规则、产出特定格式的回复。OpenClaw 不仅支持静态的系统提示词,还提供了强大的动态模板系统,支持 15+ 内置参数和条件逻辑,让你构建出能够自适应不同场景的智能提示词。
本文将系统讲解 OpenClaw 的系统提示词高级配置技巧。
基础配置
静态系统提示词
最简单的方式是在 Agent 配置中直接指定提示词:
{
agents: {
"my-agent": {
systemPrompt: "你是一个专业的技术助手。你的回答应该简洁、准确、有代码示例。"
}
}
}
从文件加载
对于较长的提示词,推荐使用独立文件:
{
agents: {
"my-agent": {
systemPromptFile: "./prompts/tech-assistant.md"
}
}
}
动态模板系统
OpenClaw 的系统提示词支持 Mustache 风格的模板语法,运行时动态替换参数。
基本语法
你好,{{userName}}。当前时间是 {{currentTime}}。
全部内置参数
OpenClaw 提供了以下内置模板参数:
| 参数名 | 说明 | 示例值 |
|---|---|---|
{{userName}} |
当前用户名 | "张三" |
{{userId}} |
用户ID | "user_12345" |
{{channelType}} |
频道类型 | "dm" / "group" |
{{channelName}} |
频道名称 | "技术讨论群" |
{{platform}} |
聊天平台 | "telegram" / "discord" |
{{agentId}} |
Agent ID | "my-agent" |
{{agentName}} |
Agent 显示名 | "技术助手" |
{{currentDate}} |
当前日期 | "2026-03-14" |
{{currentTime}} |
当前时间 | "14:30:00" |
{{currentDateTime}} |
完整日期时间 | "2026-03-14 14:30:00" |
{{timezone}} |
时区 | "Asia/Shanghai" |
{{locale}} |
语言区域 | "zh-CN" |
{{sessionId}} |
会话ID | "session-abc123" |
{{messageCount}} |
当前会话消息数 | "15" |
{{modelName}} |
使用的模型名 | "claude-sonnet-4-20250514" |
{{toolList}} |
可用工具列表 | "search, calculator, ..." |
使用示例
你是 {{agentName}},一个运行在 {{platform}} 上的 AI 助手。
当前环境信息:
- 用户:{{userName}}
- 时间:{{currentDateTime}}({{timezone}})
- 频道:{{channelName}}({{channelType}})
- 会话已进行 {{messageCount}} 轮对话
你可以使用以下工具:{{toolList}}
请根据以上环境信息调整你的回复风格和内容。
条件逻辑
根据平台切换行为
{{#if platform == "telegram"}}
你正在 Telegram 上运行。请使用 Markdown 格式化回复,善用 emoji 表情。
消息长度控制在 4096 字符以内。
{{/if}}
{{#if platform == "discord"}}
你正在 Discord 上运行。可以使用 Discord 的 Markdown 语法。
支持代码块高亮和 embed 格式。
{{/if}}
{{#if platform == "slack"}}
你正在 Slack 上运行。使用 Slack 的 mrkdwn 格式。
支持 Block Kit 富文本格式。
{{/if}}
根据频道类型调整风格
{{#if channelType == "dm"}}
你正在与用户进行一对一私聊。可以提供详细的个性化回复。
可以记住用户的偏好和历史信息。
{{/if}}
{{#if channelType == "group"}}
你正在群组中。请注意:
- 只在被 @提及 或明确需要时才回复
- 回复应简洁,避免刷屏
- 注意群组话题的上下文
{{/if}}
根据时间动态调整
{{#if hour >= 22 || hour < 6}}
用户似乎在深夜使用,请在适当时候提醒注意休息。
{{/if}}
{{#if dayOfWeek == "Saturday" || dayOfWeek == "Sunday"}}
今天是周末,回复可以更轻松随意一些。
{{/if}}
高级组合技巧
多层提示词拼接
OpenClaw 支持将系统提示词分为多个层次,按顺序拼接:
{
agents: {
"my-agent": {
systemPrompt: {
// 基础人格层
base: "./prompts/base-personality.md",
// 工具使用指南层
tools: "./prompts/tool-guidelines.md",
// 安全规则层
safety: "./prompts/safety-rules.md",
// 动态上下文层
context: "当前用户:{{userName}},平台:{{platform}}"
}
}
}
}
最终的系统提示词会按 base → tools → safety → context 的顺序拼接。
自定义参数
除了内置参数,你还可以定义自己的模板参数:
{
agents: {
"my-agent": {
systemPromptFile: "./prompts/custom-agent.md",
promptParams: {
companyName: "极客科技",
productName: "SuperApp",
supportEmail: "[email protected]",
workingHours: "周一至周五 9:00-18:00",
maxResponseLength: 500
}
}
}
}
在提示词模板中使用:
你是 {{companyName}} 的 {{productName}} 产品客服助手。
回复规则:
- 回复不超过 {{maxResponseLength}} 字
- 遇到无法解决的问题,引导用户联系 {{supportEmail}}
- 工作时间为 {{workingHours}}
知识库注入
将外部知识库的内容动态注入到系统提示词中:
{
agents: {
"my-agent": {
systemPrompt: {
base: "你是一个产品专家...",
// 从知识库文件中加载FAQ
knowledge: {
source: "./knowledge/faq.md",
// 最大注入Token数
maxTokens: 4000
}
}
}
}
}
Persona 预设组合
OpenClaw 内置了一套 Persona 预设系统,你可以基于预设进行定制:
{
agents: {
"my-agent": {
// 基础人格预设
persona: "professional", // 可选: friendly, professional, technical, creative
// 在预设基础上追加自定义指令
systemPromptAppend: "额外规则:所有代码示例必须使用Python。"
}
}
}
提示词调试
查看实际生效的提示词
# 查看Agent最终拼接后的系统提示词
openclaw agent inspect my-agent --show-prompt
# 带上下文模拟(指定平台和用户)
openclaw agent inspect my-agent --show-prompt \
--platform telegram --channel-type dm --user "test-user"
提示词版本管理
建议将提示词文件纳入版本控制,这样你可以:
- 追踪每次提示词修改的历史
- 通过 PR 审查提示词变更
- 快速回滚到之前的版本
prompts/
├── base-personality.md
├── tool-guidelines.md
├── safety-rules.md
├── CHANGELOG.md
└── v2/
└── base-personality.md
最佳实践
- 分层设计:将提示词分为人格层、工具层、规则层,各司其职
- 善用模板参数:避免硬编码,让提示词能适应多种场景
- 平台适配:不同聊天平台的消息格式和长度限制不同,用条件逻辑适配
- 版本控制:提示词是代码,应该像代码一样管理
- 定期测试:修改提示词后,在各平台和场景下验证效果
- 保持精简:系统提示词越长,消耗的 Token 越多,成本越高
小结
系统提示词是 AI Agent 的灵魂。OpenClaw 的动态模板系统让你可以根据用户身份、聊天平台、时间上下文等因素自动调整提示词内容,构建出真正智能的、能适应不同场景的 AI 助手。掌握这些高级技巧,将让你的 Agent 在各种复杂场景下都能表现出色。