A lightweight service that monitors registered events:
ClawGuard only monitors what is explicitly registered. It does not auto-discover.
cd <skill-dir>
bash scripts/install.sh
Installs:
Restart=always, auto-starts on bootclaw-guard in ~/.local/bin/~/.openclaw/workspace/tools/claw-guard/Add ExecStartPre to your gateway service so every restart (manual, crash, or Restart=always) is automatically registered:
# ~/.config/systemd/user/openclaw-gateway.service
[Service]
ExecStartPre=/home/<user>/.local/bin/claw-guard register-restart
ExecStart=...
Then reload: systemctl --user daemon-reload
Now every gateway restart automatically:
No manual claw-guard register-restart needed — systemd handles it.
Add these rules so the agent always registers its work:
## Task Execution Rules (MANDATORY)
### Sub-agent requirement
- **Any exec/tool call that might take >5s → sub-agent** (`sessions_spawn`).
Main agent stays responsive.
- **Complex or unpredictable tasks → always sub-agent.** Even if they might
be fast. If you can't guarantee it won't block, delegate it.
- **Only run in main agent** if certain it won't block I/O (quick file reads,
short `grep`, `git status`, `claw-guard status`, etc.)
### ClawGuard registration (MANDATORY for all sub-agents)
Every sub-agent and background process **must** be registered:
claw-guard register --id "
--target "
--log "/path/to/logfile" --timeout 180 \
--command "
- `--target`: same channel/room where the user asked for the task
- `--log` and `--timeout`: optional but recommended for long tasks
- If PID dies → claw-guard notifies the target channel and removes the entry
- If log goes stale → claw-guard notifies and removes
### Gateway restarts
- **Never restart the gateway while tasks are running** — it kills all sub-agents
- Gateway service has `ExecStartPre=claw-guard register-restart` — automatic
- No manual registration needed for restarts
Sub-agent task flow:
claw-guard register --id "task-name" --pid $PID --target "room:..." --command "..."Gateway restart flow:
ExecStartPre runs claw-guard register-restart → config backed up✅ Gateway restart succeeded → watch clearedclaw-guard register --id "benchmark-q8" --pid 12345 \
--target "room:!abc:server" \
--log "/path/to/task.log" --timeout 180 \
--command "python3 benchmark.py"
# Or watch a directory for new file creation:
claw-guard register --id "export-gguf" --pid 12345 \
--target "room:!abc:server" \
--watch-dir "/path/to/output/" --timeout 300 \
--command "export_gguf.py"
| Flag | Required | Description |
|---|---|---|
| ------ | ---------- | ------------- |
--id | yes | Unique task identifier |
--pid | yes | Process ID to watch |
--target | yes | Notification target (see formats below) |
--log | no | Log file path — checks mtime only |
--watch-dir | no | Directory — checks newest file mtime |
--timeout | no | Stale threshold in seconds (default: 180) |
--command | no | Description included in notifications |
claw-guard register-restart [--target "room:!abc:server"]
No --target needed — sends to OpenClaw's default channel. Pass --target to override.
claw-guard status # Show tasks, restart watch, config backups
claw-guard remove --id X # Remove a task
claw-guard clear-done # Remove completed/gone tasks
After notifying, the registered entry is removed from the registry. Once removed, it can't fire again. No dedup tracking needed.
On service restart or system reboot:
This is by design: after a reboot, all monitored processes are gone anyway. The agent must re-register any new tasks.
Any format openclaw message send --target accepts:
room:!roomId:server (Matrix)telegram:chatiddiscord:#channelslack:#channelGateway restart alerts with no --target are sent without a target flag, letting OpenClaw route to the default channel.
共 1 个版本