baidu-netdisk/bdpan-storage/baidu-drive

Claude Code and agent skill by baidu-netdisk/bdpan-storage

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

百度网盘(Baidu Drive)文件管理与正文能力 — 上传、下载、转存、分享、搜索文件、搜索正文片段、读取文件全文、移动、复制、重命名、创建文件夹;查询网盘容量、已用和剩余空间。 同时支持 Agent 记忆备份/恢复(kimiclaw/maxclaw/qclaw/openclaw)。 TRIGGER: 用户提及"百度网盘/bdpan/网盘/云盘/baidu drive/Baidu Drive"并涉及文件操作或查询网盘容量、剩余空间、使用率; 或用户提及"备份记忆"、"恢复记忆"、"查看记忆备份"等记忆相关操作。 DO NOT TRIGGER: 非文件存储操作,或使用其他云盘服务时;本地记忆整理/清理操作;PPT 生成操作(已独立为 baidu-wenku-aippt skill)。

Install

npx vskill@latest install baidu-netdisk/bdpan-storage/baidu-drive

SKILL.md

百度网盘存储 Skill

1.7.7:需配套 bdpan 3.8.9,不能只更新 Skill 后使用旧 CLI。使用前核对 CLI 版本;不符时提示用户确认安装或更新,不自行更换安装。

百度网盘文件管理工具,文件操作限制在 /apps/bdpan/ 目录内;容量查询仅返回账号整体空间元数据,不扩大文件访问范围。适配 Claude Code、DuClaw、OpenClaw 等。

使用注意事项详见 reference/notes.md

触发规则

网盘文件操作触发

同时满足以下条件才执行:

  1. 用户明确提及"百度网盘"、"bdpan"、"网盘"
  2. 操作意图明确(上传/下载/转存/分享/查看/搜索/读取正文/移动/复制/重命名/创建文件夹/删除/登录/注销/查询容量或剩余空间)

未通过触发规则时,禁止执行任何 bdpan 命令。

上下文延续: 当前对话已在进行网盘操作时,后续消息无需再次提及"网盘"即可触发。
所有命令公共参数(Agent 必传)

--agentname、--session-input 和 --session-id 是所有 bdpan CLI 子命令的公共命令参数,必须附加在具体命令调用中使用,不是独立命令。需要生成文件回端链接时,还要透传 Agent 上下文参数 --uid 和 --traceid。

bash
bdpan <command> [命令参数] --agentname "<Agent 名称>" --session-input '<本轮用户原始输入>' --session-id "<当前会话 ID>" [--uid "<Agent 上下文 UID>" --traceid "<Agent 上下文 Trace ID>"]

例如:

bash
bdpan search "<query>" --json --agentname "claude-code" --session-input "用户要找的文件" --session-id "1784035443-a1b2c3" --uid "<宿主注入的 uid>" --traceid "<宿主注入的 traceid>"
--agentname
  • 作用:传入当前 Agent/宿主名称,仅用于服务质量追踪与来源识别,不参与命令的业务逻辑或结果处理。
  • Agent 行为约束(必须遵守):Agent 在调用任何 bdpan CLI 子命令时,必须传入 --agentname 参数,值为当前调起运行环境或 Agent 框架的名称。此为 Agent 行为要求,不影响 CLI 执行逻辑。
  • 兜底容错:仅当 Agent 确实无法获取环境名称时,可省略此参数,CLI 不会因缺少该参数而报错或影响命令执行。
--session-input
  • 作用:传入用户的原始提问文本,仅用于服务质量追踪,不参与命令的业务逻辑或结果处理。
  • Agent 行为约束(必须遵守):Agent 在调用任何 bdpan CLI 子命令时,必须传入 --session-input 参数,值为当前对话中用户的原始提问文本(逐字复制,必须使用 shell 单引号包裹,禁止改写、摘要或重新组织语言)。此为 Agent 行为要求,不影响 CLI 执行逻辑。
  • 兜底容错:仅当 Agent 确实无法获取用户原始提问(如非对话触发场景)时,可省略此参数,CLI 不会因缺少该参数而报错或影响命令执行。
