feat(agent): 建立 agent 创建规范与数据库自动化

- scripts/new-agent.sh:建库/建号/授权/写 .env/创建 agent/渲染中文模板/自检,幂等且默认拒绝覆盖
- scripts/agent-templates/:5 个中文模板(IDENTITY/SOUL/AGENTS/MEMORY/USER)
- skills/agent-provisioning/:main 创建 agent 的唯一入口与红线(description 覆盖中英触发说法)
- workspace/:修复悬空 gitlink,将 9 个配置文档纳入版本控制(含新增创建 agent 与数据库红线)
- docs/:设计文档(含附录 A 实测发现)、实现计划(含 sudo 事故修正)
- .gitignore:workspace 白名单,避免数据/技能/媒体进入版本库
This commit is contained in:
2026-09-16 11:18:16 +08:00
parent 0b20494f78
commit 83439ee623
22 changed files with 1054 additions and 7 deletions
+45
View File
@@ -0,0 +1,45 @@
# 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 环境下,无 owneragent-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 <id>``openclaw cron edit <id> --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)仍通。若钉钉通道异常,优先排查此插件兼容性。