feat(dev): add no-touch OpenClaw config renderer and integration guide
This commit is contained in:
8
Makefile
8
Makefile
@@ -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
34
docs/INTEGRATION.md
Normal 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.
|
||||
25
scripts/render-openclaw-config.mjs
Normal file
25
scripts/render-openclaw-config.mjs
Normal 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));
|
||||
Reference in New Issue
Block a user