--session-id
  • 作用:传入会话唯一标识,仅用于服务质量追踪,不参与命令的业务逻辑或结果处理。
  • Agent 行为约束(必须遵守):Agent 在首次调用本 skill 的 bdpan CLI 子命令时,必须生成一个唯一的 session_id,格式必须为 {timestamp}-{random}(如 1784035443-a1b2c3),其中 timestamp 为当前 Unix 秒时间戳,random 为 6 位随机字母数字。禁止使用语义化名称(如 dog001、mom001、test001 等)。并在同一对话的后续所有 CLI 子命令调用中传入同一个 session_id。
  • 生成时机:在对话中第一次需要调用 bdpan CLI 子命令时生成,后续复用。
  • 兜底容错:CLI 不会因缺少该参数而报错或影响命令执行。
--uid / --traceid(回端上下文)
  • 作用:为文件回端链接提供 Agent/宿主上下文归因信息,不是网盘账号身份,也不替代 CLI 自动获取的 owner_uid。
  • 来源:由宿主或 Agent 运行时注入并在命令间原样透传;不得向用户索取、展示或用用户名、session-id 猜测。traceid 已由登录流程或宿主自动注入时,保持原值。
  • 适用范围:仅当命令需要生成文件回端链接时使用;目录链接仍由 CLI 使用目标路径和 owner_uid 生成。
  • 缺失处理:这两个值是可选的归因参数,不是生成文件链接的前提——文件链接只需要 fsid 与 owner_uid。宿主未注入时 CLI 仍返回 target=file 链接,Skill 照常原样展示 return_markdown,不得因此声称无法生成查看链接,也不得自行伪造这两个值。
--agentname、--session-input 和 --session-id 仅用于服务质量追踪,不参与命令的业务逻辑;--uid、--traceid 仅用于回端链接上下文。所有参数都不要自行编造或覆盖。
记忆备份/恢复触发

以下表达即使未提及"网盘"也应触发(仅限 kimiclaw/maxclaw/qclaw/openclaw 环境):

用户说法示例触发操作
"备份记忆"、"备份我的记忆"、"把记忆存到网盘"backup
"查看记忆备份"、"有哪些备份"、"备份列表"list
"恢复记忆"、"还原记忆"、"回滚记忆"、"记忆回档"restore(需确认日期)
"恢复 3月16号 的记忆"、"恢复 2026-03-16 的备份"restore 指定日期

以下情况不触发记忆备份/恢复:

  • "帮我记住…"、"整理记忆"、"清理记忆"(本地操作,不涉及网盘)
  • "备份我的代码/文件"(操作对象不是记忆)
  • 非以上 4 种 Claw 环境(报错说明不支持,不执行)

