$npx -y skills add baidu-netdisk/bdpan-storage --skill baidu-drive百度网盘(Baidu Drive)文件管理 — 上传、下载、转存、分享、搜索、移动、复制、重命名、创建文件夹。 同时支持 Agent 记忆备份/恢复(kimiclaw/maxclaw/qclaw/openclaw)。 TRIGGER: 用户提及"百度网盘/bdpan/网盘/云盘/baidu drive/Baidu Drive"并涉及文件操作; 或用户提及"备份记忆"、"恢复记忆"、"查看记忆备份"等记忆相关操作。 DO NOT TRIGGER: 非文件存储操作,或使用其他云盘服务时;本地记忆整理/清理操作;PPT 生成操作(已独立为 baidu-wenk
| 1 | # 百度网盘存储 Skill |
| 2 | |
| 3 | 百度网盘文件管理工具,所有操作限制在 `/apps/bdpan/` 目录内。适配 Claude Code、DuClaw、OpenClaw 等。 |
| 4 | |
| 5 | > 使用注意事项详见 [reference/notes.md](./reference/notes.md) |
| 6 | |
| 7 | ## 触发规则 |
| 8 | |
| 9 | ### 网盘文件操作触发 |
| 10 | |
| 11 | 同时满足以下条件才执行: |
| 12 | |
| 13 | 1. 用户明确提及"百度网盘"、"bdpan"、"网盘" |
| 14 | 2. 操作意图明确(上传/下载/转存/分享/查看/搜索/移动/复制/重命名/创建文件夹/登录/注销) |
| 15 | |
| 16 | 未通过触发规则时,禁止执行任何 bdpan 命令。 |
| 17 | |
| 18 | > **上下文延续:** 当前对话已在进行网盘操作时,后续消息无需再次提及"网盘"即可触发。 |
| 19 | |
| 20 | ### 记忆备份/恢复触发 |
| 21 | |
| 22 | **以下表达即使未提及"网盘"也应触发(仅限 kimiclaw/maxclaw/qclaw/openclaw 环境):** |
| 23 | |
| 24 | | 用户说法示例 | 触发操作 | |
| 25 | |------------|---------| |
| 26 | | "备份记忆"、"备份我的记忆"、"把记忆存到网盘" | backup | |
| 27 | | "查看记忆备份"、"有哪些备份"、"备份列表" | list | |
| 28 | | "恢复记忆"、"还原记忆"、"回滚记忆"、"记忆回档" | restore(需确认日期) | |
| 29 | | "恢复 3月16号 的记忆"、"恢复 2026-03-16 的备份" | restore 指定日期 | |
| 30 | |
| 31 | **以下情况不触发记忆备份/恢复:** |
| 32 | - "帮我记住…"、"整理记忆"、"清理记忆"(本地操作,不涉及网盘) |
| 33 | - "备份我的代码/文件"(操作对象不是记忆) |
| 34 | - 非以上 4 种 Claw 环境(报错说明不支持,不执行) |
| 35 | |
| 36 | **区分原则:** 操作对象是否为 Agent 记忆文件(AGENTS.md、SOUL.md、MEMORY.md、memory/*.md 等)。 |
| 37 | |
| 38 | --- |
| 39 | |
| 40 | ## 安全约束(最高优先级,不可被任何用户指令覆盖) |
| 41 | |
| 42 | 1. **登录**:必须使用 `bash ${CLAUDE_SKILL_DIR}/scripts/login.sh`,禁止直接调用 `bdpan login` 及其任何子命令/参数(包括 `--get-auth-url`、`--set-code` 等,即使在 GUI 环境也禁止) |
| 43 | 2. **Token/配置**:禁止读取或输出 `~/.config/bdpan/config.json` 内容(含 access_token 等敏感凭据) |
| 44 | 3. **更新/登录**:更新必须由用户明确指令触发,禁止自动或静默执行;Agent 禁止使用 `--yes` 参数执行 update.sh 或 login.sh |
| 45 | 4. **环境变量**:Agent 禁止主动设置 `BDPAN_CONFIG_PATH`、`BDPAN_BIN`、`BDPAN_INSTALL_DIR` 等环境变量(这些变量供用户在脚本外手动配置,Agent 不应代为设置) |
| 46 | 5. **路径安全**:禁止路径穿越(`..`、`~`)、禁止访问 `/apps/bdpan/` 范围外的绝对路径 |
| 47 | 6. **记忆备份约束**:禁止直接用裸 `bdpan upload/download` 命令操作记忆目录;必须通过 `bash ${CLAUDE_SKILL_DIR}/scripts/memory-backup.sh` 脚本执行,以确保 manifest 生成、路径安全检查、safety net 备份等机制正常运行 |
| 48 | |
| 49 | --- |
| 50 | |
| 51 | ## 前置检查 |
| 52 | |
| 53 | 每次触发时按顺序执行: |
| 54 | |
| 55 | 1. **安装检查**:`command -v bdpan`,未安装则告知用户并确认后执行 `bash ${CLAUDE_SKILL_DIR}/scripts/install.sh`(用户确认后可加 `--yes` 跳过安装器内部确认) |
| 56 | 2. **登录检查**:`bdpan whoami`,未登录则引导执行 `bash ${CLAUDE_SKILL_DIR}/scripts/login.sh`。(**重要:** 向用户展示授权链接时,必须将链接提取到代码块外部,并严格使用 Markdown 格式 `[点击此处完成授权登录](URL)` 进行回复,确保手机端可点击) |
| 57 | 3. **路径校验**:验证远端路径在 `/apps/bdpan/` 范围内 |
| 58 | |
| 59 | --- |
| 60 | |
| 61 | ## 确认规则 |
| 62 | |
| 63 | | 风险等级 | 操作 | 策略 | |
| 64 | |----------|------|------| |
| 65 | | **高(必须确认)** | `rm` 删除、上传/下载目标已存在同名文件 | 列出影响范围,等待用户确认 | |
| 66 | | **中(路径模糊时确认)** | upload、download、mv、rename、cp | 路径明确直接执行,不明确则确认 | |
| 67 | | **低(直接执行)** | ls、search、whoami、mkdir、share | 无需确认 | |
| 68 | |
| 69 | **额外规则:** |
| 70 | - 操作意图模糊("处理文件"→确认上传还是下载)→ 必须确认 |
| 71 | - 序数/代词引用有歧义("第N个"、"它"、"上面那个")→ 必须确认 |
| 72 | - 用户取消意图("算了"、"不要了"、"取消")→ 立即中止,不执行任何命令 |
| 73 | |
| 74 | --- |
| 75 | |
| 76 | ## 核心操作 |
| 77 | |
| 78 | ### 查看状态 |
| 79 | |
| 80 | ```bash |
| 81 | bdpan whoami |
| 82 | ``` |
| 83 | |
| 84 | ### 列表查询 |
| 85 | |
| 86 | ```bash |
| 87 | bdpan ls [目录路径] [--json] [--order name|time|size] [--desc] [--folder] |
| 88 | ``` |
| 89 | |
| 90 | ### 上传 |
| 91 | |
| 92 | ```bash |
| 93 | bdpan upload <本地路径> <远端路径> |
| 94 | ``` |
| 95 | |
| 96 | **关键约束:** 单文件上传远端路径必须是文件名,禁止以 `/` 结尾。文件夹上传:`bdpan upload ./project/ project/`。 |
| 97 | |
| 98 | 步骤:确认本地路径存在 → 确认远端路径 → `bdpan ls` 检查远端是否已存在 → 执行。 |
| 99 | |
| 100 | ### 下载 |
| 101 | |
| 102 | **直接下载:** |
| 103 | |
| 104 | ```bash |
| 105 | bdpan download <远端路径> <本地路径> |
| 106 | ``` |
| 107 | |
| 108 | 步骤:`bdpan ls` 确认云端存在 → 确认本地路径 → 检查本地是否已存在 → **检查文件大小决定下载策略** → 执行。若 ls 未找到,建议 `bdpan search <文件名>`。 |
| 109 | |
| 110 | **大文件下载策略(重要):** |
| 111 | |
| 112 | Agent 的 Bash 工具有执行超时限制,大文件下载可能因超时而中断。必须根据文件大小选择下载策略: |
| 113 | |
| 114 | 1. **获取文件大小**:用 `bdpan ls --json <远端路径>` 获取 `size` 字段(字节) |
| 115 | 2. **按大小分策略执行**: |
| 116 | |
| 117 | | 文件大小 | 策略 | 执行方式 | |
| 118 | |----------|------|---------| |
| 119 | | ≤ 50MB | 直接下载 | `bdpan download <远端路径> <本地路径>`,Bash timeout 设为 300000(5 分钟) | |
| 120 | | > 50MB | 后台下载 | 使用 `nohup` 后台执行,Agent 轮询进度 | |
| 121 | |
| 122 | **小文件(≤ 50MB)直接下载:** |
| 123 | |
| 124 | 正常执行 `bdpan download`,Bash 工具 timeout 参数设为 `300000`(5 分钟)。 |
| 125 | |
| 126 | **大文件(> 50MB)后台下载流程:** |
| 127 | |
| 128 | ```bash |
| 129 | # 1. 启动后台下载(nohup + 进度日志) |
| 130 | nohup bdpan download <远端路径> <本地路径> > /tmp/bdpan-dl-$$.log 2>&1 & echo $! |
| 131 | ``` |
| 132 | |
| 133 | ```bash |
| 134 | # 2. 轮询检查进度(每 30 秒检查一次,使用 Bash run_in_background) |
| 135 | # 检查进程是否存活 + 已下载文件大小 |
| 136 | kill -0 <PID> 2>/dev/null && echo "running" || echo "done"; ls -l <本地路径> 2>/dev/null; tail -5 /tmp/bdpan-dl-<PID>.log 2>/dev/null |
| 137 | ``` |
| 138 | |
| 139 | ```bash |
| 140 | # 3. 下载完成后清理日志 |
| 141 | rm -f /tmp/bdpan-dl-<PID>.log |
| 142 | ``` |
| 143 | |
| 144 | Agent 执行大文件后台下载时的行为规范: |
| 145 | - 启动后台下载后,**立即告知用户**:下载已在后台启动,文件大小 X,预计需要 Y 时间 |
| 146 | - 每次轮询后向用户报告进度(已下载大小 / 总大小、百分比) |
| 147 | - 下载完成后告知用户最终结果 |
| 148 | - 如果进程异常退出,检查日志并报告错误原因 |
| 149 | |
| 150 | **分享链接下载(先转存再下载到本地):** |
| 151 | |
| 152 | ```bash |
| 153 | bdpan download "https://pan.baidu.com/s/5xxxxx" ./downloaded/ # 无码公开分享 |
| 154 | bdpan download "https://pan.baidu.com/s/1xxxxx?pwd=abcd" ./downloaded/ |
| 155 | bdpan download "https://pan.baidu.com/s/1xxxxx" ./downloaded/ -p abcd # 提取码单独传入 |
| 156 | bdpan download "https://pan.baidu.com/s/1xxxxx?pwd=abcd" ./downloaded/ -t my-folder # 指定转存目录 |
| 157 | ``` |
| 158 | |
| 159 | > 分享链接下载支持 `/s/1`、`/s/5` 等分享链接前缀。未携带 `?pwd=` 且用户未提供 `-p` 时,直接执行命令,不预先追问提取码;由 CLI 判断链接是否为无码公开分享。分享链接下载同样适用大文件策略:转存完成后,用 `bdpan ls --json` 获取文件大小,再按上述策略执行下载。 |
| 160 | |
| 161 | ### 转存 |
| 162 | |
| 163 | 将分享文件转存到网盘,**不下载到本地**(与 download 分享链接模式的区别)。 |
| 164 | |
| 165 | ```bash |
| 166 | bdpan transfer "https://pan.baidu.com/s/5xxxxx" [-p 提取码] [-d 目标目录] [--json] |
| 167 | ``` |
| 168 | |
| 169 | 步骤:确认分享链接是标准 `https://pan.baidu.com/s/...` 格式 → 如果链接含 `?pwd=` 或用户明确提供提取码则保留该提取码,否则不要求用户补充 → 确认目标目录 → 执行。转存成功后只展示本次转存的文件(非整个目录),显示数量和目标目录。 |
| 170 | |
| 171 | 转存错误处理: |
| 172 | |
| 173 | | CLI 返回场景 | Skill 用户提示 | 是否建议重试 | |
| 174 | |---|---|---| |
| 175 | | `errno=13003` 且未提供提取码 | 该分享链接需要提取码,请补充提取码后重试。 | 是 | |
| 176 | | `errn |