Files
openclaw-config/workspace/MEMORY.md
T
openclaw-314 f33afa77bb 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 个历史脚本引用,未动
2026-09-16 11:52:30 +08:00

173 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 基础工作规范(适用于所有智能助手)
## 🎯 核心原则
- 安全第一:禁止执行未经确认的危险操作(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 换算为公历日期(阳历生日固定);再为每年设三个一次性 cronisolated + 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/1011/3、11/7、11/10)✅;王芳=11/1511/8、11/12、11/15)✅
- **2027年**:汪礼平=7/23(前7天7/16、前3天7/20、当天7/23)✅;杨安顺=9/189/11、9/15、9/18)✅;杨锦书=11/1011/3、11/7、11/10)✅;王芳=11/410/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.195SSH 免密 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 remotecloud**`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 并忽略(仅影响发送者昵称解析)