Use this skill to make OpenClaw cron jobs reliably send proactive messages to Feishu.
For strong-SLA Feishu delivery, do not use:
sessionTarget: "main" + payload.kind: "systemEvent"delivery.channel: "last" as the final production routeUse this validated pattern instead:
sessionTarget: "isolated"payload.kind: "agentTurn"delivery.mode: "announce"delivery.channel: "feishu"delivery.accountId: delivery.to: user: or another explicit Feishu destinationopenclaw cron list --json.lastDeliveryStatus: not-requested usually means it never entered outbound delivery.status/error with Feishu 400 usually means delivery was attempted but the route/payload was rejected.main + systemEventTreat it as an internal wakeup pattern, not user-visible delivery.
Repair it by changing to:
--session isolated--message "..."--announce--channel feishu--account --to user:isolated + announce + channel:lastTreat last as debugging-only for Feishu. If it fails or returns 400, replace it with explicit routing:
--channel feishu--account --to user:Use:
--session isolated--message "..."--no-deliveror set delivery.mode: "none".
After creating or editing a Feishu cron job:
scripts/create_smoke_test.py if you want a deterministic command generator.openclaw cron runs --id .Successful validation means:
oknot-requestedopenclaw cron add \
--name "Feishu delivery smoke test" \
--at "2026-04-04T14:32:30" \
--tz "Asia/Shanghai" \
--session isolated \
--message "在本轮只输出这一句话:主动消息链路测试。" \
--announce \
--channel feishu \
--account default \
--to "user:OPEN_ID" \
--delete-after-run
openclaw cron add \
--name "xhs-progress-15m" \
--cron "*/15 * * * *" \
--tz "Asia/Shanghai" \
--session isolated \
--message "请输出一份发给老姚的中文进度报告..." \
--announce \
--channel feishu \
--account default \
--to "user:OPEN_ID"
openclaw cron add \
--name "daily-memory-report-0900" \
--cron "0 9 * * *" \
--tz "Asia/Shanghai" \
--session isolated \
--message "请向老姚发送一份中文晨报..." \
--announce \
--channel feishu \
--account default \
--to "user:OPEN_ID"
Split internal work from user-visible delivery when needed:
delivery.mode: noneThis avoids confusing internal maintenance with outward delivery.
Before publishing:
OPEN_ID, ACCOUNT_ID)Read references/validated-pattern.md for the concrete failure modes and the validated fix pattern.
共 1 个版本