refactor(db-query): 本地库改走 db-conn.sh,远程迁至 db-remote.json
- db_query.py 重写:本地库由 agents.entries 动态推导并调用 db-conn.sh(账号 agent_<id>,不用 root、脚本不接触口令);远程改读 db-remote.json 的 password_env,SSH 隧道逻辑未改动 - db-config.json 更名为 db-config.json.deprecated-20260916(保留备查);新建 ~/.config/clawdbot/db-remote.json(3 个 VPS 主库,仅存口令键名,无明文) - 同步调用方文档:workspace/MEMORY.md、wellness 与 tab 技能文档、workspace-finances/SOUL.md(删除含明文口令的旧连接块) - 注:workspace/skills/** 受 .gitignore 覆盖,db-query 技能本体的改动仅存于磁盘未入库 - 已知遗留:workspace-finances/db_config.json(含明文)被 23 个历史脚本引用,未动
This commit is contained in:
@@ -12,14 +12,18 @@ date: "2026-08-25T13:29:04.543Z"
|
|||||||
|
|
||||||
## 数据库连接
|
## 数据库连接
|
||||||
|
|
||||||
复用 db-query skill 配置,数据库名「按摩放松」:
|
本库 `wellness` 是 agent `wellness` 的本地私有库:库名 = agent id,账号 `agent_wellness`,唯一入口 `db-conn.sh`。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python3 skills/db-query/scripts/db_query.py --database "按摩放松" --query "<SQL>"
|
# 推荐(新机制唯一入口)
|
||||||
|
~/.openclaw/scripts/db-conn.sh wellness --sql "<SQL>"
|
||||||
|
|
||||||
|
# 也可以走 db-query skill(内部同样走 db-conn.sh)
|
||||||
|
python3 /home/yangxuan/.openclaw/workspace/skills/db-query/scripts/db_query.py --database wellness --query "<SQL>"
|
||||||
```
|
```
|
||||||
|
|
||||||
- 连接方式:localhost Docker MySQL(127.0.0.1:3306),user=root,password 已配置
|
- 连接方式:本机 Docker MySQL 容器,账号 `agent_wellness`(**禁止 root、禁止 docker exec 直连、禁止跨库**)
|
||||||
- 所有查询/写入都走 db-query 脚本,凭据不直连
|
- 口令存 `~/.openclaw/.env` 的 `DB_PASSWORD_放松保健`,由 `db-conn.sh` 内部读取(不进命令行、不打印)
|
||||||
- 执行路径:`/home/yangxuan/.openclaw/workspace/skills/db-query/scripts/db_query.py`
|
- 执行路径:`/home/yangxuan/.openclaw/workspace/skills/db-query/scripts/db_query.py`
|
||||||
|
|
||||||
## 表结构
|
## 表结构
|
||||||
|
|||||||
@@ -32,12 +32,11 @@
|
|||||||
| 应急金(月应储蓄/月开销) | 3-6个月 | <1个月 |
|
| 应急金(月应储蓄/月开销) | 3-6个月 | <1个月 |
|
||||||
| 投资占比(投资/总资产) | 20-40% | - |
|
| 投资占比(投资/总资产) | 20-40% | - |
|
||||||
|
|
||||||
## 数据库连接
|
## 数据库连接(2026-09-16 迁移到新机制)
|
||||||
- 配置文件: `db_config.json`(chmod 600,仅本用户可读)
|
|
||||||
- host: 127.0.0.1
|
- **库名 = agent id**:`finances`;账号固定 `agent_finances`
|
||||||
- port: 3306
|
- **唯一入口**:`~/.openclaw/scripts/db-conn.sh finances [--sql "<SQL>"]`
|
||||||
- user: root
|
- 口令存 `~/.openclaw/.env` 的 `DB_PASSWORD_理财`,由脚本内部读取(**不进命令行、不打印**)
|
||||||
- password: 5gynj20J
|
- **禁止**:使用 root、`docker exec` 直连、访问其它 agent 的库
|
||||||
- database: finances
|
- 历史遗留:工作区里 2026-07/08 的一次性导入脚本仍读旧的 `db_config.json`(含 root 明文口令),
|
||||||
- 读取方式: Python中 `json.load(open('db_config.json'))`
|
**不要照抄这种写法**;新脚本一律走 `db-conn.sh`
|
||||||
- **禁止**在Python代码、SQL脚本中硬编码密码
|
|
||||||
|
|||||||
@@ -9,14 +9,19 @@ description: "管理 tab 项目数据库(本地 MySQL tab 库)。新增/去
|
|||||||
|
|
||||||
## 数据库连接
|
## 数据库连接
|
||||||
|
|
||||||
连接库名「**tab**」:
|
本库 `tab` 是 agent `tab` 的本地私有库(账号 `agent_tab`,唯一入口 `db-conn.sh`):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# 推荐(新机制唯一入口)
|
||||||
|
~/.openclaw/scripts/db-conn.sh tab --sql "<SQL>"
|
||||||
|
|
||||||
|
# 也可以走 db-query skill(内部同样走 db-conn.sh)
|
||||||
python3 /home/yangxuan/.openclaw/workspace/skills/db-query/scripts/db_query.py --database "tab" --query "<SQL>"
|
python3 /home/yangxuan/.openclaw/workspace/skills/db-query/scripts/db_query.py --database "tab" --query "<SQL>"
|
||||||
```
|
```
|
||||||
|
|
||||||
- 本地 Docker MySQL(127.0.0.1:3306),user=root,密码已配置
|
- 本地 Docker MySQL 容器,账号 `agent_tab`(**禁止 root、禁止 docker exec 直连、禁止跨库**)
|
||||||
- 凭据不直连,统一走 db-query 脚本
|
- 口令存 `~/.openclaw/.env` 的 `DB_PASSWORD_导航页`,由 `db-conn.sh` 内部读取(不进命令行、不打印)
|
||||||
|
- 输出为 **TSV、无表头**(`mysql -N -B`),解析时按制表符切分
|
||||||
- 注意:`order` 是保留字,涉及时必须用反引号 `` `order` ``
|
- 注意:`order` 是保留字,涉及时必须用反引号 `` `order` ``
|
||||||
|
|
||||||
## 表结构(三张)
|
## 表结构(三张)
|
||||||
|
|||||||
@@ -9,14 +9,18 @@ description: "管理按摩放松记录:查询/新增技师联系人(cc_contr
|
|||||||
|
|
||||||
## 数据库连接
|
## 数据库连接
|
||||||
|
|
||||||
复用 db-query skill 配置,数据库名「按摩放松」:
|
本库 `wellness` 是 agent `wellness` 的本地私有库:库名 = agent id,账号 `agent_wellness`,唯一入口 `db-conn.sh`。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python3 skills/db-query/scripts/db_query.py --database "按摩放松" --query "<SQL>"
|
# 推荐(新机制唯一入口)
|
||||||
|
~/.openclaw/scripts/db-conn.sh wellness --sql "<SQL>"
|
||||||
|
|
||||||
|
# 也可以走 db-query skill(内部同样走 db-conn.sh)
|
||||||
|
python3 /home/yangxuan/.openclaw/workspace/skills/db-query/scripts/db_query.py --database wellness --query "<SQL>"
|
||||||
```
|
```
|
||||||
|
|
||||||
- 连接方式:localhost Docker MySQL(127.0.0.1:3306),user=root,password 已配置
|
- 连接方式:本机 Docker MySQL 容器,账号 `agent_wellness`(**禁止 root、禁止 docker exec 直连、禁止跨库**)
|
||||||
- 所有查询/写入都走 db-query 脚本,凭据不直连
|
- 口令存 `~/.openclaw/.env` 的 `DB_PASSWORD_放松保健`,由 `db-conn.sh` 内部读取(不进命令行、不打印)
|
||||||
- 执行路径:`/home/yangxuan/.openclaw/workspace/skills/db-query/scripts/db_query.py`
|
- 执行路径:`/home/yangxuan/.openclaw/workspace/skills/db-query/scripts/db_query.py`
|
||||||
|
|
||||||
## 表结构
|
## 表结构
|
||||||
|
|||||||
+24
-19
@@ -30,28 +30,33 @@
|
|||||||
|
|
||||||
**「本地数据库」「本地 MySQL」= 本机 Docker 容器 MySQL**(非远程、非 WSL),统一环境定义:
|
**「本地数据库」「本地 MySQL」= 本机 Docker 容器 MySQL**(非远程、非 WSL),统一环境定义:
|
||||||
|
|
||||||
- **连接**:`127.0.0.1:3306`,user=root(密码在 db-config.json)
|
- **连接**:本机 Docker MySQL 容器(宿主端口 `127.0.0.1:3306`;入口脚本在容器内执行 mysql,不经 TCP);**库名 = agent id**,账号固定 `agent_<id>`;口令存 `~/.openclaw/.env` 的 `DB_PASSWORD_<中文名>`,由脚本内部读取(不进命令行、不进 stdout)
|
||||||
- **本质**:跑在本机 Docker 里的 MySQL 容器(`docker ps` 可见,端口映射 3306)
|
- **本质**:跑在本机 Docker 里的 MySQL 容器(`docker ps` 可见,端口映射 3306)
|
||||||
- **操作方式**:一律走 `db-query` skill(`python3 skills/db-query/scripts/db_query.py --database "<库名>" --query "<SQL>"`),凭据不直连
|
- **操作方式**:**唯一入口** `~/.openclaw/scripts/db-conn.sh <agent_id> [--sql "<SQL>"]`;`db-query` skill(`python3 skills/db-query/scripts/db_query.py --database <agent_id> --query "<SQL>"`)已改为内部走同一入口,亦可使用
|
||||||
- **库清单**(db-config.json「name」):tab / 按摩放松(wellness) / 卷儿记账(juaner) / 理财财务(finances) / 健身健康(fitness) / 后端开发(main) / 简历管理(resume) / 旅行规划(travel)
|
- **红线**:禁止使用 root、禁止 `docker exec` 直连、禁止跨库访问
|
||||||
- **对照**:远程库是 `101.34.227.188:3306` 那几个 VPS 主库(dmp_serp/dmp_smdm/dmp_smes),不是本地
|
- **库清单**(库名 = agent id,括号内为权威中文名):tab(导航页) / wellness(放松保健) / juaner(卷儿) / finances(理财) / fitness(健康) / main(助手) / resume(简历) / travel(旅行) / sql(SQL) / note(笔记) / pbs(PBS备份)
|
||||||
|
- **对照**:远程库是 `101.34.227.188:3306` 那几个 VPS 主库(dmp_serp/dmp_smdm/dmp_smes),不是本地;配置在 `~/.config/clawdbot/db-remote.json`(**不含明文口令**,口令走 `.env` 的 `MYSQL_PWD_SQL`)
|
||||||
|
- **旧机制**:`~/.config/clawdbot/db-config.json` 已于 2026-09-16 重命名为 `db-config.json.deprecated-20260916`(仅备回滚),已无引用
|
||||||
|
|
||||||
### 本地库 ↔ Agent 映射(同一 Docker MySQL 实例)
|
### 本地库 ↔ Agent 映射(同一 Docker MySQL 实例)
|
||||||
|
|
||||||
> 所有本地库都在**同一个** 127.0.0.1:3306 容器里,不是每个库一个实例。每个库都有归属 agent(下表);db-query「name」列是连库时用的描述名。
|
> 所有本地库都在**同一个** 127.0.0.1:3306 容器里,不是每个库一个实例;**库名 = 归属 agent id**,账号 = `agent_<id>`,唯一入口 = `db-conn.sh`。
|
||||||
|
|
||||||
| 数据库(库名) | 归属 agent | 用途 | db-query「name」 |
|
| 数据库(库名) | 归属 agent | 权威中文名 | 用途 | 连接方式 |
|
||||||
|------|-----------|------|------|
|
|------|-----------|-----------|------|------|
|
||||||
| `tab` | **tab** | 引擎/站点/站点类型 | tab |
|
| `tab` | **tab** | 导航页 | 引擎/站点/站点类型 | `db-conn.sh tab` |
|
||||||
| `wellness` | **wellness** | 按摩放松记录 | 按摩放松 |
|
| `wellness` | **wellness** | 放松保健 | 放松保健记录(技师联系人/放松记录) | `db-conn.sh wellness` |
|
||||||
| `finances` | **finances** | 家庭理财财务 | 理财财务 |
|
| `finances` | **finances** | 理财 | 家庭理财、收支分析 | `db-conn.sh finances` |
|
||||||
| `fitness` | **fitness** | 健身健康 | 健身健康 |
|
| `fitness` | **fitness** | 健康 | 健身减脂、饮食与运动记录 | `db-conn.sh fitness` |
|
||||||
| `resume` | **resume** | 简历管理 | 简历管理 |
|
| `resume` | **resume** | 简历 | 简历评审优化、面试准备 | `db-conn.sh resume` |
|
||||||
| `travel` | **travel** | 旅行规划 | 旅行规划 |
|
| `travel` | **travel** | 旅行 | 行程规划、目的地推荐 | `db-conn.sh travel` |
|
||||||
| `juaner` | **juaner** | 卷儿记账(todos/transactions) | 卷儿记账 |
|
| `juaner` | **juaner** | 卷儿 | 记账户应用数据(todos/transactions) | `db-conn.sh juaner` |
|
||||||
| `main` | **main** | 主库(conversation_notes/tasks/user_preferences) | 后端开发 |
|
| `main` | **main** | 助手 | 后端应用主库(conversation_notes/tasks/user_preferences) | `db-conn.sh main` |
|
||||||
|
| `sql` | **sql** | SQL | SQL/数据库工作库 | `db-conn.sh sql` |
|
||||||
|
| `note` | **note** | 笔记 | 笔记归档 | `db-conn.sh note` |
|
||||||
|
| `pbs` | **pbs** | PBS备份 | PBS 备份 | `db-conn.sh pbs` |
|
||||||
|
|
||||||
> 注:`juaner` agent 是杨锦书陪伴助手,但它同时管理 `juaner` 记账库;`main` agent 是主助手,其 `main` 库即后端应用主库。
|
> 注:`juaner` agent 是杨锦书陪伴助手,`juaner` 库是记账户应用的数据;`main` 库是后端应用主库。新机制下每个 agent 只持有并只访问以自己 id 命名的库,互相不可见。
|
||||||
|
|
||||||
> 触发词:用户一提「本地数据库 / 本地 MySQL / Docker 里的库」→ 默认指上述 127.0.0.1:3306 的 Docker 实例。拿不准就按这个核对。
|
> 触发词:用户一提「本地数据库 / 本地 MySQL / Docker 里的库」→ 默认指上述 127.0.0.1:3306 的 Docker 实例。拿不准就按这个核对。
|
||||||
|
|
||||||
@@ -102,7 +107,7 @@
|
|||||||
|
|
||||||
| Agent | 职责 |
|
| Agent | 职责 |
|
||||||
|-------|------|
|
|-------|------|
|
||||||
| **main** | 主助手:统一调度、记忆管理、日常对话、任务分发;其 `main` 库(后端开发,conversation_notes/tasks/user_preferences)归 main 管理 |
|
| **main** | 主助手:统一调度、记忆管理、日常对话、任务分发;其 `main` 库(后端应用主库,conversation_notes/tasks/user_preferences)归 main 管理 |
|
||||||
| **resume** | 简历助手:简历评审优化、面试准备、职业建议;**同时负责周报生成**(维云智造G5周报 → 存入钉邮草稿箱,带 weekly-report-g5 skill) |
|
| **resume** | 简历助手:简历评审优化、面试准备、职业建议;**同时负责周报生成**(维云智造G5周报 → 存入钉邮草稿箱,带 weekly-report-g5 skill) |
|
||||||
| **travel** | 旅途助手:行程规划、目的地推荐、交通住宿、美食签证 |
|
| **travel** | 旅途助手:行程规划、目的地推荐、交通住宿、美食签证 |
|
||||||
| **fitness** | 健身 🏋️:健康减脂教练、饮食记录分析、运动跟踪、平台期突破 |
|
| **fitness** | 健身 🏋️:健康减脂教练、饮食记录分析、运动跟踪、平台期突破 |
|
||||||
@@ -111,8 +116,8 @@
|
|||||||
| **note** | 笔记 📝:管理/归档 /home/yangxuan/seafile/笔记(Obsidian 库),整理对话产生的知识文档 |
|
| **note** | 笔记 📝:管理/归档 /home/yangxuan/seafile/笔记(Obsidian 库),整理对话产生的知识文档 |
|
||||||
| **juaner** | 卷儿 👧:杨锦书专属陪伴助手;同时管理 `juaner` 记账库(todos/transactions) |
|
| **juaner** | 卷儿 👧:杨锦书专属陪伴助手;同时管理 `juaner` 记账库(todos/transactions) |
|
||||||
| **pbs** | PBS备份 💾:Proxmox Backup Server (pbs01) 备份管理,中文交互(Tailscale 100.115.195.195,SSH 免密 root,见 workspace-pbs/AGENTS.md) |
|
| **pbs** | PBS备份 💾:Proxmox Backup Server (pbs01) 备份管理,中文交互(Tailscale 100.115.195.195,SSH 免密 root,见 workspace-pbs/AGENTS.md) |
|
||||||
| **wellness** | 放松保健 💆:管理按摩放松记录(本地 MySQL wellness 库),查询/新增技师联系人(cc_contract)和放松记录(cc_contract_record),db-query「按摩放松」连接,见 workspace-wellness/skills/wellness |
|
| **wellness** | 放松保健 💆:管理放松保健记录(本地 MySQL `wellness` 库,账号 `agent_wellness`),查询/新增技师联系人(cc_contract)和放松记录(cc_contract_record),入口 `db-conn.sh wellness`/`db-query --database wellness`,见 workspace-wellness/skills/wellness |
|
||||||
| **tab** | 项目管理 🗄️:管理 tab 项目数据库(本地 MySQL tab 库),新增引擎/站点/站点类型(含去重)、启用禁用(status 切换),icon 自动取 favicon,db-query「tab」连接,见 workspace-tab/skills/tab |
|
| **tab** | 项目管理 🗄️:管理 tab 项目数据库(本地 MySQL `tab` 库,账号 `agent_tab`),新增引擎/站点/站点类型(含去重)、启用禁用(status 切换),icon 自动取 favicon,入口 `db-conn.sh tab`/`db-query --database tab`,见 workspace-tab/skills/tab |
|
||||||
|
|
||||||
- config 见 `openclaw.json` → `agents.list`
|
- config 见 `openclaw.json` → `agents.list`
|
||||||
- `subagents.allowAgents` 已设为 `["*"]`,main 可 spawn 任意 agent
|
- `subagents.allowAgents` 已设为 `["*"]`,main 可 spawn 任意 agent
|
||||||
|
|||||||
Reference in New Issue
Block a user