概述
系统提示词(System Prompt)是引导 AI 代理行为的核心指令。OpenClaw 不使用静态的提示词模板,而是通过 buildAgentSystemPrompt() 函数动态构建系统提示词。该函数接收超过 15 种参数类型,根据当前频道、用户角色、可用工具和会话上下文生成高度定制化的提示词。
buildAgentSystemPrompt() 机制
这个函数是 OpenClaw 系统提示词的核心构建器。每次创建新的代理会话时,系统都会调用该函数来生成适合当前上下文的系统提示词。由于 Pi SDK 是直接嵌入的(而非子进程调用),这个构建过程在同一个运行时中完成,没有序列化开销。
参数类型一览
buildAgentSystemPrompt() 支持的主要参数类型包括:
- channelType:当前频道类型(Discord / Telegram / Slack / WhatsApp)
- channelId:频道唯一标识符
- userId:当前用户 ID
- userRole:用户角色(管理员、普通用户、访客等)
- availableTools:当前可用的工具列表
- toolDescriptions:工具的详细描述信息
- sessionHistory:会话历史摘要
- customInstructions:用户自定义指令
- languagePreference:语言偏好设置
- responseFormat:期望的响应格式
- safetyPolicy:安全策略配置
- knowledgeBase:知识库引用
- extensionPrompts:已加载扩展的提示词片段
- timeContext:时间上下文(时区、当前时间)
- platformConstraints:平台特有限制(如消息长度上限)
- memoryContext:持久化记忆上下文
按频道动态定制
系统提示词最重要的动态维度是频道适配。不同平台有不同的交互规范和技术限制:
Discord 频道
针对 Discord 的系统提示词会包含:嵌入式消息格式说明、Markdown 渲染规则、表情符号使用指导、线程交互规范,以及 2000 字符消息长度限制的提醒。
Telegram 频道
Telegram 环境下,系统提示词会加入:内联键盘交互说明、HTML 格式化规则(Telegram 使用 HTML 而非完整 Markdown)、文件发送能力描述、以及 4096 字符消息限制。
Slack 频道
Slack 的系统提示词包含:Block Kit 格式说明、线程回复规范、应用消息与用户消息的区分,以及工作区相关的上下文信息。
WhatsApp 频道
WhatsApp 场景下会注入:简洁回复风格指令、有限的格式化支持说明、媒体消息处理方式等。
自定义指令层
除了系统自动生成的内容,管理员和用户可以在多个层级注入自定义指令:
全局指令
在 OpenClaw 配置文件中设置的全局指令,适用于所有频道和所有用户。这里通常放置 AI 代理的基本人设、核心行为规范和通用安全策略。
频道级指令
每个频道可以有独立的自定义指令。例如,技术支持频道可以注入领域知识和问题排查流程,而闲聊频道可以设定更轻松的对话风格。
用户级指令
个别用户可以设置自己的偏好指令,如语言偏好、响应详细程度等。这些指令会在构建过程中被合并到最终的系统提示词中。
扩展提示词集成
当 OpenClaw 加载扩展(Extension)时,每个扩展可以提供自己的提示词片段。buildAgentSystemPrompt() 会将这些片段收集并合并到系统提示词的适当位置。
例如,一个图片生成扩展可能注入如下提示词片段:"当用户请求生成图片时,使用 image_generate 工具,描述应使用英文,风格参数支持 realistic、anime、sketch 等。"
这种设计使得扩展不仅提供工具能力,还能指导 AI 正确使用这些工具。
会话上下文感知
buildAgentSystemPrompt() 还会参考当前会话的状态:
- 会话长度:长对话中可能加入摘要上下文
- 最近话题:根据对话主题微调提示词的侧重点
- JSONL 持久化状态:从会话持久化存储中恢复上下文,包括经过压缩(compaction)处理的历史摘要
调试提示词
开发者可以在配置中开启 debugSystemPrompt: true,这会在日志中输出最终构建的完整系统提示词。这对于调试意外的 AI 行为非常有用——你可以准确看到 AI 接收到了什么指令。
还可以通过 API 端点 /api/debug/system-prompt 获取当前频道的系统提示词快照,方便在不查看日志的情况下检查提示词内容。
最佳实践
- 保持简洁:每个层级的自定义指令不宜过长,避免稀释核心指令的效果
- 避免冲突:不同层级的指令可能产生矛盾,优先级为:安全策略 > 全局指令 > 频道指令 > 用户指令
- 测试验证:修改提示词后,使用调试模式验证最终构建结果
- 版本管理:将自定义指令纳入版本控制,追踪变更历史
总结
buildAgentSystemPrompt() 是 OpenClaw 实现智能化频道适配的核心机制。通过超过 15 种参数的动态组合,每次对话都能获得量身定制的系统指令,让 AI 代理在不同平台、不同场景下都能表现出最佳的交互体验。