Files
Dirigent/README.md

115 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# WhisperGate
Rule-based no-reply gate + turn manager for OpenClaw (Discord).
## What it does
WhisperGate adds deterministic logic **before model selection** and **turn-based speaking** for multi-agent Discord channels:
- **Rule gate (before_model_resolve)**
1. Non-Discord → skip
2. Sender in bypass list / human list → skip
3. Message ends with configured end symbol → skip
4. Otherwise → route to no-reply model/provider
- **End-symbol enforcement**
- Injects instruction like: `你的这次发言必须以🔚作为结尾…`
- In group chats, also injects: “无关/不需要回应就 NO_REPLY”
- **Turn-based speaking (multi-bot)**
- Only the current speaker is allowed to respond
- Others are forced to no-reply
- Turn advances on **end-symbol** or **NO_REPLY**
- If all bots NO_REPLY, channel becomes **dormant** until a new human message
- **Moderator handoff (optional)**
- When the current speaker NO_REPLYs, a moderator bot can post a handoff message to wake the next speaker
- **Per-channel policy runtime**
- Policies stored in a standalone JSON file
- Update at runtime via `whispergate_tools` (memory first → persist to file)
- **Discord control actions (optional)**
- Private channel create/update + member list
- Unified via `whispergate_tools`
---
## Repo layout
- `plugin/` — OpenClaw plugin (gate + turn manager + moderator presence)
- `no-reply-api/` — OpenAI-compatible API that always returns `NO_REPLY`
- `discord-control-api/` — Discord 管理扩展 API私密频道 + 成员列表)
- `docs/` — rollout, integration, run-mode notes, turn-wakeup analysis
- `scripts/` — smoke/dev/helper checks
- `Makefile` — common dev commands (`make check`, `make check-rules`, `make test-api`, `make smoke-discord-control`, `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`
---
## Runtime tools & commands
### Tool: `whispergate_tools`
Actions:
- `policy-get`, `policy-set-channel`, `policy-delete-channel`
- `turn-status`, `turn-advance`, `turn-reset`
- `channel-private-create`, `channel-private-update`, `member-list`
### Slash command (Discord)
```
/whispergate status
/whispergate turn-status
/whispergate turn-advance
/whispergate turn-reset
```
---
## Config highlights
Common options (see `docs/INTEGRATION.md`):
- `listMode`: `human-list` or `agent-list`
- `humanList`, `agentList`
- `endSymbols`
- `channelPoliciesFile` (per-channel overrides)
- `moderatorBotToken` (handoff messages)
- `enableDebugLogs`, `debugLogChannelIds`
---
## 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