auto: sync OpenClaw config 2026-08-21 17:17

This commit is contained in:
2026-08-21 17:17:08 +08:00
parent 8b5d3fed21
commit cfadeacfa5
35 changed files with 1731 additions and 92 deletions
File diff suppressed because one or more lines are too long
@@ -0,0 +1,66 @@
---
name: "pbs-bk03-opt-backup"
description: "bk03 /opt 备份到 pbs01 library。连接 bk03、认证 PBS 仓库、proxmox-backup-client 推送。"
status: proposal
version: "v1"
date: "2026-08-21T07:59:03.609Z"
---
# bk03 /opt 备份到 pbs01
将 bk03(主机名 xuan-aq)的 `/opt` 目录备份到 Proxmox Backup Server pbs01 的 `library` 存储。
## 架构要点
- **pbs01**Proxmox Backup Server(接收端),Tailscale `100.115.195.195`
- **bk03**:备份源,主机名 `xuan-aq`Tailscale `100.115.195.193`
- PBS 是「客户端推送」模式:备份由 **bk03 主动推送到 pbs01**
- bk03 的 /opt 包含 `containerd``seafile` 两个目录,备份整个 `/opt``bk03_opt.pxar`
## 凭证(敏感,勿写入日志/聊天)
- **bk03 SSH**:用户 `yangxuan`,密码需临时注入(勿持久化);可 `su`/`sudo` 提权到 root
- **PBS token**`backup@pbs!bk03`/datastore Admin 权限),secret 存于 bk03 权限 600 的文件(如下),不落盘到 pbs01
## 触发模式
**pbs01 开机后自动检测 + 控制同步(目标是自动化):**
1. pbs01 检测 bk03 是否在线(tailscale ping
2. 在线 → 控制 bk03 开始备份
## 认证方式(在 bk03 上执行)
```bash
export PBS_REPOSITORY='backup@pbs!bk03@100.115.195.195:library'
export PBS_PASSWORD='<SECRET>' # 从安全文件读取,勿明文输出
```
## 备份命令
```bash
proxmox-backup-client backup bk03_opt.pxar:/opt
```
## 验证(只读)
```bash
# 列出快照
proxmox-backup-client snapshot list
# 查看存储用量
proxmox-backup-client status
```
备份成功后,library 会生成 `host/xuan-aq/YYYY-MM-DDTHH:MM:SSZ` 快照,包含 `bk03_opt.pxar`
## 安全红线
- **敏感操作先请示杨轩**:执行真实备份、写配置、删快照前必须确认
- **不泄露 secret**token secret、SSH 密码绝不写入 pbs01 日志/记忆/聊天
- **只读命令可直接执行**;写/删/改必须先确认
## 待自动化项(后续迭代)
- pbs01 开机检测脚本(systemd 或 cron @reboot
- pbs01 → bk03 免密触发(SSH 密钥,替代密码)
- secret 安全存储方案(bk03 权限 600 文件)
@@ -0,0 +1 @@
{"schema":"openclaw.skill-workshop.proposal.v1","id":"pbs-bk03-opt-backup-20260821-cd5da2b88c","kind":"create","status":"applied","title":"Create pbs-bk03-opt-backup","description":"bk03 /opt 备份到 pbs01 library。连接 bk03、认证 PBS 仓库、proxmox-backup-client 推送。","createdAt":"2026-08-21T07:59:03.609Z","updatedAt":"2026-08-21T07:59:28.295Z","createdBy":"skill-workshop","origin":{"agentId":"pbs","sessionKey":"agent:pbs:main","runId":"ff49d517-6c11-4f94-8a4a-002025df1603","messageId":"ff49d517-6c11-4f94-8a4a-002025df1603"},"proposedVersion":"v1","draftFile":"PROPOSAL.md","draftHash":"2072b98276500a24b47305c95a3a8148f8389a90942237a02536cfb661839a43","target":{"skillName":"pbs-bk03-opt-backup","skillKey":"pbs-bk03-opt-backup","skillDir":"/home/yangxuan/.openclaw/workspace-pbs/skills/pbs-bk03-opt-backup","skillFile":"/home/yangxuan/.openclaw/workspace-pbs/skills/pbs-bk03-opt-backup/SKILL.md","source":"openclaw-workspace"},"scan":{"state":"clean","scannedAt":"2026-08-21T07:59:28.219Z","critical":0,"warn":0,"info":0,"findings":[]},"goal":"将「pbs01 开机后检测 bk03 在线并控制其把 /opt 备份到 library 存储」流程封装为可复用技能。","appliedAt":"2026-08-21T07:59:28.295Z"}
@@ -0,0 +1 @@
{"schema":"openclaw.skill-workshop.rollback.v1","proposalId":"pbs-bk03-opt-backup-20260821-cd5da2b88c","writtenAt":"2026-08-21T07:59:28.226Z","targetSkillFile":"/home/yangxuan/.openclaw/workspace-pbs/skills/pbs-bk03-opt-backup/SKILL.md","action":"create"}
@@ -0,0 +1,67 @@
---
name: "pbs-vps01-opt-backup"
description: "vps01 /opt 备份到 pbs01 library。连接 vps01、认证 PBS 仓库、proxmox-backup-client 推送。"
status: proposal
version: "v1"
date: "2026-08-21T08:08:39.382Z"
---
# vps01 /opt 备份到 pbs01
将 vps01(主机名 xuan-vps)的 `/opt` 目录备份到 Proxmox Backup Server pbs01 的 `library` 存储。
## 架构要点
- **pbs01**Proxmox Backup Server(接收端),Tailscale `100.115.195.195`
- **vps01**:备份源,主机名 `xuan-vps`Tailscale `100.115.195.20`,内网 IP `10.0.0.17`
- PBS 是「客户端推送」模式:备份由 **vps01 主动推送到 pbs01**
- 备份整个 `/opt``vps_opt.pxar`,对应 library 组 `host/xuan-vps`
## 凭证(敏感,勿写入日志/聊天)
- **vps01 SSH**:用户 `root`,密码需临时注入(勿持久化);root 可直接 SSH 登录(无需 su)
- **PBS token**`backup@pbs!vps01_opt`/datastore Admin 权限),secret 存于 vps01 权限 600 的文件,勿落盘到 pbs01
## 认证方式(在 vps01 上执行)
```bash
export PBS_REPOSITORY='backup@pbs!vps01_opt@100.115.195.195:library'
export PBS_PASSWORD='***' # 从安全文件读取,勿明文输出
```
## 备份命令
```bash
proxmox-backup-client backup vps_opt.pxar:/opt --backup-id xuan-vps
```
## 验证(只读)
```bash
# 列出快照
proxmox-backup-client snapshot list
# 查看指定组
proxmox-backup-client snapshot list host/xuan-vps
# 查看存储用量
proxmox-backup-client status
```
备份成功后,library 会生成 `host/xuan-vps/YYYY-MM-DDTHH:MM:SSZ` 快照,包含 `vps_opt.pxar`
## 与 bk03 方案的对应
- bk03`backup@pbs!bk03` token + `bk03_opt.pxar`,组 `host/xuan-aq`,主机名 xuan-aq
- vps01`backup@pbs!vps01_opt` token + `vps_opt.pxar`,组 `host/xuan-vps`,主机名 xuan-vps
- 两者同为 pbs01 开机自动同步目标,可参照 bk03 的 systemd 方案部署 vps01
## 安全红线
- **敏感操作先请示杨轩**:执行真实备份、写配置、删快照前必须确认
- **不泄露 secret**token secret、SSH 密码绝不写入 pbs01 日志/记忆/聊天
- **只读命令可直接执行**;写/删/改必须先确认
## 待自动化项(参照 bk03
- pbs01 开机检测脚本(检测 vps01 在线 → 免密触发备份)
- pbs01 → vps01 免密登录(SSH 密钥)
- secret 安全存储(vps01 权限 600 文件)
@@ -0,0 +1 @@
{"schema":"openclaw.skill-workshop.proposal.v1","id":"pbs-vps01-opt-backup-20260821-ecb020b952","kind":"create","status":"applied","title":"Create pbs-vps01-opt-backup","description":"vps01 /opt 备份到 pbs01 library。连接 vps01、认证 PBS 仓库、proxmox-backup-client 推送。","createdAt":"2026-08-21T08:08:39.382Z","updatedAt":"2026-08-21T08:09:37.465Z","createdBy":"skill-workshop","origin":{"agentId":"pbs","sessionKey":"agent:pbs:main","runId":"fcdf099b-f559-4ca4-8ab3-42e176e3b570","messageId":"fcdf099b-f559-4ca4-8ab3-42e176e3b570"},"proposedVersion":"v1","draftFile":"PROPOSAL.md","draftHash":"0118b84319f204d9cbe58403d64d27f95f048df0e7e50bbf3344a798561517c7","target":{"skillName":"pbs-vps01-opt-backup","skillKey":"pbs-vps01-opt-backup","skillDir":"/home/yangxuan/.openclaw/workspace-pbs/skills/pbs-vps01-opt-backup","skillFile":"/home/yangxuan/.openclaw/workspace-pbs/skills/pbs-vps01-opt-backup/SKILL.md","source":"openclaw-workspace"},"scan":{"state":"clean","scannedAt":"2026-08-21T08:09:37.398Z","critical":0,"warn":0,"info":0,"findings":[]},"goal":"将「vps01 的 /opt 目录备份到 pbs01 library 存储」封装为独立可复用技能,涵盖连接、认证、备份命令与安全红线。","appliedAt":"2026-08-21T08:09:37.465Z"}
@@ -0,0 +1 @@
{"schema":"openclaw.skill-workshop.rollback.v1","proposalId":"pbs-vps01-opt-backup-20260821-ecb020b952","writtenAt":"2026-08-21T08:09:37.401Z","targetSkillFile":"/home/yangxuan/.openclaw/workspace-pbs/skills/pbs-vps01-opt-backup/SKILL.md","action":"create"}
@@ -0,0 +1,113 @@
---
name: "weekly-report-g5"
description: "维云智造 G5/G6周报生成:解析任务记录→提取每日工作→多段邮件 (纯文本+HTML)→存入钉邮草稿箱"
status: proposal
version: "v2"
date: "2026-08-21T06:47:03.410Z"
---
# weekly-report — 维云智造 G5/G6 周报生成技能
## 适用场景
用户提供了本周工作任务记录(任务名称、归属项目、日期、工作内容),需要生成 G5 或 G6 周报并存入钉邮草稿箱。
## 工作流程
### 1. 解析用户输入
用户可能提供以下格式的信息:
- **本周完成任务记录**:包含序号、任务名称、任务归属、日期、工作量等表格数据
- **工作情况总结**:按日期(周一至周五)列出的每日工作内容
需要从中提取:
- 项目名称(维云智造 G5 或 G6)
- 本周主要任务(从任务名称汇总)
- 每日工作内容(按日期整理)
- 存在问题(如有)
### 2. 确定日期范围
- 根据用户提供的日期或当前日期推算本周范围
- 格式:`YYYY-MM-DD ~ YYYY-MM-DD`
### 3. 邮件格式规范
**主题**`{项目}开发周报 (YYYY-MM-DD ~ YYYY-MM-DD)`
- 项目可能是 G5 或 G6,根据用户输入的任务归属确定
**收件人**liuqiang@witsoft.cn
**抄送**chenm@witsoft.cn, zengli@witsoft.cn, yuanq@witsoft.cn
**发送人**:杨轩 \<yangxuan@witsoft.cn\>
**正文(纯文本版)**
```
项目名称: 维云智造{G5|G6}
主要任务: <本周主要任务摘要>
本周工作内容
周一(YYYY-MM-DD
- <工作内容 1>
- <工作内容 2>
周二(YYYY-MM-DD
- <工作内容 1>
...
存在问题
<内容或"无">
```
**正文(HTML 版)**
- 使用 `<b>` 标注标题
- 使用 `<br>` 换行
- 使用 `&nbsp;&nbsp;` 缩进列表项
- 无签名、无多余修饰
### 4. 发送方式
使用 Python 脚本构造**多段邮件**(同时含纯文本和 HTML),然后通过 IMAP APPEND 存入钉邮草稿箱。
调用脚本:
```python
from send_weekly_report import send_to_drafts
send_to_drafts(plain_body, html_body, date_range, project)
```
参数说明:
- `plain_body`: 纯文本正文
- `html_body`: HTML 正文
- `date_range`: 日期范围字符串,如 "2026-08-18 ~ 2026-08-21"
- `project`: 项目名称,"G5" 或 "G6",默认 "G6"
### 5. 最后通知
通知用户去钉钉邮箱草稿箱确认并发送。
## 注意事项
- 项目名称根据用户输入的任务归属自动识别(G5 或 G6)
- 抄送人固定为:陈明、曾莉、袁晴
- 纯文本版和 HTML 版内容结构一致
- HTML 版不使用 Markdown 格式,使用 `<br>``&nbsp;` 进行排版
- 所有交互使用中文
## 示例输入
```
本周完成任务记录
序号 任务名称 任务归属 计划开始日期 实际开始日期 计划完成日期 实际完成日期 估计工作量 (小时) 填报工作量 (小时) 偏差率
1 进销存自动化流程和阶段性优化 维云智造 G6 2026-08-19 2026-08-19 2026-08-21 2026-08-21 24 24 0%
2 销售,采购功能实现 维云智造 G6 2026-08-16 2026-08-16 2026-08-18 2026-08-18 24 24 0%
工作情况总结
周一
2026-08-18 工作情况
任务名称:销售,采购功能实现 (维云智造 G6)
执行日报:1. 销售出库流程优化
2. 其它入库联调
--------------------------------
存在问题
...
```
## 示例输出
- 主题:G6 开发周报 (2026-08-18 ~ 2026-08-21)
- 纯文本正文:简洁直列式,无签名
- HTML 正文:`<b>` 标题 + `<br>` 换行 + `&nbsp;&nbsp;` 缩进
- 存入草稿箱后通知用户确认发送
@@ -0,0 +1 @@
{"schema":"openclaw.skill-workshop.proposal.v1","id":"weekly-report-g5-20260821-988ec1cd0e","kind":"update","status":"applied","title":"Update weekly-report-g5","description":"维云智造 G5/G6周报生成:解析任务记录→提取每日工作→多段邮件 (纯文本+HTML)→存入钉邮草稿箱","createdAt":"2026-08-21T06:45:50.933Z","updatedAt":"2026-08-21T06:47:12.811Z","createdBy":"skill-workshop","origin":{"agentId":"resume","sessionKey":"agent:resume:main","runId":"7cd36490-5e8e-49c6-9497-fb610374cfa9","messageId":"7cd36490-5e8e-49c6-9497-fb610374cfa9"},"proposedVersion":"v2","draftFile":"PROPOSAL.md","draftHash":"b41a12972ace8c396d5322ce8769accb2d2e9ed08d81d7e41993c1eee6d2a435","target":{"skillName":"weekly-report-g5","skillKey":"weekly-report-g5","skillDir":"/home/yangxuan/.openclaw/workspace-resume/skills/weekly-report-g5","skillFile":"/home/yangxuan/.openclaw/workspace-resume/skills/weekly-report-g5/SKILL.md","source":"openclaw-workspace","currentContentHash":"37aa514b47c61266e3079e76e7f829cfb700e849a607024e6916360ae5786ad0"},"scan":{"state":"clean","scannedAt":"2026-08-21T06:47:12.689Z","critical":0,"warn":0,"info":0,"findings":[]},"appliedAt":"2026-08-21T06:47:12.811Z"}
@@ -0,0 +1 @@
{"schema":"openclaw.skill-workshop.rollback.v1","proposalId":"weekly-report-g5-20260821-988ec1cd0e","writtenAt":"2026-08-21T06:47:12.706Z","targetSkillFile":"/home/yangxuan/.openclaw/workspace-resume/skills/weekly-report-g5/SKILL.md","action":"update","previousContent":"---\nname: \"weekly-report-g5\"\ndescription: \"维云智造G5周报生成:整理每日工作→多段邮件(纯文本+HTML含签名图)→存入钉邮草稿箱\"\n---\n\n# weekly-report-g5 — 维云智造 G5 周报生成技能\n\n## 适用场景\n用户提供了周一至周五的每日工作内容,需要生成 G5 周报并存入钉邮草稿箱。\n\n## 工作流程\n\n### 1. 收集每日工作内容\n- 周一(本周首日)至周五\n- 如果用户分多次给出,先等待所有日期内容收齐再生成\n\n### 2. 邮件格式规范\n\n**主题**`G5开发周报 (YYYY-MM-DD ~ YYYY-MM-DD)`\n\n**收件人**liuqiang@witsoft.cn\n\n**抄送**chenm@witsoft.cn, zengli@witsoft.cn\n\n**发送人**:杨轩 \\<yangxuan@witsoft.cn\\>\n\n**正文(纯文本版)**\n```\n项目名称: 维云智造G5\n主要任务: <本周主要任务>\n\n本周工作内容\n周一(YYYY-MM-DD\n - ...\n周二(YYYY-MM-DD\n - ...\n周三(YYYY-MM-DD\n - ...\n周四(YYYY-MM-DD\n - ...\n周五(YYYY-MM-DD\n - ...\n\n存在问题\n<内容或\"无\">\n```\n\n**签名格式(纯文本)**\n```\nBest regards,\n杨轩\nhttps://minio.climbcube.cn/img/202606260843249.jpg\n地址:中国·南京云密城L栋5/10楼\n手机:18726128489\n邮箱:yangxuan@witsoft.cn\n```\n\n### 3. 发送方式\n\n使用 Python 构造**多段邮件**(同时含纯文本和 HTML),然后通过 IMAP APPEND 存入钉邮草稿箱。\n\n调用脚本:\n```bash\npython3 /home/yangxuan/.openclaw/workspace-resume/send_weekly_report.py\n```\n\n或直接执行 Python 代码:\n```python\nfrom send_weekly_report import send_to_drafts\nsend_to_drafts(plain_body, html_body, \"YYYY-MM-DD ~ YYYY-MM-DD\")\n```\n\n### 4. 最后通知\n通知用户去钉钉邮箱草稿箱确认并发送。\n\n## 注意事项\n- 纯文本版签名包含图片 URL 链接\n- HTML 版使用 `<img>` 标签嵌入签名图片\n- 如用户不提供签名信息,使用 MEMORY.md 中的默认签名:姓名、地址、手机、邮箱\n- 所有交互使用中文\n","previousContentHash":"37aa514b47c61266e3079e76e7f829cfb700e849a607024e6916360ae5786ad0"}