f33afa77bb
- 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 个历史脚本引用,未动
173 lines
13 KiB
Markdown
173 lines
13 KiB
Markdown
# 基础工作规范(适用于所有智能助手)
|
||
|
||
## 🎯 核心原则
|
||
- 安全第一:禁止执行未经确认的危险操作(rm -rf、格式化等)
|
||
- 数据优先:修改文件前先查看完整内容
|
||
- 可追溯:所有重要操作记录到日志
|
||
|
||
## 🌐 语言要求
|
||
- **所有智能助手的交互一律使用中文**,包括下载助手、前端、Java后端、仓库管理员、主助手
|
||
- 技术术语可保留原文(API、CSS、JSON 等),但解释、对话、回复用中文
|
||
|
||
## 📝 记忆使用规则
|
||
1. 想记住的东西→写入文件(「脑记」不持久)
|
||
2. 主会话加载 MEMORY.md,群聊/子助手不加载
|
||
3. 每日日志自动写入 memory/YYYY-MM-DD.md
|
||
|
||
## 🔧 通用工作流程
|
||
1. 确认需求 → 2. 拆解步骤 → 3. 执行 → 4. 验证 → 5. 记录
|
||
|
||
## 🚫 红线
|
||
- 不向外泄露私有数据
|
||
- 不擅自发送邮件/公开帖子
|
||
- 不确定时先询问
|
||
|
||
## 🪪 国家网络身份认证
|
||
- 杨轩已申领网络身份认证凭证,网号(网络身份认证凭证号):**F32F12T36Q**(2026-08-13 申领)
|
||
- 用途:可使用该网号登录「国家网络身份认证APP」
|
||
|
||
## 🐬 本地数据库环境(Docker MySQL)
|
||
|
||
**「本地数据库」「本地 MySQL」= 本机 Docker 容器 MySQL**(非远程、非 WSL),统一环境定义:
|
||
|
||
- **连接**:本机 Docker MySQL 容器(宿主端口 `127.0.0.1:3306`;入口脚本在容器内执行 mysql,不经 TCP);**库名 = agent id**,账号固定 `agent_<id>`;口令存 `~/.openclaw/.env` 的 `DB_PASSWORD_<中文名>`,由脚本内部读取(不进命令行、不进 stdout)
|
||
- **本质**:跑在本机 Docker 里的 MySQL 容器(`docker ps` 可见,端口映射 3306)
|
||
- **操作方式**:**唯一入口** `~/.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>"`)已改为内部走同一入口,亦可使用
|
||
- **红线**:禁止使用 root、禁止 `docker exec` 直连、禁止跨库访问
|
||
- **库清单**(库名 = 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 实例)
|
||
|
||
> 所有本地库都在**同一个** 127.0.0.1:3306 容器里,不是每个库一个实例;**库名 = 归属 agent id**,账号 = `agent_<id>`,唯一入口 = `db-conn.sh`。
|
||
|
||
| 数据库(库名) | 归属 agent | 权威中文名 | 用途 | 连接方式 |
|
||
|------|-----------|-----------|------|------|
|
||
| `tab` | **tab** | 导航页 | 引擎/站点/站点类型 | `db-conn.sh tab` |
|
||
| `wellness` | **wellness** | 放松保健 | 放松保健记录(技师联系人/放松记录) | `db-conn.sh wellness` |
|
||
| `finances` | **finances** | 理财 | 家庭理财、收支分析 | `db-conn.sh finances` |
|
||
| `fitness` | **fitness** | 健康 | 健身减脂、饮食与运动记录 | `db-conn.sh fitness` |
|
||
| `resume` | **resume** | 简历 | 简历评审优化、面试准备 | `db-conn.sh resume` |
|
||
| `travel` | **travel** | 旅行 | 行程规划、目的地推荐 | `db-conn.sh travel` |
|
||
| `juaner` | **juaner** | 卷儿 | 记账户应用数据(todos/transactions) | `db-conn.sh juaner` |
|
||
| `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 只持有并只访问以自己 id 命名的库,互相不可见。
|
||
|
||
> 触发词:用户一提「本地数据库 / 本地 MySQL / Docker 里的库」→ 默认指上述 127.0.0.1:3306 的 Docker 实例。拿不准就按这个核对。
|
||
|
||
## 🔧 搜索引擎配置
|
||
## 🔌 WSL SSH 配置
|
||
- SSH 端口:**2222**(非默认 22)
|
||
- socket 激活已禁用,由 sshd 直接管理
|
||
- 宿主机端口转发:`netsh interface portproxy` 将 `localhost:2222 → WSL IP:2222`
|
||
- 转发脚本:`scripts/setup-wsl-portproxy.ps1`(WSL 重启后需重新运行)
|
||
- 认证:公钥(Windows id_rsa.pub → WSL authorized_keys)+ 密码备用
|
||
- 连接:`ssh yangxuan@localhost -p 2222`
|
||
|
||
## 🔧 搜索引擎配置
|
||
- 自建实例:`https://search.climbcube.cn/`
|
||
- 插件启用状态:已启用
|
||
- 搜索提供方:自建搜索引擎
|
||
- 主智能助手会自动使用搜索引擎
|
||
|
||
## 📹 固定提醒
|
||
- **工作日 20:00** — 提醒杨轩和杨锦书视频,督促杨锦书踢水
|
||
|
||
## 🎂 家庭成员生日提醒(每年,统一规则)
|
||
- **投递红线**:所有钉钉推送/提醒统一使用 delivery 机制(`--announce --channel dingtalk-connector --to 0464031658857345`);**禁止在任务命令里手动调 `openclaw message send`**(CLI 不认识 dingtalk-connector,曾致 dinner-21 单独坏掉)。完整规范见 `workspace/TOOLS.md`「📢 钉钉推送统一规范」;新建 cron 任务一律 `--agent main`。
|
||
- **提醒规则**:每年在公历生日**前7天**、**前3天**、**当天**各提醒一次(共三次),通过钉钉当前对话发给杨轩
|
||
- **换算**:农历生日每年用 lunar_python 换算为公历日期(阳历生日固定);再为每年设三个一次性 cron(isolated + announce 钉钉),运行后自动删除
|
||
- **投递参数(必须)**:`--session isolated --announce --channel dingtalk-connector --to 0464031658857345 --wake now --delete-after-run`
|
||
|
||
### 成员生日库(定义见 birthday-reminder skill)
|
||
| 人物 | 生日类型 | 出生日期 | 关系 |
|
||
|------|---------|---------|------|
|
||
| 汪礼平 | 农历 | 1968年6月20日 | - |
|
||
| 杨安顺 | 农历 | 1968年8月18日 | - |
|
||
| 王芳 | 农历 | 1993年10月7日 | - |
|
||
| 杨锦书 | 阳历 | 2021年11月10日 | 卷儿,阳历固定 |
|
||
|
||
### 已设置的提醒年份
|
||
- **2026年**:杨安顺=9/28(前7天9/21、前3天9/25、当天9/28)✅;杨锦书=11/10(11/3、11/7、11/10)✅;王芳=11/15(11/8、11/12、11/15)✅
|
||
- **2027年**:汪礼平=7/23(前7天7/16、前3天7/20、当天7/23)✅;杨安顺=9/18(9/11、9/15、9/18)✅;杨锦书=11/10(11/3、11/7、11/10)✅;王芳=11/4(10/28、11/1、11/4)✅
|
||
- 汪礼平2026年=8/2(当年已过);杨安顺2026年=9/28、王芳2026年=11/15、杨锦书2026年=11/10 均已设
|
||
|
||
## 🐳 Docker / 代理
|
||
- 系统代理:`/etc/systemd/system/docker.service.d/proxy.conf` → `HTTP_PROXY=http://172.25.208.1:7443`
|
||
- 镜像站:`docker.1ms.run`, `docker.xuanyuan.me`, `hub.rat.dev`
|
||
- **红线**:不要擅自改 Docker 代理配置或重启 Docker。代理没开就通知杨轩。
|
||
|
||
## 🤖 Agent 列表
|
||
- 共 11 个 agents,职责如下:
|
||
|
||
| Agent | 职责 |
|
||
|-------|------|
|
||
| **main** | 主助手:统一调度、记忆管理、日常对话、任务分发;其 `main` 库(后端应用主库,conversation_notes/tasks/user_preferences)归 main 管理 |
|
||
| **resume** | 简历助手:简历评审优化、面试准备、职业建议;**同时负责周报生成**(维云智造G5周报 → 存入钉邮草稿箱,带 weekly-report-g5 skill) |
|
||
| **travel** | 旅途助手:行程规划、目的地推荐、交通住宿、美食签证 |
|
||
| **fitness** | 健身 🏋️:健康减脂教练、饮食记录分析、运动跟踪、平台期突破 |
|
||
| **finances** | 理财 💰:家庭财务管理、收支分析、资产负债诊断、财务目标跟踪 |
|
||
| **sql** | SQL 🗄️:数据库操作、SQL 编写调试、查询优化、Schema 管理 |
|
||
| **note** | 笔记 📝:管理/归档 /home/yangxuan/seafile/笔记(Obsidian 库),整理对话产生的知识文档 |
|
||
| **juaner** | 卷儿 👧:杨锦书专属陪伴助手;同时管理 `juaner` 记账库(todos/transactions) |
|
||
| **pbs** | PBS备份 💾:Proxmox Backup Server (pbs01) 备份管理,中文交互(Tailscale 100.115.195.195,SSH 免密 root,见 workspace-pbs/AGENTS.md) |
|
||
| **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` 库,账号 `agent_tab`),新增引擎/站点/站点类型(含去重)、启用禁用(status 切换),icon 自动取 favicon,入口 `db-conn.sh tab`/`db-query --database tab`,见 workspace-tab/skills/tab |
|
||
|
||
- config 见 `openclaw.json` → `agents.list`
|
||
- `subagents.allowAgents` 已设为 `["*"]`,main 可 spawn 任意 agent
|
||
|
||
### 🤖 Agent 调度红线
|
||
|
||
⚠️ **见 AGENTS.md「红线」节**:对话中出现 agent 的 id 或 name 时,必须先判断是否应交由该 agent 处理。**不确定时,咨询杨轩,不猜测、不自行决定。**
|
||
|
||
### 📝 知识归档协作(note agent)
|
||
- main 在对话中**识别「值得存档的知识」**(技术方案、问题排查、开发笔记等)→ **自动转发给 note agent 归档**
|
||
- 归档目标:`/home/yangxuan/seafile/笔记`(Obsidian 库,seafile 云同步)
|
||
- 规则:**只归档新文档,不动存量**;同步交给 seafile 客户端自动处理
|
||
- 分类:004-工作/技术方案、问题/故障排查、002-笔记/通用知识、003-阅读/学习笔记等(详见 workspace-note/AGENTS.md)
|
||
|
||
## 📅 心跳检查项(每30分钟)
|
||
- 检查邮箱紧急邮件
|
||
- 查看日历近期待办
|
||
- 维护记忆文件(整理→提炼→更新MEMORY.md)
|
||
|
||
## 🗄️ 3.14 主机(xuan-asus-nj)配置
|
||
- **地址**:192.168.3.14
|
||
- **OpenClaw 目录**:`/home/yangxuan/.openclaw/`
|
||
- **Gitea 用户**:openclaw-314(密码同源码仓库管理员)
|
||
- **Git remote(cloud)**:`https://gitea.climbcube.cn/yangxuan/openclaw-config.git`
|
||
- **Git 分支**:`314`(已删除本地 `main`)
|
||
- **自动提交**:每6小时,cron job `auto-commit-config`,仅推 cloud 314 分支
|
||
- **SSH**:免密登录(id_ed25519)
|
||
|
||
## ⚙️ Cron 调度器 agent-less 故障(2026-09-01 修复)
|
||
|
||
**现象**:所有定时提醒(整点休息/吃饭/运动等)突然不触发。
|
||
**根因**:多个定时任务(工作提醒/auto-commit/吃饭/运动/购票/还贷等 command 任务)是 **agent-less 无 owner** 任务。多 agent 环境下 cron reconcile 报 `Agent-less cron job has no resolvable owner`,调度器 nextWake 锁死在一个过期时间,阻塞后续所有任务。
|
||
**修复**:
|
||
- 在 openclaw.json `agents.defaults.systemAgent.agentId=main`(已提交 Gitea `940c8a6`)
|
||
- 各无主 command 任务补 `--agent main`(工作提醒/吃饭/运动/购票/还贷/周一戴口罩/dinner-21/auto-commit)
|
||
- 调度器随后解锁(nextWake 正常推进,如 11:00 等)
|
||
**排查命令**:`openclaw cron status`(看 nextWakeAtMs 是否停滞)、`openclaw cron get <id>`、`openclaw cron edit <id> --agent main`。
|
||
**注意**:admin 环境 `openclaw cron list`/`automations list` 曾因 agent-less 任务报错,配置 systemAgent 后自动恢复。
|
||
|
||
## 🧹 Git 清理
|
||
- `/home/yangxuan/.openclaw/` 下仅主仓库一个 `.git`,子目录 `.git` 已全部删除
|
||
- workspace 子模块不再有独立 git
|
||
|
||
## 🕊️ 飞书渠道(2026-09-15 配置)<!-- project: gitea.climbcube.cn/yangxuan/openclaw-config -->
|
||
- **插件**:官方 `@openclaw/feishu`(2026.8.1,装于 `~/.openclaw/npm/projects/`);旧的第三方扩展 `openclaw-lark` 已禁用(与 2026.8.1 不兼容,报 `./plugin-sdk not exported`)
|
||
- **渠道配置**:`channels.feishu` appId=`cli_aa2274de26b8c0db`(旧的 `cli_aa2a59f378b8c19b` 已弃用),appSecret 用 SecretRef `store/default:FEISHU_APP_SECRET`(旧 file provider `lark-secrets` 已弃用),`connectionMode=websocket`
|
||
- **路由**:`bindings` 中 `feishu → main`(原绑 fitness,已改);`openclaw-weixin e48ace…→main`、`89623f…→juaner` 保持不变
|
||
- **DM**:`dmPolicy=allowlist`,`allowFrom=["ou_28124d6721134f0e31d6122d30088418"]`(杨轩本人在新应用下的 open_id,已配对批准);`commands.ownerAllowFrom` 已设为该 open_id
|
||
- **机器人 open_id**:`ou_85d8747d90179b421e595cb22090d6fb`;DM chat_id:`oc_8eecfa0e1cc185c1cb19b4f3950cbc52`
|
||
- **注意**:飞书 open_id 按应用隔离,换应用必须换白名单;`groupAllowFrom` 只能填群 ID(`oc_…`),不能填用户 `ou_…`
|
||
- 日志里 `contact:contact.base:readonly` 类 99991672 报错被插件判为 stale 并忽略(仅影响发送者昵称解析)
|
||
|