190 lines
5.1 KiB
Markdown
190 lines
5.1 KiB
Markdown
# watchdog-discord-route
|
||
|
||
> **繁體中文 / English bilingual README** (same file)
|
||
|
||
這個 repo 是一個可攜式 OpenClaw skill bundle,用於打通並驗證 **watchdog-b → owner-facing Discord** 回報鏈路。
|
||
|
||
This repo is a portable OpenClaw skill bundle to deliver and verify the **watchdog-b → owner-facing Discord** reporting route.
|
||
|
||
---
|
||
|
||
## TL;DR 最短安裝(建議) / Quick Install (recommended)
|
||
|
||
### 1) 安裝 bundle + 建立設定檔
|
||
|
||
```bash
|
||
./scripts/install_watchdog_bundle.sh --install-env-example
|
||
mkdir -p ~/.config/openclaw && cp ~/.config/openclaw/watchdog-b.env.example ~/.config/openclaw/watchdog-b.env
|
||
```
|
||
|
||
### 2) 設定 Discord 目標(必要)
|
||
|
||
把 `WATCHDOG_B_OWNER_REPORT_TARGET` 改成真的 channel id(不要留 placeholder):
|
||
|
||
```bash
|
||
sed -i 's#^WATCHDOG_B_OWNER_REPORT_TARGET=.*#WATCHDOG_B_OWNER_REPORT_TARGET=channel:YOUR_DISCORD_CHANNEL_ID#' ~/.config/openclaw/watchdog-b.env
|
||
```
|
||
|
||
### 3) Bootstrap(通過後才開 timer)
|
||
|
||
```bash
|
||
./scripts/bootstrap_watchdog_bundle.sh
|
||
systemctl --user daemon-reload
|
||
systemctl --user enable --now openclaw-watchdog-b.timer
|
||
```
|
||
|
||
### 4)(可選)跑 E2E 驗證
|
||
|
||
```bash
|
||
cd ~/.openclaw/workspace/scripts/watchdog-b
|
||
./verify_watchdog_b_e2e.sh
|
||
```
|
||
|
||
---
|
||
|
||
## 安裝流程圖 / Install Flow
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A[取得 repo / bundle] --> B[install_watchdog_bundle.sh --install-env-example]
|
||
B --> C[建立 ~/.config/openclaw/watchdog-b.env]
|
||
C --> D[設定 WATCHDOG_B_OWNER_REPORT_TARGET]
|
||
D --> E[bootstrap_watchdog_bundle.sh]
|
||
E --> F{Bootstrap 通過?}
|
||
F -- 否 / No --> G[修正 env/runtime/path 後重跑 bootstrap]
|
||
G --> E
|
||
F -- 是 / Yes --> H[systemctl --user enable --now openclaw-watchdog-b.timer]
|
||
H --> I[可選:verify_watchdog_b_e2e.sh]
|
||
```
|
||
|
||
---
|
||
|
||
## 這是用來做什麼的(中文)
|
||
|
||
用這個 bundle 來:
|
||
|
||
- 在新主機快速部署 watchdog-b(採 `systemd --user timer`)
|
||
- 驗證 owner-facing Discord 訊息是否真的送達
|
||
- 修復 `owner_report_*` routing 路徑錯誤
|
||
- 刷新 live bundle(`~/.openclaw/workspace/scripts/watchdog-b/`)
|
||
|
||
### 包含內容
|
||
|
||
- Skill 文件:`SKILL.md`
|
||
- Scripts:`scripts/*.sh`, `scripts/*.py`, `scripts/watchdog-b.env.example`
|
||
- systemd user units:`scripts/openclaw-watchdog-b.service`, `scripts/openclaw-watchdog-b.timer`
|
||
- References:`references/*.md`
|
||
|
||
### 重要設定(單一來源)
|
||
|
||
設定檔:
|
||
- `~/.config/openclaw/watchdog-b.env`
|
||
|
||
最低必填:
|
||
|
||
```bash
|
||
WATCHDOG_B_OWNER_REPORT_TARGET=channel:YOUR_DISCORD_CHANNEL_ID
|
||
```
|
||
|
||
可選(只有 host 上真的存在該 agent id 才設):
|
||
|
||
```bash
|
||
WATCHDOG_B_MAIN_AGENT_ID=backend
|
||
```
|
||
|
||
> 未設定時,stalled/idle 的 main-agent nudge 會被 skip,避免因 `Unknown agent id` 直接 fail。
|
||
|
||
---
|
||
|
||
## What this is for (English)
|
||
|
||
Use this bundle to:
|
||
|
||
- deploy watchdog-b on a new OpenClaw host (via `systemd --user timer`)
|
||
- verify the owner-facing Discord delivery end-to-end
|
||
- fix broken `owner_report_*` routing / path issues
|
||
- refresh the live install under `~/.openclaw/workspace/scripts/watchdog-b/`
|
||
|
||
### Included
|
||
|
||
- Skill doc: `SKILL.md`
|
||
- Scripts: `scripts/*.sh`, `scripts/*.py`, `scripts/watchdog-b.env.example`
|
||
- systemd user units: `scripts/openclaw-watchdog-b.service`, `scripts/openclaw-watchdog-b.timer`
|
||
- References: `references/*.md`
|
||
|
||
### Single source of config
|
||
|
||
Config file:
|
||
- `~/.config/openclaw/watchdog-b.env`
|
||
|
||
Minimum required:
|
||
|
||
```bash
|
||
WATCHDOG_B_OWNER_REPORT_TARGET=channel:YOUR_DISCORD_CHANNEL_ID
|
||
```
|
||
|
||
Optional (only set if the agent id exists on the host):
|
||
|
||
```bash
|
||
WATCHDOG_B_MAIN_AGENT_ID=backend
|
||
```
|
||
|
||
If unset, stalled/idle main-agent nudge is skipped to avoid `Unknown agent id` failures.
|
||
|
||
---
|
||
|
||
## 驗收/證據標準 / Evidence Standard
|
||
|
||
請把「成功」拆成三層,不要混為一談:
|
||
|
||
- **transport accepted**:send API 回傳成功/有 message id
|
||
- **channel-readable**:可以從 target channel 讀回
|
||
- **human-confirmed**:Eric 確認在 Discord 看到
|
||
|
||
最低 E2E 成功訊號(verify script 期待的):
|
||
|
||
- `~/.clawteam/owner-reports/pending/` 產生 pending
|
||
- pending 進入 `~/.clawteam/owner-reports/sent/`
|
||
- Discord send success / message id
|
||
- artifacts 寫入 `state/watchdog-b-verify-e2e/<run-id>/`
|
||
|
||
---
|
||
|
||
## 已知故障排查 FAQ / Troubleshooting FAQ
|
||
|
||
### Q1: `.../scripts/scripts/owner_report_producer.py` 找不到
|
||
A: 代表路徑基準錯了。正確應該在 `.../scripts/watchdog-b/owner_report_producer.py`。
|
||
|
||
修正:
|
||
|
||
```bash
|
||
./scripts/install_watchdog_bundle.sh --install-env-example --force
|
||
./scripts/bootstrap_watchdog_bundle.sh
|
||
```
|
||
|
||
### Q2: `Unknown agent id "main"`
|
||
A: 不要硬編碼 `main`。改用 `WATCHDOG_B_MAIN_AGENT_ID`(或不設讓它 skip)。
|
||
|
||
### Q3: timer active 但 owner-facing 沒送到
|
||
A: timer 只代表排程活著,不代表鏈路通。請跑:
|
||
|
||
```bash
|
||
cd ~/.openclaw/workspace/scripts/watchdog-b
|
||
./verify_watchdog_b_e2e.sh
|
||
```
|
||
|
||
並檢查 `pending/`→`sent/` 移動與 send 回傳。
|
||
|
||
---
|
||
|
||
## Safety / 清理規則
|
||
|
||
- **不要刪** `~/.clawteam/owner-reports/sent/` 歷史(除非明確要求)
|
||
- **不要刪** `state/watchdog-b/notify-state.json`(除非做 hard reset)
|
||
|
||
---
|
||
|
||
## Repo
|
||
|
||
- https://gitea.cowbay.org/openclaw/watchdog-discord-route
|