61 lines
1.7 KiB
Markdown
61 lines
1.7 KiB
Markdown
# WhisperGate
|
||
|
||
Rule-based no-reply gate for OpenClaw.
|
||
|
||
## What it does
|
||
|
||
WhisperGate adds a deterministic gate **before model selection**:
|
||
|
||
1. If message is not from Discord → skip gate
|
||
2. If sender is in bypass user list → skip gate
|
||
3. If message ends with configured end-symbol → skip gate
|
||
4. Otherwise switch this turn to a no-reply model/provider
|
||
|
||
The no-reply provider returns `NO_REPLY` for any input.
|
||
|
||
---
|
||
|
||
## Repo layout
|
||
|
||
- `plugin/` — OpenClaw plugin (before_model_resolve hook)
|
||
- `no-reply-api/` — OpenAI-compatible minimal API that always returns `NO_REPLY`
|
||
- `discord-control-api/` — Discord 管理扩展 API(私密频道 + 成员列表)
|
||
- `docs/` — rollout, integration, run-mode notes
|
||
- `scripts/` — smoke/dev/helper checks
|
||
- `Makefile` — common dev commands (`make check`, `make check-rules`, `make test-api`, `make up`)
|
||
- `CHANGELOG.md` — milestone summary
|
||
|
||
## Quick start (no Docker)
|
||
|
||
```bash
|
||
cd no-reply-api
|
||
node server.mjs
|
||
```
|
||
|
||
Then render config snippet:
|
||
|
||
```bash
|
||
node scripts/render-openclaw-config.mjs
|
||
```
|
||
|
||
See `docs/RUN_MODES.md` for Docker mode.
|
||
|
||
Discord 扩展能力见:`docs/DISCORD_CONTROL.md`。
|
||
|
||
---
|
||
|
||
## Development plan (incremental commits)
|
||
|
||
- [x] Task 1: project docs + structure
|
||
- [x] Task 2: no-reply API MVP
|
||
- [x] Task 3: plugin MVP with rule chain
|
||
- [x] Task 4: sample config + quick verification scripts
|
||
- [x] Task 5: plugin rule extraction + hardening
|
||
- [x] Task 6: containerization + compose
|
||
- [x] Task 7: plugin usage notes
|
||
- [x] Task 8: sender normalization + TTL + one-shot decision
|
||
- [x] Task 9: auth-aware no-reply API
|
||
- [x] Task 10: smoke test helpers
|
||
- [x] Task 11: plugin structure checker
|
||
- [x] Task 12: rollout checklist
|