¿Qué hace CloudDrive2 云盘管理?
Gestiona archivos y sistemas de nube (115/Baidu/Xunlei/directorio local) mediante el servicio gRPC local de CloudDrive2. Dirección 127.0.0.1:19798, ya autenticado automáticamente.
Requisitos
- Servicio en ejecución permanente, no necesita iniciarse
- Autenticación automática: prioriza
CD2_TOKEN/CLOUDDRIVEAPI→ API token en/opt/clouddrive2/config/api_tokens.json→GET token.txt. Normalmente funciona directamente. - Directorio de herramientas:
/root/.openclaw/workspace/skills/clouddrive2/cd2.py— invocador genérico, soporta los 227 RPCcd2cmd.py— comandos rápidos para operaciones frecuentesgen/proto/— cliente gRPC Python generado (no modificar)clouddrive.proto— definición proto más reciente (1.0.17)docs/— instantánea de la documentación oficial gRPC (guía ante errores)
Documentación oficial como guía
- Instantánea local:
docs/CloudDrive2_gRPC_API_Guide_zh-CN.md(sincronizada automáticamente con la oficial) - Consúltala primero en caso de error o para buscar campos: nombres de métodos, campos de solicitud/respuesta, valores de enumeración, explicaciones de errores comunes
- Versión en línea: https://www.clouddrive2.com/api/CloudDrive2_gRPC_API_Guide.html
- Actualización automática: cada lunes se detectan cambios en la documentación/proto oficial; si hay cambios, se regenera el cliente automáticamente y se sincroniza en tres lugares (copia de trabajo,
~/.agents/skills/clouddrive2, GitHubeutopiazen/clouddrive2-skill). El resumen de cambios se escribe enscripts/cd2doc-watch/changes/
Uso
A. Comandos rápidos (cd2cmd.py, operaciones frecuentes)
cd /root/.openclaw/workspace/skills/clouddrive2
python3 cd2cmd.py ls /115open # Listar directorio: nombre<TAB>tamaño<TAB>tipo
python3 cd2cmd.py ls / --refresh # Forzar refresco de caché
python3 cd2cmd.py find /115open 电影 # Búsqueda difusa
python3 cd2cmd.py info /115open/xx.mkv # Detalles del archivo
python3 cd2cmd.py mkdir /115open 新文件夹
python3 cd2cmd.py mv /115open/a.mkv /115open/电影 # Mover (por defecto renombrar conflicto)
python3 cd2cmd.py cp /115open/a.mkv /115open/备份 --policy overwrite
python3 cd2cmd.py rm /115open/垃圾.mkv # Eliminar (papelera)
python3 cd2cmd.py rmperm /115open/垃圾.mkv # Eliminar permanentemente
python3 cd2cmd.py rn /115open/a.mkv b.mkv # Renombrar
python3 cd2cmd.py dl /115open/a.mkv # URL de descarga + curl/wget
python3 cd2cmd.py mounts | clouds | copy-tasks # Montajes/nubes/tareas de copia
python3 cd2cmd.py dl-tasks | ul-tasks # Cola de descarga/subida
python3 cd2cmd.py backups # Estado de copias de seguridad
python3 cd2cmd.py settings | acct | tokens # Configuración/cuenta/tokens
python3 cd2cmd.py token-create 名字 --perm allow_read allow_list
python3 cd2cmd.py unlock /path 密码 [--permanent]
python3 cd2cmd.py stat # Información del sistema
B. Cualquier RPC (cd2.py) — toda la funcionalidad documentada
python3 cd2.py <RpcName> [field=value ...] [--json|--raw|--no-auth|--list]
- Los nombres de campo usan camelCase (coinciden con la documentación), anidados con
.:subField=value - Los valores se interpretan como JSON (números/booleanos/arrays se convierten automáticamente); los métodos de streaming se agregan automáticamente
--listimprime los 227 nombres de métodos- Ejemplos comunes:
python3 cd2.py GetSubFiles path=/115open forceRefresh=true
python3 cd2.py FindFileByPath parentPath=/115open path=/115open/电影/xxx.mkv
python3 cd2.py GetSearchResults searchFor=电影 path=/ fuzzyMatch=true
python3 cd2.py CreateFolder parentPath=/115open folderName=新目录
python3 cd2.py RenameFile theFilePath=/115open/a.mkv newName=b.mkv
python3 cd2.py MoveFile theFilePaths=/115open/a.mkv destPath=/115open/电影 conflictPolicy=Rename
python3 cd2.py CopyFile theFilePaths=/115open/a.mkv destPath=/115open/备份 conflictPolicy=Skip
python3 cd2.py DeleteFiles path=/115open/垃圾1.mkv path=/115open/垃圾2.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
Conceptos clave
- Prefijo de ruta (raíz de la nube):
/115open,/百度网盘,/迅雷云盘,/mnt(disco local),/CD2(local /ssd/CD2) - Política de conflicto
conflictPolicy:Overwrite=0 / Rename=1 / Skip=2 - Lista de nubes:
python3 cd2.py GetAllCloudApis - Puntos de montaje: por defecto solo
/mnt/115openestá montado; usaGetMountPointspara verlos - Eliminación: por defecto va a la papelera;
DeleteFilesPermanently/rmpermes eliminación permanente - Descarga:
GetDownloadUrlPathdevuelve una URL completa (directUrltiene prioridad, de lo contrariodownloadUrlPathcontiene marcadores de posición{SCHEME}/{HOST}/{PREVIEW}que deben reemplazarse); dirección con127.0.0.1:19798 - Operaciones con archivos grandes (mover/copiar entre nubes) generan tareas en segundo plano; se rastrean con
GetCopyTasks
Solución de problemas de autenticación
No valid auth token→ falta archivo de token o variable de entorno; verifica si existeapi_tokens.json- Solicitud de 2FA → necesita
CD2_TOTPo usar token API - Los métodos públicos (GetSystemInfo/GetToken/Login, etc.) no requieren autenticación; añade
--no-auth
Verificación
Después de cada operación, confirma el éxito mediante los campos del resultado:
- Crear/mover/copiar/eliminar → devuelve
FileOperationResultconsuccess/errorMessage - Listar/buscar → verifica el número de resultados y el objetivo
- Si la operación falla, revisa primero
errorMessage, luego decide si reintentar o consultar el estado de la tarea