feat(dev): add no-touch OpenClaw config renderer and integration guide

This commit is contained in:
2026-02-25 13:47:00 +00:00
parent b99ec7c281
commit 1acaebf73f
3 changed files with 66 additions and 1 deletions

View File

@@ -1,4 +1,4 @@
.PHONY: check check-rules up down smoke
.PHONY: check check-rules test-api up down smoke render-config
check:
cd plugin && npm run check
@@ -6,6 +6,9 @@ check:
check-rules:
node scripts/validate-rules.mjs
test-api:
node scripts/test-no-reply-api.mjs
up:
./scripts/dev-up.sh
@@ -14,3 +17,6 @@ down:
smoke:
./scripts/smoke-no-reply-api.sh
render-config:
node scripts/render-openclaw-config.mjs

34
docs/INTEGRATION.md Normal file
View File

@@ -0,0 +1,34 @@
# WhisperGate Integration (No-touch Template)
This guide **does not** change your current OpenClaw config automatically.
It only generates a JSON snippet you can review.
## Generate config snippet
```bash
node scripts/render-openclaw-config.mjs \
/absolute/path/to/WhisperGate/plugin \
openai \
whispergate-no-reply-v1 \
561921120408698910
```
Arguments:
1. plugin path
2. provider alias
3. model name
4. bypass user ids (comma-separated, optional)
## Output
The script prints JSON for:
- `plugins.load.paths`
- `plugins.entries.whispergate.config`
You can merge this snippet manually into your `openclaw.json`.
## Notes
- This repo does not run config mutation commands.
- Keep no-reply API bound to loopback/private network.
- If you use API auth, set `AUTH_TOKEN` and align provider apiKey usage.

View File

@@ -0,0 +1,25 @@
const pluginPath = process.argv[2] || "/opt/WhisperGate/plugin";
const provider = process.argv[3] || "openai";
const model = process.argv[4] || "whispergate-no-reply-v1";
const bypass = (process.argv[5] || "").split(",").filter(Boolean);
const payload = {
plugins: {
load: { paths: [pluginPath] },
entries: {
whispergate: {
enabled: true,
config: {
enabled: true,
discordOnly: true,
bypassUserIds: bypass,
endSymbols: ["。", "", "", ".", "!", "?"],
noReplyProvider: provider,
noReplyModel: model,
},
},
},
},
};
console.log(JSON.stringify(payload, null, 2));