diff --git a/docs/channels/discord.md b/docs/channels/discord.md index 35a4442c28e..bf69610a700 100644 --- a/docs/channels/discord.md +++ b/docs/channels/discord.md @@ -252,6 +252,8 @@ Once DMs are working, you can set up your Discord server as a full workspace whe In guild channels, normal assistant final replies stay private by default. Visible Discord output must be sent explicitly with the `message` tool, so the agent can lurk by default and only post when it decides a channel reply is useful. + This means the selected model must reliably call tools. If Discord shows typing and the logs show token usage but no posted message, check the session log for assistant text with `didSendViaMessagingTool: false`. That means the model produced a private final answer instead of calling `message(action=send)`. Switch to a stronger tool-calling model, or use the config below to restore legacy automatic final replies. + > "Allow my agent to respond on this server without having to be @mentioned" diff --git a/docs/channels/groups.md b/docs/channels/groups.md index f2045382e1d..ce7e5d1b375 100644 --- a/docs/channels/groups.md +++ b/docs/channels/groups.md @@ -44,6 +44,14 @@ For group/channel rooms, OpenClaw defaults to `messages.groupChat.visibleReplies `openclaw doctor --fix` writes this default into configured-channel configs that omit it. That means the agent still processes the turn and can update memory/session state, but its normal final answer is not automatically posted back into the room. To speak visibly, the agent uses `message(action=send)`. +This default depends on a model/runtime that reliably calls tools. If logs show +assistant text but `didSendViaMessagingTool: false`, the model answered +privately instead of calling the message tool. That is not a +Discord/Slack/Telegram send failure. Use a tool-call-reliable model for +group/channel sessions, or set +`messages.groupChat.visibleReplies: "automatic"` to restore legacy visible +final replies. + If the message tool is unavailable under the active tool policy, OpenClaw falls back to automatic visible replies instead of silently suppressing the response. `openclaw doctor` warns about this mismatch. diff --git a/docs/channels/troubleshooting.md b/docs/channels/troubleshooting.md index cdd4d0be642..88095974663 100644 --- a/docs/channels/troubleshooting.md +++ b/docs/channels/troubleshooting.md @@ -60,11 +60,12 @@ Full troubleshooting: [Telegram troubleshooting](/channels/telegram#troubleshoot ### Discord failure signatures -| Symptom | Fastest check | Fix | -| ------------------------------- | ----------------------------------- | --------------------------------------------------------- | -| Bot online but no guild replies | `openclaw channels status --probe` | Allow guild/channel and verify message content intent. | -| Group messages ignored | Check logs for mention gating drops | Mention bot or set guild/channel `requireMention: false`. | -| DM replies missing | `openclaw pairing list discord` | Approve DM pairing or adjust DM policy. | +| Symptom | Fastest check | Fix | +| ----------------------------------------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Bot online but no guild replies | `openclaw channels status --probe` | Allow guild/channel and verify message content intent. | +| Group messages ignored | Check logs for mention gating drops | Mention bot or set guild/channel `requireMention: false`. | +| Typing/token usage but no Discord message | Session log shows assistant text with `didSendViaMessagingTool: false` | The model answered privately instead of calling the message tool. Use a tool-call-reliable model, or set `messages.groupChat.visibleReplies: "automatic"` to auto-post. | +| DM replies missing | `openclaw pairing list discord` | Approve DM pairing or adjust DM policy. | Full troubleshooting: [Discord troubleshooting](/channels/discord#troubleshooting) diff --git a/docs/gateway/config-channels.md b/docs/gateway/config-channels.md index 5116acd23a5..23baeea6983 100644 --- a/docs/gateway/config-channels.md +++ b/docs/gateway/config-channels.md @@ -777,6 +777,13 @@ Group messages default to **require mention** (metadata mention or safe regex pa Visible replies are controlled separately. Group/channel rooms default to `messages.groupChat.visibleReplies: "message_tool"`: OpenClaw still processes the turn, but normal final replies stay private and visible room output requires `message(action=send)`. Set `"automatic"` only when you want the legacy behavior where normal replies are posted back to the room. To apply the same tool-only visible-reply behavior to direct chats too, set `messages.visibleReplies: "message_tool"`; the Codex harness also uses that tool-only behavior as its unset direct-chat default. +Tool-only visible replies require a model/runtime that reliably calls tools. If +the session log shows assistant text with `didSendViaMessagingTool: false`, the +model produced a private final answer instead of calling the message tool. +Switch to a stronger tool-calling model for that channel, or set +`messages.groupChat.visibleReplies: "automatic"` to restore legacy visible final +replies. + If the message tool is unavailable under the active tool policy, OpenClaw falls back to automatic visible replies instead of silently suppressing the response. `openclaw doctor` warns about this mismatch. The gateway hot-reloads `messages` config after the file is saved. Restart only when file watching or config reload is disabled in the deployment.