Gmail Pub/Sub -> OpenClaw

目标:Gmail watch -> Pub/Sub 推送 -> gog gmail watch serve -> OpenClaw webhook。 前置条件 已安装并登录 gcloud(安装指南)。 已安装 gog (gogcli) 并为 Gmail 账户授权(gogcli.sh)。 已启用 OpenClaw hooks(参见 Webhooks)。 已登录 tailscale(tailscale.com)。支持的设置使用 Tailscale Funnel 作为公共 HTTPS 端点。 其他隧道服务也可以使用,但需要自行配置/不受支持,需要手动接入。 目前,我们支持的是 Tailscale。 示例 hook 配置(启用 Gmail 预设映射): { hooks: { enabled: true, token: "OPENCLAW_HOOK_TOKEN", path: "/hooks", presets: ["gmail"], }, } 要将 Gmail 摘要投递到聊天界面,请用设置了 deliver 以及可选的 channel/to 的映射覆盖预设: { hooks: { enabled: true, token: "OPENCLAW_HOOK_TOKEN", presets: ["gmail"], mappings: [ { match: { path: "gmail" }, action: "agent", wakeMode: "now", name: "Gmail", sessionKey: "hook:gmail:{{messages[0].id}}", messageTemplate: "New email from {{messages[0].from}}\nSubject: {{messages[0].subject}}\n{{messages[0].snippet}}\n{{messages[0].body}}", model: "openai/gpt-5.2-mini", deliver: true, channel: "last", // to: "+15551234567" }, ], }, } 如果你想使用固定渠道,请设置 channel + to。否则 channel: "last" 会使用上次的投递路由(默认回退到 WhatsApp)。 ...

Hooks

Hooks 提供了一个可扩展的事件驱动系统,用于响应智能体命令和事件自动执行操作。Hooks 从目录中自动发现,可以通过 CLI 命令管理,类似于 OpenClaw 中 Skills 的工作方式。 入门指南 Hooks 是在事件发生时运行的小脚本。有两种类型: Hooks(本页):当智能体事件触发时在 Gateway 网关内运行,如 /new、/reset、/stop 或生命周期事件。 Webhooks:外部 HTTP webhooks,让其他系统触发 OpenClaw 中的工作。参见 Webhook Hooks 或使用 openclaw webhooks 获取 Gmail 助手命令。 Hooks 也可以捆绑在插件中;参见 插件。 常见用途: 重置会话时保存记忆快照 保留命令审计跟踪用于故障排除或合规 会话开始或结束时触发后续自动化 事件触发时向智能体工作区写入文件或调用外部 API 如果你能写一个小的 TypeScript 函数,你就能写一个 hook。Hooks 会自动发现,你可以通过 CLI 启用或禁用它们。 概述 hooks 系统允许你: 在发出 /new 时将会话上下文保存到记忆 记录所有命令以供审计 在智能体生命周期事件上触发自定义自动化 在不修改核心代码的情况下扩展 OpenClaw 的行为 入门 捆绑的 Hooks OpenClaw 附带三个自动发现的捆绑 hooks: 💾 session-memory:当你发出 /new 时将会话上下文保存到智能体工作区(默认 ~/.openclaw/workspace/memory/) 📝 command-logger:将所有命令事件记录到 ~/.openclaw/logs/commands.log 🚀 boot-md:当 Gateway 网关启动时运行 BOOT.md(需要启用内部 hooks) 列出可用的 hooks: ...

Webhooks

Gateway 网关可以暴露一个小型 HTTP webhook 端点用于外部触发。 启用 { hooks: { enabled: true, token: "shared-secret", path: "/hooks", }, } 注意事项: 当 hooks.enabled=true 时,hooks.token 为必填项。 hooks.path 默认为 /hooks。 认证 每个请求必须包含 hook 令牌。推荐使用请求头: Authorization: Bearer <token>(推荐) x-openclaw-token: <token> ?token=<token>(已弃用;会记录警告日志,将在未来的主要版本中移除) 端点 POST /hooks/wake 请求体: { "text": "System line", "mode": "now" } text 必填(字符串):事件描述(例如"收到新邮件")。 mode 可选(now | next-heartbeat):是否立即触发心跳(默认 now)或等待下一次定期检查。 效果: 为主会话加入一个系统事件队列 如果 mode=now,则立即触发心跳 POST /hooks/agent 请求体: { "message": "Run this", "name": "Email", "sessionKey": "hook:email:msg-123", "wakeMode": "now", "deliver": true, "channel": "last", "to": "+15551234567", "model": "openai/gpt-5.2-mini", "thinking": "low", "timeoutSeconds": 120 } message 必填(字符串):智能体要处理的提示或消息。 name 可选(字符串):hook 的可读名称(例如"GitHub"),用作会话摘要的前缀。 sessionKey 可选(字符串):用于标识智能体会话的键。默认为随机的 hook:<uuid>。使用一致的键可以在 hook 上下文中进行多轮对话。 wakeMode 可选(now | next-heartbeat):是否立即触发心跳(默认 now)或等待下一次定期检查。 deliver 可选(布尔值):如果为 true,智能体的响应将发送到消息渠道。默认为 true。仅为心跳确认的响应会自动跳过。 channel 可选(字符串):用于投递的消息渠道。可选值:last、whatsapp、telegram、discord、slack、mattermost(插件)、signal、imessage、msteams。默认为 last。 to 可选(字符串):渠道的接收者标识符(例如 WhatsApp/Signal 的电话号码、Telegram 的聊天 ID、Discord/Slack/Mattermost(插件)的频道 ID、MS Teams 的会话 ID)。默认为主会话中的最后一个接收者。 model 可选(字符串):模型覆盖(例如 anthropic/claude-3-5-sonnet 或别名)。如果有限制,必须在允许的模型列表中。 thinking 可选(字符串):思考级别覆盖(例如 low、medium、high)。 timeoutSeconds 可选(数字):智能体运行的最大持续时间(秒)。 效果: ...

定时任务(Gateway网关调度器)

定时任务还是心跳? 请参阅定时任务与心跳对比了解何时使用哪种方式。 定时任务是 Gateway网关内置的调度器。它持久化任务、在合适的时间唤醒智能体,并可选择将输出发送回聊天。 如果你想要 “每天早上运行” 或 “20 分钟后提醒智能体”,定时任务就是对应的机制。 简要概述 定时任务运行在 Gateway网关内部(而非模型内部)。 任务持久化存储在 ~/.openclaw/cron/ 下,因此重启不会丢失计划。 两种执行方式: 主会话:入队一个系统事件,然后在下一次心跳时运行。 隔离式:在 cron:<jobId> 中运行专用智能体轮次,可投递摘要(默认 announce)或不投递。 唤醒是一等功能:任务可以请求"立即唤醒"或"下次心跳时"。 快速开始(可操作) 创建一个一次性提醒,验证其存在,然后立即运行: openclaw cron add \ --name "Reminder" \ --at "2026-02-01T16:00:00Z" \ --session main \ --system-event "Reminder: check the cron docs draft" \ --wake now \ --delete-after-run openclaw cron list openclaw cron run <job-id> --force openclaw cron runs --id <job-id> 调度一个带投递功能的周期性隔离任务: openclaw cron add \ --name "Morning brief" \ --cron "0 7 * * *" \ --tz "America/Los_Angeles" \ --session isolated \ --message "Summarize overnight updates." \ --announce \ --channel slack \ --to "channel:C1234567890" 工具调用等价形式(Gateway网关定时任务工具) 有关规范的 JSON 结构和示例,请参阅工具调用的 JSON 模式。 ...

定时任务与心跳:何时使用哪种方式

心跳和定时任务都可以按计划运行任务。本指南帮助你根据使用场景选择合适的机制。 快速决策指南 使用场景 推荐方式 原因 每 30 分钟检查收件箱 心跳 可与其他检查批量处理,具备上下文感知能力 每天上午 9 点准时发送报告 定时任务(隔离式) 需要精确定时 监控日历中即将到来的事件 心跳 天然适合周期性感知 运行每周深度分析 定时任务(隔离式) 独立任务,可使用不同模型 20 分钟后提醒我 定时任务(主会话,--at) 精确定时的一次性任务 后台项目健康检查 心跳 搭载在现有周期上 心跳:周期性感知 心跳在主会话中以固定间隔运行(默认:30 分钟)。它的设计目的是让智能体检查各种事项并呈现重要信息。 何时使用心跳 多个周期性检查:与其设置 5 个独立的定时任务分别检查收件箱、日历、天气、通知和项目状态,不如用一次心跳批量处理所有内容。 上下文感知决策:智能体拥有完整的主会话上下文,因此可以智能判断哪些紧急、哪些可以等待。 对话连续性:心跳运行共享同一会话,因此智能体记得最近的对话,可以自然地进行后续跟进。 低开销监控:一次心跳替代多个小型轮询任务。 心跳优势 批量处理多项检查:一次智能体轮次可以同时审查收件箱、日历和通知。 减少 API 调用:一次心跳比 5 个隔离式定时任务更经济。 上下文感知:智能体了解你一直在做什么,可以据此排定优先级。 智能抑制:如果没有需要关注的事项,智能体回复 HEARTBEAT_OK,不会投递任何消息。 自然定时:会根据队列负载略有漂移,但对大多数监控来说没有问题。 心跳示例:HEARTBEAT.md 检查清单 # Heartbeat checklist - Check email for urgent messages - Review calendar for events in next 2 hours - If a background task finished, summarize results - If idle for 8+ hours, send a brief check-in 智能体在每次心跳时读取此清单,并在一次轮次中处理所有项目。 ...

投票

支持的渠道 WhatsApp(Web 渠道) Discord MS Teams(Adaptive Cards) CLI # WhatsApp openclaw message poll --target +15555550123 \ --poll-question "Lunch today?" --poll-option "Yes" --poll-option "No" --poll-option "Maybe" openclaw message poll --target [email protected] \ --poll-question "Meeting time?" --poll-option "10am" --poll-option "2pm" --poll-option "4pm" --poll-multi # Discord openclaw message poll --channel discord --target channel:123456789 \ --poll-question "Snack?" --poll-option "Pizza" --poll-option "Sushi" openclaw message poll --channel discord --target channel:123456789 \ --poll-question "Plan?" --poll-option "A" --poll-option "B" --poll-duration-hours 48 # MS Teams openclaw message poll --channel msteams --target conversation:19:[email protected] \ --poll-question "Lunch?" --poll-option "Pizza" --poll-option "Sushi" 选项: ...

自动化故障排查

该页面是英文文档的中文占位版本,完整内容请先参考英文版:Automation Troubleshooting。

认证监控

OpenClaw 通过 openclaw models status 提供 OAuth 过期健康状态。请使用该命令进行自动化和告警;脚本是为手机工作流程提供的可选附加功能。 推荐方式:CLI 检查(可移植) openclaw models status --check 退出码: 0:正常 1:凭证过期或缺失 2:即将过期(24 小时内) 此方式适用于 cron/systemd,无需额外脚本。 可选脚本(运维 / 手机工作流程) 这些脚本位于 scripts/ 目录下,属于可选内容。它们假定你可以通过 SSH 访问 Gateway 网关主机,并针对 systemd + Termux 进行了调优。 scripts/claude-auth-status.sh 现在使用 openclaw models status --json 作为数据来源(如果 CLI 不可用则回退到直接读取文件),因此请确保 openclaw 在定时器的 PATH 中。 scripts/auth-monitor.sh:cron/systemd 定时器目标;发送告警(ntfy 或手机)。 scripts/systemd/openclaw-auth-monitor.{service,timer}:systemd 用户定时器。 scripts/claude-auth-status.sh:Claude Code + OpenClaw 认证检查器(完整/json/简洁模式)。 scripts/mobile-reauth.sh:通过 SSH 引导的重新认证流程。 scripts/termux-quick-auth.sh:一键小部件状态查看 + 打开认证 URL。 scripts/termux-auth-widget.sh:完整的引导式小部件流程。 scripts/termux-sync-widget.sh:同步 Claude Code 凭证 → OpenClaw。 如果你不需要手机自动化或 systemd 定时器,可以跳过这些脚本。