CloudDrive2 Gerenciamento de Nuvem
Execute operações de arquivos e gerenciamento do sistema em nuvens (115/Baidu Netdisk/Xunlei/diretórios locais) através do serviço gRPC do CloudDrive2 local. Endereço do serviço 127.0.0.1:19798, já logado, autenticação automática.
Pré-requisitos
- Serviço em execução contínua, sem necessidade de iniciar
- Autenticação automática: prioriza variáveis de ambiente
CD2_TOKEN/CLOUDDRIVEAPI→ token API em/opt/clouddrive2/config/api_tokens.jsonlocal →GET token.txt. Geralmente funciona diretamente. - Diretório da ferramenta:
/root/.openclaw/workspace/skills/clouddrive2/cd2.py— Invocador genérico, suporta todos os 227 RPCscd2cmd.py— Encapsulamento conveniente para comandos comunsgen/proto/— Cliente gRPC Python gerado (não mexa)clouddrive.proto— Definição proto mais recente (1.0.17)docs/— Instantâneo da documentação oficial gRPC (manual de referência em caso de erros)
Manual de Referência da Documentação Oficial
- Instantâneo local:
docs/CloudDrive2_gRPC_API_Guide_zh-CN.md(sincronizado automaticamente com atualizações oficiais) - Consulte-o primeiro em caso de erros/consulta de campos: nomes de métodos, campos de requisição/resposta, valores de enum, descrições de erros comuns estão todos lá
- Versão online: https://www.clouddrive2.com/api/CloudDrive2_gRPC_API_Guide.html
- Atualização automática: Detecta automaticamente alterações na documentação/proto oficial toda segunda-feira; quando houver atualizações, regenera o cliente e sincroniza em três lugares (esta cópia de trabalho,
~/.agents/skills/clouddrive2, GitHubeutopiazen/clouddrive2-skill); o resumo das alterações é gravado emscripts/cd2doc-watch/changes/
Uso
A. Comandos Rápidos (cd2cmd.py, preferido para operações frequentes)
cd /root/.openclaw/workspace/skills/clouddrive2
python3 cd2cmd.py ls /115open # Listar diretório: nome<TAB>tamanho<TAB>tipo
python3 cd2cmd.py ls / --refresh # Forçar atualização de cache
python3 cd2cmd.py find /115open filme # Pesquisa difusa
python3 cd2cmd.py info /115open/xx.mkv # Detalhes do arquivo
python3 cd2cmd.py mkdir /115open nova_pasta
python3 cd2cmd.py mv /115open/a.mkv /115open/filmes # Mover (conflito padrão: Renomear)
python3 cd2cmd.py cp /115open/a.mkv /115open/backup --policy overwrite
python3 cd2cmd.py rm /115open/lixo.mkv # Excluir (lixeira)
python3 cd2cmd.py rmperm /115open/lixo.mkv # Excluir permanentemente
python3 cd2cmd.py rn /115open/a.mkv b.mkv # Renomear
python3 cd2cmd.py dl /115open/a.mkv # URL de download + curl/wget
python3 cd2cmd.py mounts | clouds | copy-tasks # Pontos de montagem/nuvens/tarefas de cópia
python3 cd2cmd.py dl-tasks | ul-tasks # Filas de download/upload
python3 cd2cmd.py backups # Status de backup
python3 cd2cmd.py settings | acct | tokens # Configurações/conta/tokens
python3 cd2cmd.py token-create nome --perm allow_read allow_list
python3 cd2cmd.py unlock /path senha [--permanent]
python3 cd2cmd.py stat # Informações do sistema
B. RPC Arbitrário (cd2.py) — Todas as funcionalidades da documentação
python3 cd2.py <RpcName> [campo=valor ...] [--json|--raw|--no-auth|--list]
- Nomes de campos em camelCase (conforme documentação), aninhados com
.:subCampo=valor - Valores analisados como JSON (números/bool/arrays são convertidos automaticamente), métodos de streaming são agregados automaticamente
--listimprime todos os 227 nomes de métodos- Exemplos comuns:
python3 cd2.py GetSubFiles path=/115open forceRefresh=true
python3 cd2.py FindFileByPath parentPath=/115open path=/115open/filmes/xxx.mkv
python3 cd2.py GetSearchResults searchFor=filme path=/ fuzzyMatch=true
python3 cd2.py CreateFolder parentPath=/115open folderName=nova_pasta
python3 cd2.py RenameFile theFilePath=/115open/a.mkv newName=b.mkv
python3 cd2.py MoveFile theFilePaths=/115open/a.mkv destPath=/115open/filmes conflictPolicy=Rename
python3 cd2.py CopyFile theFilePaths=/115open/a.mkv destPath=/115open/backup conflictPolicy=Skip
python3 cd2.py DeleteFiles path=/115open/lixo1.mkv path=/115open/lixo2.mkv
python3 cd2.py GetMountPoints
python3 cd2.py GetAllCloudApis
python3 cd2.py GetDownloadUrlPath path=/115open/a.mkv preview=false
python3 cd2.py GetCopyTasks
python3 cd2.py BackupGetAll
python3 cd2.py GetAccountStatus
python3 cd2.py ListTokens
python3 cd2.py GetSystemSettings
Conceitos Chave
- Prefixo de caminho (raiz da nuvem):
/115open,/BaiduNetdisk,/XunleiCloud,/mnt(disco local),/CD2(local /ssd/CD2) - Política de conflito
conflictPolicy:Overwrite=0 / Rename=1 / Skip=2 - Lista de nuvens:
python3 cd2.py GetAllCloudApis - Pontos de montagem: Por padrão, apenas
/mnt/115openestá montado; useGetMountPointspara visualizar - Exclusão: Por padrão vai para a lixeira;
DeleteFilesPermanently/rmpermé para exclusão permanente - Download:
GetDownloadUrlPathretorna a URL montada (directUrltem prioridade, caso contráriodownloadUrlPathcontém placeholders{SCHEME}/{HOST}/{PREVIEW}que precisam ser substituídos); endereço usando127.0.0.1:19798 - Operações com arquivos grandes (mover/copiar entre nuvens) geram tarefas em segundo plano; use
GetCopyTaskspara acompanhar
Solução de Problemas de Autenticação
No valid auth token→ Arquivo de token/ambiente ausente; verifique seapi_tokens.jsonexiste- Aviso de 2FA → Requer
CD2_TOTPou use token API - Métodos públicos (GetSystemInfo/GetToken/Login, etc.) não precisam de autenticação; adicione
--no-auth
Verificação
Após cada operação, confirme o sucesso através dos campos de resultado:
- Criar/mover/copiar/excluir → Retorna
FileOperationResultcontendosuccess/errorMessage - Listar/pesquisar → Verifique se a contagem de entradas corresponde ao esperado
- Se a operação falhar, primeiro veja
errorMessage, depois decida se deve tentar novamente ou verificar o status da tarefa