feat(agent-db): 引入 db-conn.sh 统一数据库入口,各 agent 改用专用账号

- 新增 scripts/db-conn.sh:按 agent id 反查中文名,读 .env 后经 MYSQL_PWD 转发给 docker exec,口令不进 argv/stdout,--print 只输出占位符
- new-agent.sh 新增 --adopt 模式(为既有 agent 补建库/账号),与 --reset-password 互斥
- AGENTS.md.tpl 与 11 个 workspace-*/AGENTS.md 改用 db-conn.sh,禁用 root 与 docker exec 直连
- mysql-schema-sync 技能改用 MYSQL_PWD_SQL 环境变量,不再硬编码密码
- 设计文档补附录 A 第 8 条:中文键名无法注入 agent 环境的三条实测依据
This commit is contained in:
2026-09-16 11:30:55 +08:00
parent 75d3aa8067
commit 31c9958741
16 changed files with 315 additions and 14 deletions
+7
View File
@@ -38,6 +38,13 @@
禁止自行拼 SQL、禁止用 `mysql`/`docker exec` 建库、禁止为建库读取任何 root 凭据、禁止手工创建 `workspace-*` 或手改 agents 配置。
- **数据库红线**:每个 agent 只能访问自己的库(库名 = 自己的 agent id),账号为 `agent_<id>`;禁止使用 root、禁止跨库写入。
## 数据库规范(专用账号)
- 默认库:`main`;账号:`agent_main`
- 连接(推荐):`~/.openclaw/scripts/db-conn.sh main`(交互式)或 `~/.openclaw/scripts/db-conn.sh main --sql "select database()"`
- 该脚本自动从 `~/.openclaw/.env` 读取本 agent 的专属口令(键名 `DB_PASSWORD_助手`),口令不会出现在命令行中
- 禁止使用 root、禁止 docker exec、禁止访问其他 agent 的库
## 外部 vs 内部
**可以自由执行的操作:** 文件读取、网络搜索、日历查看、工作区内工作