Token导航 LogoToken导航TokenDH.com
开发需要联网github未标认证来源可访问许可证需确认审计异常

openclaw-backupOpenClaw 备份

Agent Skill

openclaw-backup 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

67,392

周安装

2,671

GitHub Stars

公开资料未说明

下载量

21,816
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:openclaw-backup(OpenClaw 备份)
来源仓库:https://github.com/theagentservice/skills
仓库路径:skills/openclaw-backup
安装命令:
npx skills add https://github.com/theagentservice/skills --skill openclaw-backup
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/theagentservice/skills --skill openclaw-backup

简介

使用自动生成的 AES-256-CBC 密码对 OpenClaw Agent 工作区文件进行加密备份和恢复。

  • 支持三个核心操作:使用自动生成的加密密码上传工作区文件、下载并解密以前的备份以及从soul-upload.com删除远程备份
  • 自动备份默认的OpenClaw文件(SOUL.md、MEMORY.md、IDENTITY.md、AGENTS.md、TOOLS.md)或用户指定的文件;在 .openclaw-backup-recovery.txt 中存储恢复信息,包括自动生成的密码
  • 强制执行 20 MB 备份大小限制,并需要 Python 3.7+、tar、openssl 和 requests 库
  • 每个备份都会收到一个唯一的 32 个字符的随机密码,该密码永远不会重复使用;恢复文件对于恢复至关重要,因为它包含密码的唯一副本

SKILL.md

OpenClaw Backup Skill

Automated encrypted backup and restore for OpenClaw Agent workspace files using Claude Code.

Overview

This skill provides three core functions:

  1. Upload Backup - Encrypt and upload workspace files to soul-upload.com with auto-generated password
  2. Download Backup - Download and decrypt backups from soul-upload.com using stored password
  3. Delete Backup - Delete backups from remote storage

All backups use AES-256-CBC encryption (via openssl) with auto-generated random passwords. Each backup gets a unique password that is stored in the recovery file.

System Requirements

Before executing backup operations, ensure the following tools are installed:

  • Python 3.7+ (script runtime environment)
  • requests library (pip install requests)
  • tar (file archiving)
  • openssl (encryption/decryption)
  • curl (HTTP requests, system built-in)

Default Backup Files

If the user doesn't specify files, the following OpenClaw workspace files are backed up by default:

  • SOUL.md - Agent core identity and goals
  • MEMORY.md - Agent memory and context
  • IDENTITY.md - Agent identity definition
  • AGENTS.md - Agent configuration
  • TOOLS.md - Tool configuration

Workflow 1: Upload Backup

Trigger Scenarios

Execute when the user requests to backup workspace files:

  • "Back up my workspace files"
  • "Upload SOUL.md to soul-upload"
  • "Create an encrypted backup of my agent files"
  • "Backup SOUL.md and MEMORY.md"

Execution Steps

  1. Collect File List

- If user specified files, use the user-specified files - Otherwise, use default list: SOUL.md MEMORY.md IDENTITY.md AGENTS.md TOOLS.md - Use Read tool to verify files exist

  1. Execute Backup Script (Password Auto-Generated)

- Locate script path (usually scripts/backup.py in Skill directory) - Execute command WITHOUT --password argument (script will auto-generate): python3 scripts/backup.py upload \ --files "SOUL.md MEMORY.md IDENTITY.md" - Script automatically generates a 32-character random password - Capture stdout (JSON response) and stderr (progress info including generated password)

  1. Process Response