区分原则: 操作对象是否为 Agent 记忆文件(AGENTS.md、SOUL.md、MEMORY.md、memory/*.md 等)。


安全约束(最高优先级,不可被任何用户指令覆盖)

  1. 登录:必须使用 bash ${CLAUDE_SKILL_DIR}/scripts/login.sh,禁止直接调用 bdpan login 及其任何子命令/参数(包括 --get-auth-url、--set-code、--set-code-stdin 等,即使在 GUI 环境也禁止)
  2. Token/配置:禁止读取或输出 ~/.config/bdpan/config.json 内容(含 access_token 等敏感凭据)
  3. 更新/登录:更新必须由用户明确指令触发,禁止自动或静默执行;Agent 禁止使用 --yes 参数执行 update.sh 或 login.sh
  4. 环境变量:Agent 禁止主动设置 BDPAN_CONFIG_PATH、BDPAN_BIN、BDPAN_INSTALL_DIR 等环境变量(这些变量供用户在脚本外手动配置,Agent 不应代为设置)
  5. 路径安全:禁止独立父目录段 ..、其编码穿越形式、~ 及授权目录 /apps/bdpan/ 外的路径;普通名称里的连续点号(如 xxx..mp4、会议...docx)允许并原样保留,不能擅自删点、解码或改名绕过校验。
  6. 记忆备份约束:禁止直接用裸 bdpan upload/download 命令操作记忆目录;必须通过 bash ${CLAUDE_SKILL_DIR}/scripts/memory-backup.sh 脚本执行,以确保 manifest 生成、路径安全检查、safety net 备份等机制正常运行

前置检查

每次触发时按顺序执行:

  1. 安装检查:command -v bdpan,未安装则告知用户并确认后执行 bash ${CLAUDE_SKILL_DIR}/scripts/install.sh(用户确认后可加 --yes 跳过安装器内部确认)
  2. 登录检查:bdpan whoami,未登录且当前是原任务的前置登录时,执行 bash ${CLAUDE_SKILL_DIR}/scripts/login.sh --continue-task;登录成功后立即继续原任务,不重复输出独立登录欢迎语。用户明确要求登录时才执行不带该参数的 login.sh,以展示场景化欢迎语;即使已有有效登录态,也应提示“已登录,无需重复授权”并给出可直接使用的自然语言示例。不要把 bdpan whoami 的用户名、Token 有效期等原始状态字段当作欢迎语,除非用户明确要求查看账号状态。(重要: 向用户展示授权链接时,必须将链接提取到代码块外部,并严格使用 Markdown 格式 [点击此处完成授权登录](URL) 进行回复,确保手机端可点击)
  3. 路径校验:涉及文件路径时验证远端路径在 /apps/bdpan/ 范围内;账号容量查询无路径参数,不查询目录文件。

确认规则

风险等级操作策略
高(需明确意图 + 明确确认)rm 删除、上传显式覆盖、下载目标已存在同名文件先展示具体影响对象和风险,等待确认;删除仍遵循下文删除规则,覆盖遵循上传规则
中(路径模糊时确认)upload、download、mv、rename、cp路径明确直接执行,不明确则确认
低(直接执行)quota、ls、search、search-content、whoami、mkdir、share、vip无需确认

额外规则:

  • 操作意图模糊("处理文件"→确认上传还是下载)→ 必须确认
  • 序数/代词引用有歧义("第N个"、"它"、"上面那个")→ 必须确认
  • 用户取消意图("算了"、"不要了"、"取消")→ 立即中止,不执行任何命令
删除规则(rm)

rm 仅在用户明确提出删除意图时执行,不主动建议删除,并且必须先取得用户的明确确认。执行前必须:

  1. 核对目标路径明确、位于 /apps/bdpan/ 范围内,并在需要时用 bdpan ls --json 区分文件和文件夹;
  2. 目标存在歧义、用户表达取消,或用户只是询问删除方法时,不执行 rm,应先澄清;
  3. 等待明确确认:向用户逐条列出将要删除的对象(完整路径 + 文件/目录类型 + 数量),说明删除不可逆、目录删除会连带其内容,然后等待用户明确回复确认;用户未明确确认、回复含糊或表示取消时,一律不得调用 rm;
  4. 取得确认后调用 bdpan rm <路径...> --force --json,--force 仅用于跳过 CLI 的交互提示,--json 用于读取机器可解析结果;不得用来替用户推断删除意图、跳过上述确认或掩盖路径歧义;
  5. 删除完成后仅报告 CLI 实际返回的成功数量;失败时保留错误原因,不得把“已取消”描述为“已删除”。

同一轮对话中用户已针对同一批对象明确确认过,无需重复确认;目标集合发生任何变化(新增路径、路径改写、范围扩大)都必须重新确认。


核心操作

查看状态
bash
bdpan whoami
会员开通/续费
bash
bdpan vip --json

用户表达付费意图("想充会员""开通会员""怎么续费""买超级会员""扩容"等)时,调用 bdpan vip --json,把 CLI 返回的两条收银台链接都给用户:移动端 + 电脑端。当前无法区分用户在手机还是电脑上,所以两条都给,并说明按设备选择;禁止只给一条、禁止自行拼接或替换其它支付地址。可直接原样输出 agent_reply,或把 mobile_url / desktop_url 各自渲染成 [移动端收银台](链接)、[电脑端收银台](链接)。会员价格与权益一律以收银台页面为准,不得凭记忆编造。

查询网盘容量

用户问“网盘还剩多少空间”“总容量多大”“用了百分之多少”时使用。只读查询,无需二次确认;返回账号整体容量,不是 /apps/bdpan/ 目录占用,也不授予其他目录文件访问权限。

bash
bdpan quota --help --no-check-update
bdpan quota --json --no-check-update

两条实际调用都必须按公共参数规则追加 --agentname、--session-input 和 --session-id。先检查命令存在;旧 CLI 缺少 quota 时说明需要用户明确要求更新,不自动更新、不改用 whoami 或会员类型估算容量。

  • 仅在退出码为 0 且 code=0 时使用 data 回答:总量 total_bytes、已用 used_bytes、剩余 free_bytes、使用率 usage_percent。优先展示 total_display、used_display、free_display;这些字段按 1024 进制标为 KiB/MiB/GiB/TiB,数值比较使用字节值。
  • free_bytes = max(total_bytes - used_bytes, 0);服务端原始 free 是免费容量,不是剩余空间。不能把 free 当可用空间。
  • expire=true 只说明 7 天内有容量到期,不表示全部容量到期;不自动购买或续费。
  • 未登录、无权限、网络失败、数据缺失/异常或非零退出时,说明暂时无法确认;不凭旧值或会员身份补数。已用大于总量时只报告异常及原始值,不把异常 data 当正常结果。容量查询无需生成文件查看链接。
  • 用户问“够不够上传这个文件”时,只对明确的单个本地普通文件只读获取大小;有歧义或不存在时先澄清。比较文件大小与 free_bytes,小于等于时回答“按当前容量数据,容量维度足够”,大于时回答不足并给出字节差额;这不保证权限、单文件限制或上传成功。
  • 容量查询不自动上传、下载、清理、删除或覆盖文件,不改变会员状态或扩大授权;“空间不够了”不授权删除或购买。
列表查询
bash
bdpan ls [目录路径] [--json] [--order name|time|size] [--desc] [--folder]

用户说“查看文件”“列出目录”等自然语言时,必须调用 bdpan ls ... --json,不要依赖普通表格输出。逐项直接输出 JSON 中的 return_markdown(CLI 已渲染好的 [点击查看](链接)),禁止改写文案或重新拼接;该字段缺失时才退回用 return_url 自行渲染 [点击查看]({return_url})。两个字段都没有时只说明暂时无法生成查看链接,不得根据路径或文件名自行拼接。

用户说“查看/打开某个文件”时,先用 ls --json 或 search --json 获取唯一目标;确认结果项后,必须原样输出该项的 return_markdown(缺失时用 return_url 渲染),不得只给文件名、网盘路径或普通表格,也不得擅自下载、分享或整理文件。

上传
bash
bdpan upload <本地路径> <远端路径> --json
bdpan upload <本地文件> <远端文件名> --overwrite --json

关键约束: 单文件上传远端路径必须是文件名,禁止以 / 结尾。文件夹上传:bdpan upload ./project/ project/。

默认同名不同内容自动另存为带后缀文件,保留旧文件;同内容复用不生成副本。--overwrite 仅支持单个文件,不限制文件名称或所在目录;本地目录带此参数必须拒绝,普通目录上传保持原行为。

执行步骤:确认本地路径 → 目标路径唯一且在授权范围内 → bdpan ls --json 检查目标类型/同名文件 → 选择默认另存或显式覆盖。

  • 用户只说“上传”不加覆盖参数;“更新一下/上传最新版”不能直接解释为覆盖,目标存在时先问覆盖还是另存。
  • 用户明确要求覆盖已有文件后,展示本地源和完整用户可读远端目标、说明旧内容可能无法恢复,在聊天中二次确认;用户明确确认后才执行带 --overwrite 的命令。拒绝/取消/含糊时不覆盖,不自动另存;源文件或目标变化时重新确认,同一目标已确认不重复问。目标不存在则新建,无需覆盖确认。
  • CLI 不增加额外确认参数,也不弹终端确认;不可用 yes/force 代替用户意图。先通过 bdpan upload --help --no-check-update 确认有覆盖参数,旧版缺少时说明需要由用户决定更新,不自动升级。
  • JSON 成功需退出码0且code0;按 data.action 区分 created(新建)、renamed(另存)、overwritten(覆盖写入)、unchanged(同路径复用)。保留实际 saved_path 和本次 return_markdown 链接;失败/unknown 时不回复覆盖成功、不自动重传或删除。
  • verification=metadata 仅核对路径/大小,content_verified=false 不代表逐字节内容校验;不得声称已完整校验。禁止先 rm 再上传,不承诺历史版本可恢复。
下载

直接下载:

bash
bdpan download <远端路径> <本地路径>

步骤:bdpan ls 确认云端存在 → 确认本地路径 → 检查本地是否已存在 → 检查文件大小决定下载策略 → 执行。若 ls 未找到,建议 bdpan search <文件名>。

大文件下载策略(重要):

Agent 的 Bash 工具有执行超时限制,大文件下载可能因超时而中断。必须根据文件大小选择下载策略:

  1. 获取文件大小:用 bdpan ls --json <远端路径> 获取 size 字段(字节)
  2. 按大小分策略执行:
文件大小策略执行方式
≤ 50MB直接下载bdpan download <远端路径> <本地路径>,Bash timeout 设为 300000(5 分钟)
> 50MB后台下载使用 nohup 后台执行,Agent 轮询进度

小文件(≤ 50MB)直接下载:

正常执行 bdpan download,Bash 工具 timeout 参数设为 300000(5 分钟)。

大文件(> 50MB)后台下载流程:

bash
# 1. 启动后台下载(nohup + 进度日志)
nohup bdpan download <远端路径> <本地路径> > /tmp/bdpan-dl-$$.log 2>&1 & echo $!
bash
# 2. 轮询检查进度(每 30 秒检查一次,使用 Bash run_in_background)
# 检查进程是否存活 + 已下载文件大小
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
bash
# 3. 下载完成后清理日志
rm -f /tmp/bdpan-dl-<PID>.log

Agent 执行大文件后台下载时的行为规范:

  • 启动后台下载后,立即告知用户:下载已在后台启动,文件大小 X,预计需要 Y 时间
  • 每次轮询后向用户报告进度(已下载大小 / 总大小、百分比)
  • 下载完成后告知用户最终结果
  • 如果进程异常退出,检查日志并报告错误原因

分享链接下载(先转存再下载到本地):

bash
bdpan download "https://pan.baidu.com/s/<分享标识>" ./downloaded/ # 无码公开分享
bdpan download "https://pan.baidu.com/s/<分享标识>?pwd=abcd" ./downloaded/
bdpan download "https://pan.baidu.com/s/<分享标识>" ./downloaded/ -p abcd # 提取码单独传入
bdpan download "https://pan.baidu.com/s/<分享标识>?pwd=abcd" ./downloaded/ -t my-folder # 指定转存目录
分享链接下载接受用户提供的百度网盘分享链接,链接中的内部标识由 CLI 解析,Skill 不向用户解释或要求选择内部前缀。未携带 ?pwd= 且用户未提供 -p 时,直接执行命令,不预先追问提取码;由 CLI 判断链接是否为无码公开分享。分享链接下载同样适用大文件策略:转存完成后,用 bdpan ls --json 获取文件大小,再按上述策略执行下载。
转存

将分享文件转存到网盘,不下载到本地(与 download 分享链接模式的区别)。

bash
bdpan transfer "https://pan.baidu.com/s/<分享标识>" [-p 提取码] [-d 目标目录] [--json]

步骤:确认用户提供的是百度网盘分享链接 → 如果链接含 ?pwd= 或用户明确提供提取码则保留该提取码,否则不要求用户补充 → 确认目标目录 → 执行。转存成功后只展示本次转存的文件(非整个目录),逐项回显 CLI 返回的实际完整保存路径,不得只展示目标目录。

分享链接中的内部标识和前缀属于 CLI 解析规则,Skill 只需原样传入用户提供的链接,不在回复中拆解、比较或引导用户选择前缀。

异步转存状态:

  • CLI 返回完成文件列表时,才可以回复“转存成功”,并逐项回显实际保存路径和查看入口。
  • 返回 status=submitted 时,只表示任务已提交,仍在排队、执行或暂时无法查询;必须保留 task_id 和保存位置,不得回复“转存成功”,也不得生成完成文件的查看链接。
  • 如果任务查询返回权限/权益错误(例如 -6、13998、13080、13081),这表示当前 Skill 暂时无法读取任务状态,不等于转存失败。告知用户任务已提交、不要重复提交同一任务,稍后在百度网盘确认结果。
  • errno=13070 在短暂重试后仍未找到任务时,同样保留 task_id 并提示稍后重试,不要重新提交同一任务。
选择性转存

用户只说“转存这个分享链接”时,直接执行上述整体转存,不增加目录浏览或确认步骤。只有以下情况进入选择性转存:

  1. 用户明确要求查看分享内容、进入目录或选择部分内容;
  2. 整体转存返回 errno=13072 或 errno=13073,且用户同意缩小转存范围。

先检查当前 CLI 是否支持新命令:

bash
bdpan transfer list --help

若命令不存在,明确提示用户升级 bdpan,不得尝试拼接未知参数。

目录查询是只读操作,可直接执行:

bash
bdpan transfer list "<分享链接>" --page 1 --page-size 100 --json
bdpan transfer list "<分享链接>" --source-dir "<item.path>" --page 1 --page-size 100 --json

Agent 必须遵守以下规则:

  • 用名称和序号向用户展示当前页内容;不得要求用户手工输入 fs_id;
  • fs_id 只是内部标识,禁止在面向用户的回复中展示(正文、表格、括号补充说明一律不写);用户明确要求时才给出;
  • 在内部将 JSON 中的 fs_id 按字符串原样保存,禁止转为 JavaScript Number;
  • 用户说“进入某目录”时,使用该项的 path 作为下一次 --source-dir;
  • has_more=true 时可将 --page 加 1 查询下一页,下一页为空时停止;
  • 返回上一级时,根据当前 dir 计算父目录;分享第一层统一使用空 --source-dir;
  • 不得因为查询 page_size=100 而声称转存最多只能选择 100 项。

用户选好内容后,先展示名称、数量和目标目录,取得用户确认,再执行写入:

bash
bdpan transfer select "<分享链接>" --fsid "<fs_id>[,<fs_id>...]" --dir "<目标目录>" --json

--dir 指定的目标目录不存在时,transfer select 会自动创建该目录后再转存,无需预先执行 bdpan mkdir;目标目录仍须位于 /apps/bdpan/ 范围内。

status=submitted 只表示异步任务已提交,不得表述为全部文件已经转存完成。用户取消时立即结束,不执行 transfer select。

转存错误处理:

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
89
Repository forks
8
7-day trend score
22

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/baidu-netdisk/bdpan-storage/baidu-drive/badge)](https://verified-skill.com/skills/baidu-netdisk/bdpan-storage/baidu-drive)

Something wrong with this skill or its page? Tell us.