Files
openclaw-config/agents/fitness/agent/workshop-skills/fitness-db-access/SKILL.md
T

2.2 KiB
Raw Blame History

name, description
name description
fitness-db-access 读写 fitness 库健康数据时用:中文写入须前缀 SET NAMES utf8mb4(否则报错 1265 截断),斤转 kg,写后回读校验

Fitness 库读写

连接方式

一律用 ~/.openclaw/scripts/db-conn.sh fitness --sql "<SQL>"(固定账号 agent_fitness)。 禁止 root、禁止 docker exec 直连、禁止访问其他 agent 的库。建表结构与字段以 AGENTS.md 为准,勿在此重复。

含中文的 SQL 必须以 SET NAMES utf8mb4; 开头

脚本内的 mysql 客户端连接字符集默认是 latin1(实测 character_set_client / character_set_results 均为 latin1)。因此:

  • 写中文到 enum/文本列会直接失败:ERROR 1265 (01000) ... Data truncated for column 'severity' at row 1
  • 读中文会返回乱码(如 enum 显示成 '?'

每条含中文的 SQL 都加前缀:

~/.openclaw/scripts/db-conn.sh fitness --sql "SET NAMES utf8mb4; INSERT INTO health_status_logs (...) VALUES (...)"

写入后回读(DML 与 DDL 都适用)

--sql-N -B 执行(制表符分隔、无表头),INSERT 无输出即成功。 随后同条件 SELECT 回读,确认中文无乱码、字段无截断,再报完成。 建表/改表同样静默成功,用 DESC <表>(或 SHOW CREATE TABLE <表>\G 看 COMMENT 与索引)回读确认,再报完成。

体重单位换算

用户口述单位是「斤」,而 body_records.weight 存 kgdecimal(5,1)):kg = 斤 ÷ 2。 例:132.4 斤 → 66.2。

身体尺寸 / 尺码卡查询

尺寸单一真相来源是 body_measurements(字段清单见 AGENTS.md,勿在此重复)。取最新一条即"尺码卡":

~/.openclaw/scripts/db-conn.sh fitness --sql "SET NAMES utf8mb4; SELECT measure_date, height, shoulder_width, chest, waist, hip, arm_length, inseam, note FROM body_measurements WHERE user_id='yangxuan' ORDER BY measure_date DESC LIMIT 1;"

输出身高/肩宽/胸围/腰围/臀围/裤长,必须标注腰围测法waist 是肚脐水平实测,与裤装标注腰围尺码可能差 2-4cm,买裤时以版型说明为准。 尺寸是无单位的 cm 数(与体重不同,不做斤/公斤换算),不要套用上面的体重换算。