50 lines
1.3 KiB
Markdown
50 lines
1.3 KiB
Markdown
# WhisperGate Plugin
|
|
|
|
## Hook strategy
|
|
|
|
- `message:received` caches a per-session decision from deterministic rules.
|
|
- `before_model_resolve` applies `providerOverride + modelOverride` when decision says no-reply.
|
|
- `before_prompt_build` prepends instruction `你的这次发言必须以🔚作为结尾。` when decision is:
|
|
- `bypass_sender`
|
|
- `end_symbol:*`
|
|
|
|
## Rules (in order)
|
|
|
|
1. non-discord -> skip
|
|
2. bypass sender -> skip
|
|
3. end symbol matched -> skip
|
|
4. else -> no-reply override
|
|
|
|
## Config
|
|
|
|
See `docs/CONFIG.example.json`.
|
|
|
|
Required:
|
|
- `noReplyProvider`
|
|
- `noReplyModel`
|
|
|
|
Optional:
|
|
- `enabled` (default true)
|
|
- `discordOnly` (default true)
|
|
- `listMode` (`human-list` | `agent-list`, default `human-list`)
|
|
- `humanList` (default [])
|
|
- `agentList` (default [])
|
|
- `bypassUserIds` (deprecated alias of `humanList`)
|
|
- `endSymbols` (default ["🔚"])
|
|
- `enableDiscordControlTool` (default true)
|
|
- `discordControlApiBaseUrl` (default `http://127.0.0.1:8790`)
|
|
- `discordControlApiToken`
|
|
- `discordControlCallerId`
|
|
|
|
## 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-create`
|
|
- `channel-private-update`
|
|
- `member-list`
|