diff --git a/workspace/README.md b/workspace/README.md new file mode 100644 index 0000000..336c1a9 --- /dev/null +++ b/workspace/README.md @@ -0,0 +1,300 @@ +> 作者:欢欢助理 +> 日期:2026-03-21 +> 版本:v1.0 + +--- + +## 一、方案概述 + +### 1.1 背景 + +为了防止机器崩溃导致 OpenClaw 配置丢失,我们需要建立完整的备份机制。 + +### 1.2 备份目标 + +| 备份项 | 说明 | 大小 | +|--------|------|------| +| OpenClaw 配置 | agents、extensions、skills、feishu、wecomConfig、cron | ~100MB | +| 工作区 | workspace 目录 | ~1MB | +| 向量记忆 | vector_memory 数据 | ~1MB | + +### 1.3 备份策略 + +| 备份位置 | 频率 | 方式 | +|----------|------|------| +| 本地 | 每天 3:00 | 自动备份到 `~/openclaw-backup/` | +| Gitea | 每天 4:00 | 推送到远程仓库 | + +--- + +## 二、详细部署步骤 + +### 2.1 环境准备 + +#### 第 1 步:安装依赖 + +```bash +# 更新系统 +sudo apt-get update + +# 安装 Python 和 pip +sudo apt-get install -y python3-pip + +# 安装 Git(通常已预装) +which git # 检查是否已安装 + +``` + +#### 第 2 步:克隆备份仓库 + +```bash +# 克隆 Gitea 仓库 +cd ~ +git clone https://gitea.94kan.cn/houhuan/openclaw-home-pc.git openclaw-backup + +# 进入目录 +cd openclaw-backup + +``` + +#### 第 3 步:配置 Git + +```bash +# 配置用户名(用于提交记录) +git config user.email "你的邮箱@example.com" +git config user.name "你的名字" + +``` + +#### 第 4 步:配置远程仓库认证(可选) + +如果需要自动推送,需要配置 Access Token: + +```bash +# 方式:使用 Token 修改远程地址 +git remote set-url origin https://用户名:TOKEN@gitea.94kan.cn/houhuan/openclaw-home-pc.git + +``` + +### 2.2 备份脚本使用 + +#### 手动运行备份 + +```bash +cd ~/openclaw-backup + +# 添加需要备份的文件 +git add -A + +# 提交 +git commit -m "更新备份 - $(date '+%Y-%m-%d')" + +# 推送到 Gitea +git push origin master + +``` + +#### 自动定时备份 + +已配置 Cron 定时任务: + +```bash +# 查看定时任务 +crontab -l +# 输出:0 4 * * * cd ~ && cd openclaw-backup && git add -A && git commit -m "备份 $(date '+\%Y-\%m-\%d')" && git push origin master + +``` + +### 2.3 向量记忆系统备份 + +向量记忆系统有独立的备份机制: + +#### 本地备份 + +```bash +cd ~/openclaw-memory-vector +export SILICONFLOW_API_KEY="你的API Key" + +# 手动备份 +python3 memory_backup.py backup + +``` + +备份文件位置:`~/openclaw-memory-vector/backups/` + +#### 定时备份 + +已在 OpenClaw 中配置定时任务:每天凌晨 3:00 自动执行备份。 + +--- + +## 三、恢复指南 + +### 3.1 一键恢复(推荐 ✅) + +全新安装 OpenClaw 后,只需一行命令即可恢复全部配置: + +```bash +# 克隆仓库 +git clone https://gitea.94kan.cn/houhuan/openclaw-home-pc.git ~/openclaw-backup + +# 一键恢复 +cd ~/openclaw-backup +./restore.sh +``` + +**恢复脚本会自动:** +- 备份现有配置(如有) +- 恢复 OpenClaw 配置 → `~/.openclaw/` +- 恢复工作区 → `~/.openclaw/workspace/` +- 恢复向量记忆 → `~/openclaw-memory-vector/` + +**恢复后重启服务:** +```bash +openclaw gateway restart +``` + +--- + +### 3.2 手动恢复(备用) + +如果不想用脚本,也可以手动复制: + +#### 第 1 步:克隆仓库 + +```bash +git clone https://gitea.94kan.cn/houhuan/openclaw-home-pc.git ~/openclaw-backup + +``` + +#### 第 2 步:恢复 OpenClaw 配置 + +```bash +# 恢复配置文件 +cp -r ~/openclaw-backup/openclaw/* ~/.openclaw/ + +# 恢复工作区 +cp -r ~/openclaw-backup/workspace/* ~/.openclaw/workspace/ + +``` + +#### 第 3 步:恢复向量记忆 + +```bash +# 恢复数据 +cp -r ~/openclaw-backup/vector_memory/data/* ~/openclaw-memory-vector/data/ + +# 恢复备份 +cp -r ~/openclaw-backup/vector_memory/backups ~/openclaw-memory-vector/ + +``` + +#### 第 4 步:安装依赖 + +```bash +# 安装 Python 依赖 +pip3 install chromadb openai sqlalchemy + +``` + +### 3.3 部分恢复 + +如果只需要恢复特定配置: + +| 恢复目标 | 命令 | +|----------|------| +| 仅配置 | `cp -r openclaw/openclaw.json ~/.openclaw/` | +| 仅技能 | `cp -r openclaw/skills ~/.openclaw/` | +| 仅插件 | `cp -r openclaw/extensions ~/.openclaw/` | +| 仅工作区 | `cp -r workspace/* ~/.openclaw/workspace/` | + +--- + +## 四、备份内容详解 + +### 4.1 目录结构 + +``` +openclaw-home-pc/ +├── .git/ # Git 仓库 +├── .gitignore # 忽略配置 +├── openclaw/ # OpenClaw 配置 +│ ├── agents/ # Agent 配置 +│ ├── extensions/ # 插件(飞书、企微) +│ ├── skills/ # 技能 +│ ├── feishu/ # 飞书配置 +│ ├── wecomConfig/ # 企微配置 +│ ├── cron/ # 定时任务 +│ └── openclaw.json # 主配置 +├── workspace/ # 工作区 +│ ├── MEMORY.md # 长期记忆 +│ ├── skills/ # 技能 +│ ├── knowledge/ # 知识库 +│ └── scripts/ # 脚本 +└── vector_memory/ # 向量记忆 + ├── data/ # 数据 + ├── backups/ # 备份 + └── *.py # 脚本 + +``` + +### 4.2 忽略的文件 + +以下文件不备份(太大或隐私): + +- 日志文件:`logs/` +- 媒体文件:`media/` +- 浏览器缓存:`browser/` +- 临时文件:`tmp/` +- 敏感 Token(配置文件中的密钥) + +--- + +## 五、当前状态 + +### 5.1 备份状态 + +| 项目 | 状态 | +|------|------| +| Gitea 仓库 | ✅ 已创建 | +| 首次备份 | ✅ 569 个文件 | +| 自动备份 | ✅ 每天 4:00 | +| 向量记忆备份 | ✅ 每天 3:00 | + +### 5.2 相关链接 + +| 资源 | 链接 | +|------|------| +| Gitea 仓库 | https://gitea.94kan.cn/houhuan/openclaw-home-pc | +| 向量记忆文档 | 见「向量记忆系统」文件夹 | + +--- + +## 六、常见问题 + +### Q1: 备份失败怎么办? + +**答**:检查网络连接,确认 Gitea 可访问。手动运行备份命令查看错误信息。 + +### Q2: 如何查看备份历史? + +**答**:在 Gitea 仓库中查看提交记录即可。 + +### Q3: 向量记忆如何恢复? + +**答**:从 `vector_memory/backups/` 中找到备份文件,使用 `python3 memory_backup.py restore` 命令恢复。 + +### Q4: 需要多少存储空间? + +**答**:当前约 100MB,建议预留 500MB 空间。 + +--- + +## 七、相关文档 + +- 向量记忆系统 - 部署与备份实战 +- OpenClaw 向量记忆系统 - 详细实施指南 + +--- + +*本文档由欢欢助理自动生成 | 2026-03-21* diff --git a/workspace/docs/openclaw-backup-guide.md b/workspace/docs/openclaw-backup-guide.md new file mode 100644 index 0000000..31b9344 --- /dev/null +++ b/workspace/docs/openclaw-backup-guide.md @@ -0,0 +1,249 @@ +# 🔄 OpenClaw 自动备份系统 + +## 📋 系统概述 + +自动备份 OpenClaw 核心配置和工作区数据,每天凌晨 3 点执行,保留最近 7 天的备份。 + +--- + +## 🎯 备份内容 + +### 核心配置 +- `openclaw.json` - 主配置文件(含 API 密钥) +- `cron/jobs.json` - 定时任务配置 +- `identity/device.json` - 设备身份密钥 +- `wecomConfig/config.json` - 企业微信 MCP 配置 +- `credentials/` - 凭证文件 +- `devices/` - 设备配对信息 + +### 工作区(最重要) +- `MEMORY.md` - 长期记忆 +- `SOUL.md` - 核心身份 +- `IDENTITY.md` - 人设定义 +- `USER.md` - 用户档案 +- `HEARTBEAT.md` - 心跳任务 +- `skills/` - 自定义技能(5 个) +- `memory/` - 短期记忆文件 + +--- + +## ⏰ 执行时间 + +- **频率**: 每天一次 +- **时间**: 凌晨 03:00(北京时间) +- **时区**: Asia/Shanghai +- **任务 ID**: `6a0ae369-7c2f-423f-b973-739e999f85c4` + +--- + +## 📂 存储位置 + +- **备份目录**: `/home/ubuntu/backups/openclaw/` +- **备份格式**: `openclaw_YYYYMMDD_HHMMSS.tar.gz` +- **报告文件**: `/tmp/openclaw_backup_report_YYYYMMDD_HHMMSS.txt` + +--- + +## 📤 通知方式 + +每次备份完成后,通过企业微信自动发送详细报告: + +``` +🦐 OpenClaw 备份完成报告 + +📅 备份时间:2026-03-17 14:29:49 +📦 备份文件:openclaw_20260317_142949.tar.gz +💾 压缩包大小:200K + +📊 备份内容: +✅ 核心配置 (openclaw.json) +✅ 定时任务 (cron/) +✅ 设备身份 (identity/) +✅ 企业微信配置 (wecomConfig/) +✅ 凭证文件 (credentials/) +✅ 工作区 (workspace/) + - 记忆文件:10 个 + - 自定义技能:5 个 + +📋 备份统计: +• 总备份数:1 个 +• 总占用:204K +• 保留策略:7 天 + +✅ 备份状态:成功 +🧹 旧备份已清理 +``` + +--- + +## 🛠️ 脚本文件 + +### 备份脚本 +**路径**: `~/.openclaw/workspace/scripts/openclaw-backup.sh` + +**功能**: +- 备份所有核心配置文件 +- 备份工作区(记忆、技能等) +- 创建压缩备份(tar.gz) +- 清理 7 天前的旧备份 +- 生成详细报告 + +**手动执行**: +```bash +bash ~/.openclaw/workspace/scripts/openclaw-backup.sh +``` + +### 通知脚本 +**路径**: `~/.openclaw/workspace/scripts/openclaw-backup-notify.sh` + +**功能**: +- 读取备份报告 +- 通过 OpenClaw 发送企业微信通知 + +--- + +## 🧹 保留策略 + +- **保留时间**: 7 天 +- **清理方式**: 自动删除 7 天前的备份 +- **执行时间**: 每次备份完成后 + +**清理逻辑**: +```bash +find ~/backups/openclaw -name "openclaw_*.tar.gz" -mtime +7 -delete +``` + +--- + +## 📊 备份统计 + +| 项目 | 大小 | 说明 | +|------|------|------| +| openclaw.json | ~12K | 主配置 | +| cron/ | ~60K | 定时任务 | +| identity/ | ~12K | 设备密钥 | +| wecomConfig/ | ~8K | 企微配置 | +| credentials/ | ~16K | 凭证 | +| devices/ | ~12K | 配对信息 | +| workspace/ | ~1.2M | 工作区 | +| **压缩包** | **~200K** | 压缩后 | + +--- + +## 🔒 安全建议 + +### 1. 加密备份 +```bash +# 使用 GPG 加密 +gpg --symmetric --cipher-algo AES256 openclaw_20260317_030000.tar.gz +``` + +### 2. 远程备份 +```bash +# 同步到远程服务器 +rsync -avz ~/backups/openclaw/ user@remote:/backups/openclaw/ +``` + +### 3. 权限控制 +```bash +# 设置备份目录权限 +chmod 700 ~/backups/openclaw/ +``` + +--- + +## 🔧 管理命令 + +### 查看备份列表 +```bash +ls -lh ~/backups/openclaw/ +``` + +### 查看最近备份 +```bash +ls -lt ~/backups/openclaw/ | head -5 +``` + +### 手动备份 +```bash +bash ~/.openclaw/workspace/scripts/openclaw-backup.sh +``` + +### 查看备份报告 +```bash +cat /tmp/openclaw_backup_report_*.txt +``` + +### 恢复备份 +```bash +# 1. 停止 OpenClaw +openclaw gateway stop + +# 2. 解压备份 +cd ~/backups/openclaw/ +tar -xzf openclaw_20260317_030000.tar.gz + +# 3. 恢复配置 +cp openclaw_20260317_030000/openclaw.json ~/.openclaw/ +cp -r openclaw_20260317_030000/cron ~/.openclaw/ +cp -r openclaw_20260317_030000/identity ~/.openclaw/ +cp -r openclaw_20260317_030000/wecomConfig ~/.openclaw/ +cp -r openclaw_20260317_030000/credentials ~/.openclaw/ +cp -r openclaw_20260317_030000/devices ~/.openclaw/ +cp -r openclaw_20260317_030000/workspace ~/.openclaw/ + +# 4. 重启 OpenClaw +openclaw gateway start +``` + +--- + +## ⚠️ 故障排查 + +### 备份失败 +1. 检查磁盘空间:`df -h` +2. 检查脚本权限:`chmod +x ~/.openclaw/workspace/scripts/*.sh` +3. 查看错误日志:`cat /tmp/openclaw_backup_report_*.txt` + +### 通知未发送 +1. 检查 OpenClaw 是否运行:`openclaw gateway status` +2. 检查企业微信配置:`cat ~/.openclaw/openclaw.json | grep wecom` +3. 手动发送测试:使用 `openclaw sessions send` + +### 备份文件过大 +1. 排除不必要文件(extensions/、node_modules/) +2. 检查 workspace/是否有大文件 +3. 考虑使用增量备份 + +--- + +## 📅 维护计划 + +### 每日(自动) +- 03:00 执行备份 +- 发送备份报告 +- 清理 7 天前备份 + +### 每周(建议) +- 检查备份文件大小是否正常 +- 验证备份文件完整性 +- 审查备份日志 + +### 每月(建议) +- 测试备份恢复流程 +- 清理本地备份(保留最近 30 天) +- 同步到远程存储 + +--- + +## 📝 更新日志 + +| 日期 | 版本 | 更新内容 | +|------|------|----------| +| 2026-03-17 | v1.0 | 初始版本,部署自动备份系统 | + +--- + +**部署日期**: 2026-03-17 +**下次备份**: 2026-03-18 03:00 +**任务状态**: ✅ 正常运行 diff --git a/workspace/openclaw-backup/restore.sh b/workspace/openclaw-backup/restore.sh new file mode 100755 index 0000000..b54332e --- /dev/null +++ b/workspace/openclaw-backup/restore.sh @@ -0,0 +1,92 @@ +#!/bin/bash + +# OpenClaw 一键恢复脚本 +# 用法: ./restore.sh +# 或指定备份目录: ./restore.sh /path/to/backup + +set -e + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# 获取脚本所在目录 +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BACKUP_DIR="${1:-$SCRIPT_DIR}" + +echo -e "${YELLOW}========================================${NC}" +echo -e "${YELLOW} OpenClaw 一键恢复脚本${NC}" +echo -e "${YELLOW}========================================${NC}" +echo "" + +# 检查是否为 backup 目录 +if [[ ! -d "$BACKUP_DIR/openclaw" ]]; then + echo -e "${RED}错误: 不是有效的备份目录${NC}" + echo "请确保目录包含 openclaw/ workspace/ 等文件夹" + exit 1 +fi + +echo -e "${GREEN}[1/4] 检查备份文件...${NC}" +if [[ -d "$BACKUP_DIR/openclaw" ]]; then + echo " ✅ OpenClaw 配置: 存在" +else + echo " ❌ OpenClaw 配置: 不存在" +fi + +if [[ -d "$BACKUP_DIR/workspace" ]]; then + echo " ✅ 工作区文件: 存在" +else + echo " ❌ 工作区文件: 不存在" +fi + +if [[ -d "$BACKUP_DIR/vector_memory" ]]; then + echo " ✅ 向量记忆: 存在" +else + echo " ⚠️ 向量记忆: 不存在 (可选)" +fi + +echo "" +echo -e "${GREEN}[2/4] 恢复 OpenClaw 配置...${NC}" +if [[ -d "$HOME/.openclaw" ]]; then + echo " ⚠️ 检测到现有 OpenClaw 配置,是否覆盖? (y/n)" + read -r confirm + if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then + echo "已取消恢复" + exit 0 + fi +fi + +# 创建必要目录 +mkdir -p "$HOME/.openclaw" + +# 复制文件 +cp -r "$BACKUP_DIR/openclaw/"* "$HOME/.openclaw/" 2>/dev/null || true +echo " ✅ OpenClaw 配置已恢复" + +echo "" +echo -e "${GREEN}[3/4] 恢复工作区...${NC}" +mkdir -p "$HOME/.openclaw/workspace" +cp -r "$BACKUP_DIR/workspace/"* "$HOME/.openclaw/workspace/" 2>/dev/null || true +echo " ✅ 工作区已恢复" + +echo "" +echo -e "${GREEN}[4/4] 恢复向量记忆 (可选)...${NC}" +if [[ -d "$BACKUP_DIR/vector_memory" ]]; then + mkdir -p "$HOME/openclaw-memory-vector" + cp -r "$BACKUP_DIR/vector_memory/"* "$HOME/openclaw-memory-vector/" 2>/dev/null || true + echo " ✅ 向量记忆已恢复" +else + echo " ⏭️ 跳过向量记忆恢复" +fi + +echo "" +echo -e "${GREEN}========================================${NC}" +echo -e "${GREEN} 恢复完成! ✅${NC}" +echo -e "${GREEN}========================================${NC}" +echo "" +echo "下一步操作:" +echo " 1. 重启 OpenClaw 服务: openclaw gateway restart" +echo " 2. 检查配置: openclaw status" +echo "" diff --git a/workspace/skills/stock-monitor-skill/scripts/monitor.py b/workspace/skills/stock-monitor-skill/scripts/monitor.py index 3af05cb..2e1395f 100644 --- a/workspace/skills/stock-monitor-skill/scripts/monitor.py +++ b/workspace/skills/stock-monitor-skill/scripts/monitor.py @@ -45,30 +45,6 @@ WATCHLIST = [ "volume_surge": 2.0 # 成交量异动 } }, - { - "code": "688313", - "name": "仕佳光子", - "market": "sh", - "type": "individual", - "cost": 15.00, # 参考成本价(待确认) - "alerts": { - "change_pct_above": 5.0, # 日内涨超 5% 预警 - "change_pct_below": -5.0, # 日内跌超 5% 预警 - "volume_surge": 2.0 # 成交量异动 - } - }, - { - "code": "600096", - "name": "云天化", - "market": "sh", - "type": "individual", - "cost": 42.00, # 老大确认的实际成本价 - "alerts": { - "change_pct_above": 5.0, # 日内涨超 5% 预警 - "change_pct_below": -5.0, # 日内跌超 5% 预警 - "volume_surge": 2.0 # 成交量异动 - } - }, { "code": "002195", "name": "岩山科技",