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:
+23
-5
@@ -420,17 +420,35 @@ PG_PASS="$(grep -E '^PGPASSWORD=' "$ENV_FILE" | head -1 | cut -d= -f2- | tr -d '
|
||||
原 `git add "workspace-${WS}/db/"` 同理。
|
||||
|
||||
**验收(Task C)**
|
||||
|
||||
> ⚠️ **实测教训(2026-09-16,已造成真实故障)**
|
||||
> **绝不要用 `sudo` 跑本脚本**:生产路径是 **yangxuan 的 crontab**(root crontab 为空)。
|
||||
> 用 `sudo` 跑会生成 **root 属主**的备份目录/文件,导致**次日 3:00 的 yangxuan cron 写不进去**,
|
||||
> 备份从此天天失败。实测证据:`workspace-{juaner,wellness,tab}/db` 曾是 root 属主,
|
||||
> 这 3 个库自 **2026-08-26** 起每天 `❌ 备份失败`(日志 `workspace/db/backup.log`)。
|
||||
|
||||
```bash
|
||||
# 0) 前置:修复 root 属主的 db 目录(否则这 3 个库必然继续失败)
|
||||
for d in /home/yangxuan/.openclaw/workspace*/db; do
|
||||
[ -d "$d" ] && [ "$(stat -c %U "$d")" = "root" ] && sudo -n chown -R yangxuan:yangxuan "$d"
|
||||
done
|
||||
stat -c '%U:%G %n' /home/yangxuan/.openclaw/workspace*/db # 应全部为 yangxuan:yangxuan
|
||||
|
||||
# 1) 语法
|
||||
sudo bash -n /usr/local/bin/backup-agent-dbs.sh
|
||||
# 2) 手动跑一次(观察新增 agent 是否被纳入)
|
||||
sudo /usr/local/bin/backup-agent-dbs.sh; tail -20 ~/.openclaw/workspace/db/backup.log
|
||||
# 3) 确认备份文件落在各 workspace 的 db/ 下且已 gz
|
||||
bash -n /usr/local/bin/backup-agent-dbs.sh
|
||||
# 2) 手动跑一次(以 yangxuan 身份,**不加 sudo**)
|
||||
/usr/local/bin/backup-agent-dbs.sh; tail -20 ~/.openclaw/workspace/db/backup.log
|
||||
# → 期望日志出现「备份目标:…」且成功的库数 = 库真实存在且已在 agents.entries 中的 agent 数
|
||||
# 3) 确认备份文件落在各 workspace 的 db/ 下且已 gz、属主为 yangxuan
|
||||
ls -la ~/.openclaw/workspace-*/db/*_$(date +%Y%m%d).sql.gz 2>/dev/null | head
|
||||
# 4) 确认脚本内无明文密码
|
||||
sudo grep -nE 'MYSQL_PASS="|PG_PASS="' /usr/local/bin/backup-agent-dbs.sh
|
||||
grep -nE 'MYSQL_PASS="|PG_PASS="' /usr/local/bin/backup-agent-dbs.sh
|
||||
```
|
||||
|
||||
> **另一处必须知道的差异**:`.env` 中**没有** `MYSQL_PWD_ROOT`(只有 `MYSQL_PWD`)。
|
||||
> 正确写法是「优先 `MYSQL_PWD_ROOT`、回退 `MYSQL_PWD`」,这样 Task A/E 之后补上该键会自动生效。
|
||||
> 另注意:`openclaw` 不在 `agents.entries`(当前只有 11 个 id),**它必须先进入该配置才会被动态发现**(Task E 处理)。
|
||||
|
||||
---
|
||||
|
||||
## Task D:main 红线 + 文档索引
|
||||
|
||||
Reference in New Issue
Block a user