Files
Dirigent/README.md
zhi fd1bf449a4 refine: cleanup remaining whispergate refs, improve docs and TASKLIST formatting
- Fix enableWhispergatePolicyTool → enableDirigentPolicyTool in config schema and example
- Fix whisper-gateway → dirigentway in install script
- Add v0.2.0 changelog entry
- Improve README with scheduling identifier docs and English text
- Clean up plugin README with moderator handoff format docs
- Reformat TASKLIST with cleaner done markers
2026-03-03 10:13:39 +00:00

123 lines
3.6 KiB
Markdown

# Dirigent
Rule-based no-reply gate + turn manager for OpenClaw (Discord).
> Formerly known as WhisperGate. Renamed to Dirigent in v0.2.0.
## What it does
Dirigent 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: `Your response MUST end with 🔚…`
- In group chats, also injects: "If not relevant, reply NO_REPLY"
- **Scheduling identifier (moderator handoff)**
- Configurable identifier (default: `➡️`) used by the moderator bot
- Handoff format: `<@TARGET_USER_ID>➡️` (non-semantic, just a scheduling signal)
- Agent receives instruction explaining the identifier is meaningless — check chat history and decide
- **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
- **Agent identity injection**
- Injects agent name, Discord accountId, and Discord userId into group chat prompts
- **Per-channel policy runtime**
- Policies stored in a standalone JSON file
- Update at runtime via `dirigent_tools` (memory first → persist to file)
- **Discord control actions (optional)**
- Private channel create/update + member list
- Unified via `dirigent_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 admin extension API (private channels + member list)
- `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 extension capabilities: `docs/DISCORD_CONTROL.md`.
---
## Runtime tools & commands
### Tool: `dirigent_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)
```
/dirigent status
/dirigent turn-status
/dirigent turn-advance
/dirigent turn-reset
```
---
## Config highlights
Common options (see `docs/INTEGRATION.md`):
- `listMode`: `human-list` or `agent-list`
- `humanList`, `agentList`
- `endSymbols`
- `schedulingIdentifier` (default `➡️`)
- `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