WhisperGate Plugin
Hook strategy
message:receivedcaches a per-session decision from deterministic rules.before_model_resolveappliesproviderOverride + modelOverridewhen decision says no-reply.before_prompt_buildprepends instruction你的这次发言必须以🔚作为结尾。when decision is:bypass_senderend_symbol:*
Rules (in order)
- non-discord -> skip
- bypass sender -> skip
- end symbol matched -> skip
- else -> no-reply override
Config
See docs/CONFIG.example.json.
Required:
noReplyProvidernoReplyModel
Optional:
enabled(default true)discordOnly(default true)listMode(human-list|agent-list, defaulthuman-list)humanList(default [])agentList(default [])channelPoliciesFile(per-channel overrides in a standalone JSON file)enableWhispergatePolicyTool(default true)bypassUserIds(deprecated alias ofhumanList)endSymbols(default ["🔚"])enableDiscordControlTool(default true)discordControlApiBaseUrl(defaulthttp://127.0.0.1:8790)discordControlApiTokendiscordControlCallerId
Per-channel policy file example: docs/channel-policies.example.json.
Policy file behavior:
- loaded once on startup into memory
- runtime decisions read memory state only
- direct file edits do NOT affect memory state
whispergate_policytool updates memory first, then persists to file (atomic write)
Optional tool: discord_control
This plugin now registers an optional tool named discord_control.
To use it, add tool allowlist entry for either:
- tool name:
discord_control - plugin id:
whispergate
Supported actions:
channel-private-createchannel-private-updatemember-list