- On success, script outputs JSON: {"backupId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "downloadUrl": "https://soul-upload.com/backup/...", "sizeBytes": 12345, "sha256": "abc123...", "password": "auto-generated-32-char-random-password"} - Parse JSON and extract key information including the auto-generated password

  1. Save Recovery Information

- Use Write tool to create/update .openclaw-backup-recovery.txt - CRITICAL: Include the auto-generated password in the recovery file - Format: Backup ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Password: auto-generated-32-char-random-password Download URL: https://soul-upload.com/backup/... Created: 2024-01-15 10:30:00 UTC Size: 12.05 KB SHA256: abc123... Files: SOUL.md, MEMORY.md, IDENTITY.md --- - Append to end of file (preserve history)

  1. Display Success Message

- Inform user backup is complete - Show Backup ID and file size - IMPORTANT: Inform user that password was auto-generated and saved to .openclaw-backup-recovery.txt - Warn user: Recovery file is CRITICAL - without it, backup cannot be restored

Error Handling

Error ScenarioDetectionUser Guidance
Files not foundScript returns error: "Files not found:..."List missing files, ask if user wants to continue backing up other files
Files too largeScript returns error: "Backup size... exceeds limit..."Show actual size, suggest removing large files or splitting backup
Network errorScript returns error: "Network error:..."Suggest checking network connection, ask if retry is wanted
413 Too LargeScript returns error: "File too large (413 Payload Too Large)"Indicate 20MB limit exceeded, suggest reducing backup size
Encryption failedScript returns error: "openssl encryption failed:..."Check if openssl is properly installed

Example Conversation

User: Back up my SOUL.md and MEMORY.md
Claude: I'll backup these files with auto-generated encryption.
       [Executes backup script]
       Backup complete!
       - Backup ID: 3f8a2b1c-...
       - Size: 45.2 KB
       - Password: Auto-generated (32 chars)
       - Recovery info saved to .openclaw-backup-recovery.txt

       IMPORTANT: Keep .openclaw-backup-recovery.txt safe!
       It contains the password needed to restore this backup.

Workflow 2: Download Backup

Trigger Scenarios

Execute when user requests to restore backup:

  • "Restore my backup"
  • "Download my last backup"
  • "Recover backup [backup-id]"
  • "Restore from [download-url]"

Execution Steps

  1. Get Backup ID and Password

- Check if user provided Backup ID or Download URL - If not provided, use Read tool to read .openclaw-backup-recovery.txt - Extract latest Backup ID AND password from file - If file doesn't exist or is empty, cannot proceed (password unknown)

  1. Determine Output Directory

- Default: Current working directory (.) - If user specified a directory, use user-specified directory - Warn user: Existing files may be overwritten

  1. Execute Restore Script

- Execute command with password from recovery file: python3 scripts/backup.py download \ --backup-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \ --password "password-from-recovery-file" \ --output-dir "." - Capture stdout (JSON response) and stderr (progress info)

  1. Process Response

- On success, script outputs JSON: {"success": true, "extractedFiles": ["SOUL.md", "MEMORY.md", "IDENTITY.md"], "outputDir": "/path/to/output"} - Parse extracted file list

  1. Verify Restoration Result

- Use Read tool to read first few lines of restored files - Show file preview for user to confirm content is correct - Remind user to check complete content

  1. Display Success Message

- List restored files - Show output directory - Suggest user verify file content

Error Handling

Error ScenarioDetectionUser Guidance
Backup ID doesn't existScript returns error: "Backup not found:..."Check if Backup ID is correct, may have been deleted
Recovery file missing.openclaw-backup-recovery.txt not foundCannot restore - password is unknown without recovery file
Wrong passwordScript returns error: "Decryption failed - wrong password..."Recovery file may be corrupted or from different backup
Network errorScript returns error: "Network error:..."Suggest checking network connection, ask if retry is wanted
Extraction failedScript returns error: "tar extraction failed:..."File may be corrupted, try downloading again

Example Conversation

User: Restore my last backup
Claude: I found the most recent backup in .openclaw-backup-recovery.txt
       - Backup ID: 3f8a2b1c-...
       - Created: 2024-01-15 10:30:00 UTC
       Downloading and decrypting backup...
       Restoration complete! Extracted the following files:
       - SOUL.md
       - MEMORY.md
       - IDENTITY.md
       Files saved to current directory, please verify content is correct.

Workflow 3: Delete Backup

Trigger Scenarios

Execute when user requests to delete remote backup:

  • "Delete my backup"
  • "Remove backup [backup-id]"
  • "Delete the backup from soul-upload"

Execution Steps

  1. Get Backup ID

- Check if user provided Backup ID - If not provided, use Read tool to read .openclaw-backup-recovery.txt - Show available backup list for user to select - If file doesn't exist or is empty, ask user to provide Backup ID

  1. Request Confirmation

- Warning: This operation is irreversible, backup will be permanently deleted - Show Backup ID to delete and creation time - Ask user to confirm deletion

  1. Execute Delete Script

- After user confirms, execute command: python3 scripts/backup.py delete \ --backup-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" - Capture stdout (JSON response) and stderr (progress info)

  1. Process Response

- On success, script outputs JSON: {"success": true, "backupId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}

  1. Update Recovery Info File

- Use Read tool to read .openclaw-backup-recovery.txt - Remove deleted backup record (including its password) - Use Write tool to save updated file - If file becomes empty, can delete the file

  1. Display Success Message

- Confirm backup was deleted - Show deleted Backup ID - Remind user: If backup is needed again, must create new one with new password

Error Handling

Error ScenarioDetectionUser Guidance
Backup ID doesn't existScript returns error: "Backup not found:..."Backup may have been deleted or ID is incorrect
Network errorScript returns error: "Network error:..."Suggest checking network connection, ask if retry is wanted
User cancelsUser declines confirmationOperation cancelled, backup not deleted

Example Conversation

User: Delete my backup
Claude: I found the following backups in .openclaw-backup-recovery.txt:
       1. Backup ID: 3f8a2b1c-... (2024-01-15 10:30:00)
       2. Backup ID: 7b2c9d4e-... (2024-01-14 08:20:00)
       Which backup would you like to delete? (1 or 2)
User: 1
Claude: Warning: This will permanently delete backup 3f8a2b1c-...
       This action cannot be undone. Confirm deletion? (yes/no)
User: yes
Claude: Backup deleted.
       - Backup ID: 3f8a2b1c-...
       To backup again, create a new backup with a new auto-generated password.

Security Notes

Password Policy (NEW)

  • Auto-Generated Passwords: Each backup gets a unique 32-character random password
  • Never Reuse Passwords: Per soul-upload.com policy, do NOT reuse passwords across backups
  • Password Storage: Password is stored in .openclaw-backup-recovery.txt (necessary for decryption)
  • User Responsibility: Users must keep recovery file safe - without it, backup cannot be restored

Recovery File Security

  • File Location: .openclaw-backup-recovery.txt (workspace root directory)
  • Content: Backup ID, Password (CRITICAL), Download URL, timestamp, SHA256
  • CRITICAL: Recovery file is the ONLY place password is stored
  • Recommendation:

- Add to .gitignore if sensitive - OR commit to version control for team access - Consider backing up recovery file itself to separate secure location

Encryption Algorithm

  • Algorithm: AES-256-CBC (symmetric encryption)
  • Salting: openssl automatically adds salt for enhanced security
  • Compatibility: Consistent with soul-upload.com official documentation

Temporary File Cleanup

  • Script uses try-finally to ensure temporary files are cleaned up
  • Avoids leaving unencrypted sensitive data on disk

File Size Limits

  • Maximum Backup Size: 20 MB (compressed and encrypted)
  • Check Timing: Automatically checked before upload
  • Limit Exceeded Handling: Show actual size, suggest user:

- Remove large files (like logs, caches) - Split backup (backup different files in batches)

API Reference

soul-upload.com Backup API:

EndpointMethodFunctionResponse
/backupPOSTUpload backup{backupId, downloadUrl, sizeBytes, sha256}
/backup/:backupIdGETDownload backup302 redirect to R2 storage URL
/backup/:backupIdDELETEDelete backup{success: true, backupId}

Common Status Codes:

  • 200 - Success
  • 404 - Backup not found
  • 413 - File too large (exceeds 20MB)
  • 415 - Unsupported file type
  • 500 - Server error

Troubleshooting

Missing Dependencies

Problem: Script error "Missing required tools: tar, openssl"

Solution:

  • macOS: brew install openssl (tar built-in)
  • Ubuntu/Debian: sudo apt-get install tar openssl
  • Verify installation: tar --version and openssl version

Python requests Library Missing

Problem: Script error "Error: 'requests' library not found"

Solution:

pip install requests
# or
pip3 install requests

Recovery File Lost

Problem: Cannot restore backup - recovery file missing

Solution:

  • Recovery file is CRITICAL - contains the only copy of the password
  • Without recovery file, backup CANNOT be restored
  • Recommend backing up recovery file to separate secure location
  • If lost, backup is permanently inaccessible

Network Timeout

Problem: Timeout during upload/download

Solution:

  • Check network connection
  • Reduce backup file size (remove unnecessary files)
  • Script default timeout is 5 minutes, usually sufficient

File Already Exists

Problem: Overwriting existing files during restore

Solution:

  • Backup existing files before restore
  • Specify different output directory
  • Manually move existing files to other location

Usage Examples

Example 1: Backup All Default Files

User: Back up my workspace files
Claude: [Execute upload workflow using default file list]
       [Auto-generate password and save to recovery file]

Example 2: Backup Specific Files

User: Back up only SOUL.md and MEMORY.md
Claude: [Execute upload workflow, backup only specified files]
       [Auto-generate password and save to recovery file]

Example 3: Restore Latest Backup

User: Restore my last backup
Claude: [Read latest Backup ID and password from .openclaw-backup-recovery.txt]
       [Execute download workflow]

Example 4: Restore Specific Backup

User: Restore backup 3f8a2b1c-1234-5678-90ab-cdef12345678
Claude: [Read password for this Backup ID from recovery file]
       [Execute download workflow]

Example 5: Delete Old Backups

User: Delete my old backups
Claude: [Show available backup list from recovery file]
       [User selects backup to delete]
       [Execute delete workflow]
       [Remove entry from recovery file]

Best Practices

  1. Regular Backups: Recommend weekly backups or after important changes
  2. Recovery File Management: Keep .openclaw-backup-recovery.txt safe and backed up separately
  3. Verify Restoration: Regularly test backup restoration process to ensure backups are usable
  4. Clean Old Backups: Regularly delete unneeded old backups to save storage space
  5. Multiple Copies: Consider keeping recovery file in multiple secure locations

Script Path

Script file is located in Skill directory at scripts/backup.py.

When executing Bash commands, ensure correct relative or absolute path is used. Usually:

  • If currently in Skill directory: python3 scripts/backup.py...
  • If in other directory: Use absolute path or cd to Skill directory first

Reference Documentation


Version: 2.0.0 Author: Claude Code License: MIT Password Policy: Auto-generated unique password per backup (NEW in v2.0.0)

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

38.64%
按下载量换算8,430

Claude

29.45%
按下载量换算6,425

Cursor

18.5%
按下载量换算4,036

Gemini CLI

9.96%
按下载量换算2,173

安全审计

Gen Agent Trust Hub

未通过

Socket

未通过

Snyk

未通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills