# TOOLS.md —— 本地记录 技能文件(Skills)定义的是工具**如何工作**。而这个文件是为**你的具体情况**准备的——那些你个人环境独有的信息。 ## 📢 钉钉推送统一规范(重要,所有自动提醒必须遵守) **杨轩的所有主动推送/提醒都走 DingTalk(钉钉)。统一使用 OpenClaw 的 delivery 机制发送,禁止在任务命令里手动调用 `openclaw message send`。** ### 标准格式(创建推送定时任务时照抄) ``` openclaw cron add <任务名> \ --cron "<表达式>" --tz Asia/Shanghai \ --session isolated --announce \ --channel dingtalk-connector --to 0464031658857345 \ --wake now \ --agent main \ --command 'echo "提醒文案"' ``` 要点: 1. **投递交给 delivery**:`--announce --channel dingtalk-connector --to 0464031658857345`。任务的 command payload **只负责输出文案**(用 `echo "..."`),不要在里面发消息。 2. **统一 channel 名**:`dingtalk-connector`(这是 OpenClaw 内部路由用的 channel 名,投递用这个)。 3. **指定 owner**:一律 `--agent main`(多 agent 环境下无 owner 任务会导致调度器卡死,见下面「调度器红线」)。 4. **时区**:定时用 `--tz Asia/Shanghai`。 5. payload 是 command 用 `--command`/`--command-argv`,是 agent 对话用 `--message`(但 command 简单提醒优先用 `echo`)。 ### ❌ 禁止的做法(曾经的坑) - 不要在 command 里跑 `openclaw message send --channel dingtalk-connector ...`。CLI 的 `message send` 不认识 `dingtalk-connector`(CLI 内置频道枚举只有 telegram/whatsapp/... 等,无 DingTalk 插件名),会 exit 1 失败。(曾导致 dinner-21 提醒单独坏掉,2026-09-01 修复为 echo+delivery 后与其它一致。) - 不要建无 owner(不指定 `--agent`)的定时任务。 ### 校验口径 - 判断一个推送任务健不健康:看它的 `payload` 应是 `echo "文案"` 之类,且 `delivery.mode=announce`、`delivery.channel=dingtalk-connector`、`delivery.to=0464031658857345`。整库搜 `message send` 应为 0 结果。 ## ⌛ Cron 调度器红线 - **多 agent 环境下,无 owner(agent-less)的定时任务会导致 cron reconcile 报 `Agent-less cron job has no resolvable owner`,调度器 nextWake 锁死在一个过期时间,阻塞后续所有任务。** - 已通过 `agents.defaults.systemAgent.agentId=main` + 各任务补 `--agent main` 修复(2026-09-01,提交 `940c8a6`)。 - **以后新建任何 cron 任务都必须带 `--agent main`**(或明确归属的 agent)。 - 排查命令:`openclaw cron status`(看 `nextWakeAtMs` 是否停滞)、`openclaw cron get `、`openclaw cron edit --agent main`。 ## 📋 环境提示 - 主 agent 工作区没有单独 TOOLS.md;本文件是主工作区(main agent)的本地记录。 - 钉钉插件(`@dingtalk-real-ai/dingtalk-connector` v0.8.23)运行时 `__default__` account 曾出现 `'./plugin-sdk/channel-runtime' is not defined` 的启动报错(疑似与 OpenClaw 2026.8.1 不兼容);但实际消息收发(stream)仍通。若钉钉通道异常,优先排查此插件兼容性。