You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
bluebubbles: forward per-group systemPrompt into GroupSystemPrompt (#69198)
Forward per-group systemPrompt config into inbound context GroupSystemPrompt so configured group-specific behavioral instructions (for example threaded-reply and tapback conventions) are injected on every turn. Supports "*" wildcard fallback matching the existing requireMention pattern.
Closes#60665.
Co-authored-by: Omar Shahine <omarshahine@users.noreply.github.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,6 +12,7 @@ Docs: https://docs.openclaw.ai
12
12
- Agents/compaction: send opt-in start and completion notices during context compaction. (#67830) Thanks @feniix.
13
13
- Moonshot/Kimi: default bundled Moonshot setup, web search, and media-understanding surfaces to `kimi-k2.6` while keeping `kimi-k2.5` available for compatibility. (#69477) Thanks @scoootscooob.
14
14
- Moonshot/Kimi: allow `thinking.keep = "all"` on `moonshot/kimi-k2.6`, and strip it for other Moonshot models or requests where pinned `tool_choice` disables thinking. (#68816) Thanks @aniaan.
15
+
- BlueBubbles/groups: forward per-group `systemPrompt` config into inbound context `GroupSystemPrompt` so configured group-specific behavioral instructions (for example threaded-reply and tapback conventions) are injected on every turn. Supports `"*"` wildcard fallback matching the existing `requireMention` pattern. Closes #60665. (#69198) Thanks @omarshahine.
Copy file name to clipboardExpand all lines: docs/channels/bluebubbles.md
+48Lines changed: 48 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -217,6 +217,54 @@ Per-group configuration:
217
217
- Uses `allowFrom` and `groupAllowFrom` to determine command authorization.
218
218
- Authorized senders can run control commands even without mentioning in groups.
219
219
220
+
### Per-group system prompt
221
+
222
+
Each entry under `channels.bluebubbles.groups.*` accepts an optional `systemPrompt` string. The value is injected into the agent's system prompt on every turn that handles a message in that group, so you can set per-group persona or behavioral rules without editing agent prompts:
223
+
224
+
```json5
225
+
{
226
+
channels: {
227
+
bluebubbles: {
228
+
groups: {
229
+
"iMessage;-;chat123": {
230
+
systemPrompt:"Keep responses under 3 sentences. Mirror the group's casual tone.",
231
+
},
232
+
},
233
+
},
234
+
},
235
+
}
236
+
```
237
+
238
+
The key matches whatever BlueBubbles reports as `chatGuid` / `chatIdentifier` / numeric `chatId` for the group, and a `"*"` wildcard entry provides a default for every group without an exact match (same pattern used by `requireMention` and per-group tool policies). Exact matches always win over the wildcard. DMs ignore this field; use agent-level or account-level prompt customization instead.
239
+
240
+
#### Worked example: threaded replies and tapback reactions (Private API)
241
+
242
+
With the BlueBubbles Private API enabled, inbound messages arrive with short message IDs (for example `[[reply_to:5]]`) and the agent can call `action=reply` to thread into a specific message or `action=react` to drop a tapback. A per-group `systemPrompt` is a reliable way to keep the agent choosing the right tool:
243
+
244
+
```json5
245
+
{
246
+
channels: {
247
+
bluebubbles: {
248
+
groups: {
249
+
"iMessage;+;chat-family": {
250
+
systemPrompt: [
251
+
"When replying in this group, always call action=reply with the",
252
+
"[[reply_to:N]] messageId from context so your response threads",
253
+
"under the triggering message. Never send a new unlinked message.",
254
+
"",
255
+
"For short acknowledgements ('ok', 'got it', 'on it'), use",
256
+
"action=react with an appropriate tapback emoji (❤️, 👍, 😂, ‼️, ❓)",
257
+
"instead of sending a text reply.",
258
+
].join(""),
259
+
},
260
+
},
261
+
},
262
+
},
263
+
}
264
+
```
265
+
266
+
Tapback reactions and threaded replies both require the BlueBubbles Private API; see [Advanced actions](#advanced-actions) and [Message IDs](#message-ids-short-vs-full) for the underlying mechanics.
267
+
220
268
## ACP conversation bindings
221
269
222
270
BlueBubbles chats can be turned into durable ACP workspaces without changing the transport layer.
0 commit comments