CloudDrive2 雲盤管理
ローカルの CloudDrive2 gRPC サービスを介して、クラウドストレージ (115/百度網盤/迅雷/ローカルディレクトリ) のファイル操作とシステム管理を実行します。サービスアドレスは 127.0.0.1:19798 で、ログイン済み、認証は自動完了します。
前提条件
- サービスは常駐実行中で、起動は不要
- 認証は自動:
CD2_TOKEN/CLOUDDRIVEAPI環境変数 → ローカル/opt/clouddrive2/config/api_tokens.jsonの API トークン →GET token.txtの順で優先。通常は直接利用可能。 - ツールディレクトリ:
/root/.openclaw/workspace/skills/clouddrive2/cd2.py— 汎用呼び出しツール、全 227 の RPC をサポートcd2cmd.py— よく使うコマンドを便利にラップgen/proto/— 生成された Python gRPC クライアント (変更禁止)clouddrive.proto— 最新の proto 定義 (1.0.17)docs/— 公式 gRPC ドキュメントのスナップショット (エラー時のリファレンス)
公式ドキュメントのリファレンス
- ローカルスナップショット:
docs/CloudDrive2_gRPC_API_Guide_zh-CN.md(公式更新に合わせ自動同期) - エラーやフィールド確認時はこれを優先参照: メソッド名、リクエスト/レスポンスフィールド、列挙値、よくあるエラーの説明がすべて記載
- オンライン版: https://www.clouddrive2.com/api/CloudDrive2_gRPC_API_Guide.html
- 自動更新: 毎週月曜日に公式ドキュメント/proto の変更を自動検出。更新があればクライアントを自動再生成し、3 箇所 (このワークコピー、
~/.agents/skills/clouddrive2、GitHubeutopiazen/clouddrive2-skill) に同期。変更概要はscripts/cd2doc-watch/changes/に書き込まれます。
使用方法
A. クイックコマンド (cd2cmd.py、頻繁に使う操作に最適)
cd /root/.openclaw/workspace/skills/clouddrive2
python3 cd2cmd.py ls /115open # ディレクトリ一覧: 名前<TAB>サイズ<TAB>タイプ
python3 cd2cmd.py ls / --refresh # キャッシュを強制リフレッシュ
python3 cd2cmd.py find /115open 映画 # あいまい検索
python3 cd2cmd.py info /115open/xx.mkv # ファイル詳細
python3 cd2cmd.py mkdir /115open 新フォルダ
python3 cd2cmd.py mv /115open/a.mkv /115open/映画 # 移動 (デフォルトは rename 衝突)
python3 cd2cmd.py cp /115open/a.mkv /115open/バックアップ --policy overwrite
python3 cd2cmd.py rm /115open/ゴミ.mkv # 削除 (ゴミ箱)
python3 cd2cmd.py rmperm /115open/ゴミ.mkv # 完全削除
python3 cd2cmd.py rn /115open/a.mkv b.mkv # 名前変更
python3 cd2cmd.py dl /115open/a.mkv # ダウンロード URL + curl/wget
python3 cd2cmd.py mounts | clouds | copy-tasks # マウントポイント/クラウド/コピータスク
python3 cd2cmd.py dl-tasks | ul-tasks # ダウンロード/アップロードキュー
python3 cd2cmd.py backups # バックアップ状態
python3 cd2cmd.py settings | acct | tokens # 設定/アカウント/トークン
python3 cd2cmd.py token-create 名前 --perm allow_read allow_list
python3 cd2cmd.py unlock /path パスワード [--permanent]
python3 cd2cmd.py stat # システム情報
B. 任意の RPC (cd2.py) — ドキュメントの全機能
python3 cd2.py <RpcName> [field=value ...] [--json|--raw|--no-auth|--list]
- フィールド名は camelCase (ドキュメント準拠)、ネストは
.で区切る:subField=value - 値は JSON としてパース (数値/bool/配列は自動変換)、ストリーミングメソッドは自動集約
--listで全 227 メソッド名を表示- よく使う例:
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
重要な概念
- パスプレフィックス (クラウドルート):
/115open、/百度網盤、/迅雷雲盤、/mnt(ローカルディスク)、/CD2(ローカル /ssd/CD2) - コンフリクトポリシー
conflictPolicy:Overwrite=0 / Rename=1 / Skip=2 - クラウド一覧:
python3 cd2.py GetAllCloudApis - マウントポイント: デフォルトでは
/mnt/115openのみマウント。GetMountPointsで確認 - 削除 はデフォルトでゴミ箱へ;
DeleteFilesPermanently/rmpermで完全削除 - ダウンロード:
GetDownloadUrlPathは結合済み URL を返す (directUrl優先、それ以外はdownloadUrlPathに{SCHEME}/{HOST}/{PREVIEW}プレースホルダーを含むため置換が必要); アドレスは127.0.0.1:19798を使用 - 大ファイル操作 (クラウド間の移動/コピー) はバックグラウンドタスクとなり、
GetCopyTasksで追跡
認証トラブルシューティング
No valid auth token→ 証明書ファイルまたは環境変数が不足。api_tokens.jsonの存在を確認- 2FA プロンプト →
CD2_TOTPが必要、または API トークンを使用 - 公開メソッド (GetSystemInfo/GetToken/Login など) は認証不要。
--no-authを追加
検証
操作を実行するたびに、結果フィールドで成功を確認:
- 作成/移動/コピー/削除 →
FileOperationResultにsuccess/errorMessageが含まれる - 一覧/検索 → 返されたエントリ数と目的を確認
- 操作失敗時は、まず
errorMessageを確認し、その後再試行するかタスク状態を確認