
baidu-drive
熱門百度网盘(Baidu Drive)文件管理 — 上传、下载、转存、分享、搜索、移动、复制、重命名、创建文件夹。 同时支持 Agent 记忆备份/恢复(kimiclaw/maxclaw/qclaw/openclaw)。 TRIGGER: 用户提及"百度网盘/bdpan/网盘/云盘/baidu drive/Baidu Drive"并涉及文件操作; 或用户提及"备份记忆"、"恢复记忆"、"查看记忆备份"等记忆相关操作。 DO NOT TRIGGER: 非文件存储操作,或使用其他云盘服务时;本地记忆整理/清理操作;PPT 生成操作(已独立为 baidu-wenku-aippt skill)。
百度网盘(Baidu Drive)文件管理 — 上传、下载、转存、分享、搜索、移动、复制、重命名、创建文件夹。 同时支持 Agent 记忆备份/恢复(kimiclaw/maxclaw/qclaw/openclaw)。 TRIGGER: 用户提及"百度网盘/bdpan/网盘/云盘/baidu drive/Baidu Drive"并涉及文件操作; 或用户提及"备份记忆"、"恢复记忆"、"查看记忆备份"等记忆相关操作。 DO NOT TRIGGER: 非文件存储操作,或使用其他云盘服务时;本地记忆整理/清理操作;PPT 生成操作(已独立为 baidu-wenku-aippt skill)。
百度网盘存储 Skill
百度网盘文件管理工具,所有操作限制在 /apps/bdpan/ 目录内。适配 Claude Code、DuClaw、OpenClaw 等。
使用注意事项详见 reference/notes.md
触发规则
网盘文件操作触发
同时满足以下条件才执行:
- 用户明确提及"百度网盘"、"bdpan"、"网盘"
- 操作意图明确(上传/下载/转存/分享/查看/搜索/移动/复制/重命名/创建文件夹/删除/登录/注销)
未通过触发规则时,禁止执行任何 bdpan 命令。
上下文延续: 当前对话已在进行网盘操作时,后续消息无需再次提及"网盘"即可触发。
所有命令公共参数(Agent 必传)
--agentname、--session-input 和 --session-id 是所有 bdpan CLI 子命令的公共命令参数,必须附加在具体命令调用中使用,不是独立命令。需要生成文件回端链接时,还要透传 Agent 上下文参数 --uid 和 --traceid。
bdpan <command> [命令参数] --agentname "<Agent 名称>" --session-input '<本轮用户原始输入>' --session-id "<当前会话 ID>" [--uid "<Agent 上下文 UID>" --traceid "<Agent 上下文 Trace ID>"]
例如:
bdpan search "<query>" --json --agentname "claude-code" --session-input "用户要找的文件" --session-id "1784035443-a1b2c3" --uid "<宿主注入的 uid>" --traceid "<宿主注入的 traceid>"
--agentname
- 作用:传入当前 Agent/宿主名称,仅用于服务质量追踪与来源识别,不参与命令的业务逻辑或结果处理。
- Agent 行为约束(必须遵守):Agent 在调用任何
bdpanCLI 子命令时,必须传入--agentname参数,值为当前调起运行环境或 Agent 框架的名称。此为 Agent 行为要求,不影响 CLI 执行逻辑。 - 兜底容错:仅当 Agent 确实无法获取环境名称时,可省略此参数,CLI 不会因缺少该参数而报错或影响命令执行。
--session-input
- 作用:传入用户的原始提问文本,仅用于服务质量追踪,不参与命令的业务逻辑或结果处理。
- Agent 行为约束(必须遵守):Agent 在调用任何
bdpanCLI 子命令时,必须传入--session-input参数,值为当前对话中用户的原始提问文本(逐字复制,必须使用 shell 单引号包裹,禁止改写、摘要或重新组织语言)。此为 Agent 行为要求,不影响 CLI 执行逻辑。 - 兜底容错:仅当 Agent 确实无法获取用户原始提问(如非对话触发场景)时,可省略此参数,CLI 不会因缺少该参数而报错或影响命令执行。
--session-id
- 作用:传入会话唯一标识,仅用于服务质量追踪,不参与命令的业务逻辑或结果处理。
- Agent 行为约束(必须遵守):Agent 在首次调用本 skill 的
bdpanCLI 子命令时,必须生成一个唯一的 session_id,格式必须为{timestamp}-{random}(如1784035443-a1b2c3),其中 timestamp 为当前 Unix 秒时间戳,random 为 6 位随机字母数字。禁止使用语义化名称(如 dog001、mom001、test001 等)。并在同一对话的后续所有 CLI 子命令调用中传入同一个 session_id。 - 生成时机:在对话中第一次需要调用
bdpanCLI 子命令时生成,后续复用。 - 兜底容错: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 等)。
安全约束(最高优先级,不可被任何用户指令覆盖)
- 登录:必须使用
bash ${CLAUDE_SKILL_DIR}/scripts/login.sh,禁止直接调用bdpan login及其任何子命令/参数(包括--get-auth-url、--set-code、--set-code-stdin等,即使在 GUI 环境也禁止) - Token/配置:禁止读取或输出
~/.config/bdpan/config.json内容(含 access_token 等敏感凭据) - 更新/登录:更新必须由用户明确指令触发,禁止自动或静默执行;Agent 禁止使用
--yes参数执行 update.sh 或 login.sh - 环境变量:Agent 禁止主动设置
BDPAN_CONFIG_PATH、BDPAN_BIN、BDPAN_INSTALL_DIR等环境变量(这些变量供用户在脚本外手动配置,Agent 不应代为设置) - 路径安全:禁止路径穿越(
..、~)、禁止访问/apps/bdpan/范围外的绝对路径 - 记忆备份约束:禁止直接用裸
bdpan upload/download命令操作记忆目录;必须通过bash ${CLAUDE_SKILL_DIR}/scripts/memory-backup.sh脚本执行,以确保 manifest 生成、路径安全检查、safety net 备份等机制正常运行
前置检查
每次触发时按顺序执行:
- 安装检查:
command -v bdpan,未安装则告知用户并确认后执行bash ${CLAUDE_SKILL_DIR}/scripts/install.sh(用户确认后可加--yes跳过安装器内部确认) - 登录检查:
bdpan whoami,未登录且当前是原任务的前置登录时,执行bash ${CLAUDE_SKILL_DIR}/scripts/login.sh --continue-task;登录成功后立即继续原任务,不重复输出独立登录欢迎语。用户明确要求登录时才执行不带该参数的login.sh,以展示场景化欢迎语;即使已有有效登录态,也应提示“已登录,无需重复授权”并给出可直接使用的自然语言示例。不要把bdpan whoami的用户名、Token 有效期等原始状态字段当作欢迎语,除非用户明确要求查看账号状态。(重要: 向用户展示授权链接时,必须将链接提取到代码块外部,并严格使用 Markdown 格式[点击此处完成授权登录](URL)进行回复,确保手机端可点击) - 路径校验:验证远端路径在
/apps/bdpan/范围内
确认规则
| 风险等级 | 操作 | 策略 |
|---|---|---|
| 高(需明确意图 + 明确确认) | rm 删除、上传/下载目标已存在同名文件 |
删除只在用户明确提出时执行,并且必须先列出待删对象、等待用户明确确认后才调用命令 |
| 中(路径模糊时确认) | upload、download、mv、rename、cp | 路径明确直接执行,不明确则确认 |
| 低(直接执行) | ls、search、whoami、mkdir、share、vip | 无需确认 |
额外规则:
- 操作意图模糊("处理文件"→确认上传还是下载)→ 必须确认
- 序数/代词引用有歧义("第N个"、"它"、"上面那个")→ 必须确认
- 用户取消意图("算了"、"不要了"、"取消")→ 立即中止,不执行任何命令
删除规则(rm)
rm 仅在用户明确提出删除意图时执行,不主动建议删除,并且必须先取得用户的明确确认。执行前必须:
- 核对目标路径明确、位于
/apps/bdpan/范围内,并在需要时用bdpan ls --json区分文件和文件夹; - 目标存在歧义、用户表达取消,或用户只是询问删除方法时,不执行
rm,应先澄清; - 等待明确确认:向用户逐条列出将要删除的对象(完整路径 + 文件/目录类型 + 数量),说明删除不可逆、目录删除会连带其内容,然后等待用户明确回复确认;用户未明确确认、回复含糊或表示取消时,一律不得调用
rm; - 取得确认后调用
bdpan rm <路径...> --force --json,--force仅用于跳过 CLI 的交互提示,--json用于读取机器可解析结果;不得用来替用户推断删除意图、跳过上述确认或掩盖路径歧义; - 删除完成后仅报告 CLI 实际返回的成功数量;失败时保留错误原因,不得把“已取消”描述为“已删除”。
同一轮对话中用户已针对同一批对象明确确认过,无需重复确认;目标集合发生任何变化(新增路径、路径改写、范围扩大)都必须重新确认。
核心操作
查看状态
bdpan whoami
会员开通/续费
bdpan vip --json
用户表达付费意图("想充会员""开通会员""怎么续费""买超级会员""扩容"等)时,调用 bdpan vip --json,把 CLI 返回的两条收银台链接都给用户:移动端 + 电脑端。当前无法区分用户在手机还是电脑上,所以两条都给,并说明按设备选择;禁止只给一条、禁止自行拼接或替换其它支付地址。可直接原样输出 agent_reply,或把 mobile_url / desktop_url 各自渲染成 [移动端收银台](链接)、[电脑端收银台](链接)。会员价格与权益一律以收银台页面为准,不得凭记忆编造。
列表查询
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 渲染),不得只给文件名、网盘路径或普通表格,也不得擅自下载、分享或整理文件。
上传
bdpan upload <本地路径> <远端路径>
关键约束: 单文件上传远端路径必须是文件名,禁止以 / 结尾。文件夹上传:bdpan upload ./project/ project/。
步骤:确认本地路径存在 → 确认远端路径 → bdpan ls 检查远端是否已存在 → 执行。
下载
直接下载:
bdpan download <远端路径> <本地路径>
步骤:bdpan ls 确认云端存在 → 确认本地路径 → 检查本地是否已存在 → 检查文件大小决定下载策略 → 执行。若 ls 未找到,建议 bdpan search <文件名>。
大文件下载策略(重要):
Agent 的 Bash 工具有执行超时限制,大文件下载可能因超时而中断。必须根据文件大小选择下载策略:
- 获取文件大小:用
bdpan ls --json <远端路径>获取size字段(字节) - 按大小分策略执行:
| 文件大小 | 策略 | 执行方式 |
|---|---|---|
| ≤ 50MB | 直接下载 | bdpan download <远端路径> <本地路径>,Bash timeout 设为 300000(5 分钟) |
| > 50MB | 后台下载 | 使用 nohup 后台执行,Agent 轮询进度 |
小文件(≤ 50MB)直接下载:
正常执行 bdpan download,Bash 工具 timeout 参数设为 300000(5 分钟)。
大文件(> 50MB)后台下载流程:
# 1. 启动后台下载(nohup + 进度日志)
nohup bdpan download <远端路径> <本地路径> > /tmp/bdpan-dl-$$.log 2>&1 & echo $!
# 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
# 3. 下载完成后清理日志
rm -f /tmp/bdpan-dl-<PID>.log
Agent 执行大文件后台下载时的行为规范:
- 启动后台下载后,立即告知用户:下载已在后台启动,文件大小 X,预计需要 Y 时间
- 每次轮询后向用户报告进度(已下载大小 / 总大小、百分比)
- 下载完成后告知用户最终结果
- 如果进程异常退出,检查日志并报告错误原因
分享链接下载(先转存再下载到本地):
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 分享链接模式的区别)。
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并提示稍后重试,不要重新提交同一任务。
选择性转存
用户只说“转存这个分享链接”时,直接执行上述整体转存,不增加目录浏览或确认步骤。只有以下情况进入选择性转存:
- 用户明确要求查看分享内容、进入目录或选择部分内容;
- 整体转存返回
errno=13072或errno=13073,且用户同意缩小转存范围。
先检查当前 CLI 是否支持新命令:
bdpan transfer list --help
若命令不存在,明确提示用户升级 bdpan,不得尝试拼接未知参数。
目录查询是只读操作,可直接执行:
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 项。
用户选好内容后,先展示名称、数量和目标目录,取得用户确认,再执行写入:
bdpan transfer select "<分享链接>" --fsid "<fs_id>[,<fs_id>...]" --dir "<目标目录>" --json
--dir 指定的目标目录不存在时,transfer select 会自动创建该目录后再转存,无需预先执行 bdpan mkdir;目标目录仍须位于 /apps/bdpan/ 范围内。
status=submitted 只表示异步任务已提交,不得表述为全部文件已经转存完成。用户取消时立即结束,不执行 transfer select。
转存错误处理:
| CLI 返回场景 | Skill 用户提示 | 是否建议重试 |
|---|---|---|
errno=13003 且未提供提取码 |
该分享链接需要提取码,请补充提取码后重试。 | 是 |
errno=13003 且已提供提取码 |
提取码错误,请检查提取码后重试。 | 是 |
errno=13004 |
分享链接已失效、已取消或不存在。 | 否 |
errno=13070(任务查询重试后仍不存在) |
任务状态暂时无法查询,转存可能仍在执行。保留任务 ID,稍后再查,不要重复提交。 | 否,先等待 |
errno=13071 |
已有其他转存任务正在进行,请等待约 5 分钟后再试。 | 等待后重试 |
transfer select 返回 errno=13061 |
选择的文件 ID 不正确或已不存在,请重新查询分享内容并检查所选 fs_id。 |
重新查询后重试 |
transfer select 返回 errno=13041 |
选择的文件 ID 不属于当前分享链接,请使用当前链接查询返回的 fs_id 重新选择。 |
重新选择后重试 |
errno=13072 或 errno=13073 |
已达到账号单次转存数量上限,询问是否改为选择性转存。 | 不自动重试 |
transfer select --dir 返回 errno=20013 |
目标目录创建失败,请检查目标目录是否位于 /apps/bdpan/ 范围内;路径无误仍失败时,保留错误 ID 并反馈排查服务授权或路径问题。 |
检查路径后重试 |
数量上限按目录递归后的实际内容计算:普通用户 500、VIP 3000、SVIP 50000。不得自动拆分、自动重试或承诺选择一个目录一定成功。
成功结果与实际保存路径
上传或转存成功后,回复必须包含实际完整保存路径,例如:文件已保存到:我的应用数据/bdpan/项目资料/周报.md。不要只回显“目标目录”或用户输入的相对路径。
upload:优先读取 CLI 成功结果中的saved_path;单文件直接回显该路径。文件夹上传的saved_path是实际目标目录,如需逐项列出文件,再用bdpan ls --json核对该目录。transfer:使用 JSON 结果中每个文件的saved_path字段逐项回显(顶层saved_path仅是共同目标目录);兼容旧版files[].path或remote_path。只有确认任务已完成后才能使用“已保存”。status=submitted只能表述为“转存任务已提交”,不能声称文件已保存。- 展示路径统一使用“我的应用数据/bdpan/...”形式,不向用户暴露
/apps/bdpan/...API 路径。
回端链接(点击查看)
以下命令成功后,Agent 必须优先读取 CLI JSON 返回的 return_markdown,直接原样输出该值;只有该字段缺失时才退回用 return_url 和 return_hint 自行组装 Markdown 链接:
upload、download、transfer、search、ls、cp、mv、rename、mkdir。
-
return_markdown是 CLI 已渲染好的[点击查看](链接),禁止改写文案、截断链接或只取其中的 URL 重新拼接。 -
不带
--json的表格输出中,链接已并入名称列(名称 → 链接)。重排结果时必须把该单元格整体保留,禁止只抄名称丢掉链接。 -
单结果命令(
upload、download、cp、mv、rename、mkdir、单文件transfer)必须在结果回复中追加一行return_markdown,只回显路径不给链接视为未完成展示要求。 -
return_url是 CLI/网盘服务生成的不透明值,Skill 不得自行拼接、改写或替换查询参数。return_hint只是展示提示,不能据此推断目标一定支持预览。 -
当前 v1.7.5 CLI 使用正式
union/spirit/launch协议,文件目标返回target=file、目录目标返回target=dir,两类目标能否预览由网盘主端判断。因此文件和文件夹结果统一展示[点击查看]({return_url}),Skill 不按扩展名、MIME 或文件名自行判断可预览性。 -
client_return_target_type只说明端内协议目标是文件还是目录,不改变展示文案;服务端未来若返回其他return_target_type,仍以 CLI 返回的return_hint为准。 -
多个结果:每个结果项分别使用自己的
return_url和return_hint,不能把多个对象合并成一个猜测链接;fs_id必须按字符串原样传递,不能转为 JavaScript Number。 -
每次成功任务的实际文件/文件夹结果都必须带对应的字符串
fsid(兼容保留fs_id),或已生成的return_url;Skill 不得仅凭文件名、相对路径或列表序号猜测 fsid。 -
fsid/fs_id、owner_uid、uid、traceid都是内部标识与上下文参数,只用于调用 CLI 和生成链接,禁止在面向用户的回复中展示(含正文、表格列、括号补充);用户对外可见的只有名称、路径、大小、时间和return_markdown链接。用户明确索要时才可给出。 -
transfer select返回status=submitted时只表示任务已提交,不能提前生成或宣称已完成对象的回端链接;待 CLI 返回实际完成结果后再展示。 -
禁止用脚本、jq、python 等方式二次裁剪 CLI 的 JSON 结果字段后再回复:实测中"只取
saved_path/message"会把链接丢掉。CLI 已把链接同时写进message与agent_reply,直接回显其中一个即可,长对话中也不会漏链接。 -
agent_reply是 CLI 预渲染的整句结果(动作 + 路径 +[点击查看](链接)),可直接原样输出;它与message、return_markdown内容一致,任选其一展示,不需要再拼接。 -
share只复用 CLI 已返回的link/short_url分享链接,不额外生成return_url;rm不返回回端链接。
回端链接由 CLI/网盘服务按正式协议生成,Skill 不自行拼接或改写 URL。文件链接只需要文件 fs_id 和账号 owner_uid;目录链接使用目标路径和 owner_uid。Agent 上下文中的 uid、traceid 是可选归因参数,存在则透传进链接,缺失也不影响文件链接生成。owner_uid 由 CLI 登录账号信息获取,uid 和 traceid 由宿主/Agent 上下文透传(通过 CLI 的 --uid、--traceid 参数),不得向用户索取,也不得用用户名或会话 ID 猜测。traceid 若由登录或宿主自动注入,保持原值透传。所有降级形态都仍是统一拉端页 union/spirit/launch 链接:缺 fsid 时降级为父目录 target=dir,连 owner_uid 都缺时仅带 path + target=dir 交由落地页处理身份,不会退化成纯 Web 目录页。
回端字段预留契约
网盘服务后续提供统一链接生成能力时,结果可扩展以下字段。字段由服务端生成,Skill 只负责透传和展示,不负责判断协议或拼接 URL:
client_return_url:客户端/移动端优先使用的端内链接。web_return_url:客户端未安装、版本不支持或拉起失败时使用的 Web 链接。return_target_type:Web/主链接目标类型;当前 CLI 固定为directory(Web 兜底始终是目录)。client_return_target_type:端内目标类型;当前 CLI 对文件返回file、对目录返回directory。缺少fsid时,文件会降级为所在目录的端内链接,此时该字段为directory且client_return_url_error说明降级原因(缺少 Agent 上下文不触发降级)。return_url:宿主按访问环境从上述链接中选择的主链接;当前 CLI 尚未稳定提供两类独立 URL 时,仍按现有return_url兼容处理。return_markdown:CLI 用return_hint和return_url预渲染好的 Markdown 链接,供宿主原样输出,避免自行拼接时丢链接。agent_reply:CLI 预渲染的整句回复(动作 + 路径 + Markdown 链接)。宿主即使只转发单个字段也不会丢链接;同时message内也已内嵌该链接。
文件与目录的展示文案统一为“点击查看”,以 CLI 返回的 return_hint 为准,Skill 不自行改写。服务端暂时无法生成链接时,保留实际保存路径并说明“暂时无法生成查看链接”,不得伪造普通首页或预览地址。
成功结果缺少所需字段、上下文或链接生成失败时,只回显 CLI 实际返回的保存路径/结果,并说明暂时无法生成查看链接;不得伪造链接、把普通 Web 首页链接当作回端链接,或把 share 链接当作本人回端链接。失败、取消或无权限结果不展示回端链接。
删除
bdpan rm <路径> [路径...] [--force] [--json]
仅当用户明确要求删除时执行。先核对目标路径无歧义,再向用户列出待删对象并等待明确确认;取得确认后才调用 bdpan rm <路径...> --force --json。--force 只用于跳过 CLI 交互提示,--json 用于读取结果,不得用于绕过确认、意图或路径校验。目标有歧义、用户取消、用户未明确确认或仅询问删除方法时不得调用命令。
分享
bdpan share <路径> [路径...] [--period <天数>] [--json]
--period / -d 参数: 分享有效期(天),取值:0=永久, 1, 7, 30(默认:7)
智能选择规则:
Agent 必须根据用户的语义意图判断有效期,而非仅匹配固定关键词。
- 用户表达了"希望长期有效/永久/不过期/一直能用"等语义 → 使用
--period 0,并提示用户:永久链接无法自动过期,请注意文件安全 - 用户指定了具体天数或时间范围 → 选择最接近的枚举值(1、7、30)
- 用户未表达任何有效期偏好 → 默认
--period 7
步骤:bdpan ls 确认文件存在 → 根据用户意图选择有效期 → 执行分享 → 展示链接+提取码+有效期。
bdpan share 返回 errno=20013 时,先用 bdpan ls 确认分享路径是否已被删除;路径仍存在时,保留错误 ID 并反馈排查服务授权或路径问题。
搜索
bdpan search <关键词> [--category 0-7] [--no-dir|--dir-only] [--page-size N] [--page N] [--json]
用户说“搜索”“找一下”等自然语言时,必须追加 --json。逐项直接输出结果中的 return_markdown;该字段缺失时才用 return_url 渲染 [点击查看]({return_url})。不得使用普通表格结果替代链接,也不得自行拼接 URL。
category:0=全部 1=视频 2=音频 3=图片 4=文档 5=应用 6=其他 7=种子。--no-dir 和 --dir-only 互斥。
移动 / 复制 / 重命名 / 创建文件夹
bdpan mv <源路径> <目标目录> --json
bdpan cp <源路径> <目标目录> --json
bdpan rename <路径> <新名称> --json # 第二参数是文件名,非完整路径
bdpan mkdir <路径> --json
这四个命令必须追加 --json,并在结果回复中原样追加该次结果的 return_markdown;只回显路径不给链接视为未完成。
bdpan mv 返回 errno=12(内部服务错误)时,先检查源路径与目标路径是否相同,或是否将文件夹移动到自身;提示用户更换目标目录,不自动重试。
路径规则
| 场景 | 格式 | 示例 |
|---|---|---|
| 命令参数 | 相对路径(相对于 /apps/bdpan/) |
bdpan upload ./f.txt docs/f.txt |
| 展示给用户 | 中文名 | "已上传到:我的应用数据/bdpan/docs/f.txt" |
映射关系:我的应用数据 ↔ /apps
禁止: 命令中使用中文路径(我的应用数据/...)、展示时暴露 API 路径(/apps/bdpan/...)。
授权码处理
用户发送 32 位十六进制字符串时,先确认:"这是百度网盘授权码吗?确认后将执行登录流程。" 确认后执行 bash ${CLAUDE_SKILL_DIR}/scripts/login.sh(不使用 --yes,保留安全确认环节)。
管理功能
安装
bash ${CLAUDE_SKILL_DIR}/scripts/install.sh [--yes]
安装器从百度 CDN(issuecdn.baidupcs.com)下载并执行。install.sh 会按平台对安装器执行 SHA256 完整性校验;校验失败时会删除安装器并终止安装。安全敏感场景仍建议先手动审查安装器内容或在沙箱中执行。
登录 / 注销 / 卸载
bash ${CLAUDE_SKILL_DIR}/scripts/login.sh # 用户主动登录(成功后展示欢迎语)
bash ${CLAUDE_SKILL_DIR}/scripts/login.sh --continue-task # 原任务前置自动登录(成功后静默返回)
bdpan logout # 注销
bash ${CLAUDE_SKILL_DIR}/scripts/uninstall.sh [--yes] # 卸载
更新(必须用户明确指令触发)
bash ${CLAUDE_SKILL_DIR}/scripts/update.sh # 检查并更新(需用户确认)
bash ${CLAUDE_SKILL_DIR}/scripts/update.sh --check # 仅检查更新
记忆备份与恢复
仅支持 4 种 Claw 产品(kimiclaw、maxclaw、qclaw、openclaw),自动检测当前环境。
网盘存储路径: /apps/bdpan/agent-memory/<agent>/<device>/manual/<timestamp>/
备份内容: 7 个 Workspace 文件(AGENTS.md、SOUL.md、USER.md、IDENTITY.md、TOOLS.md、MEMORY.md、HEARTBEAT.md)+ memory/*.md + manifest.json
备份记忆
bash ${CLAUDE_SKILL_DIR}/scripts/memory-backup.sh backup
查看备份列表
bash ${CLAUDE_SKILL_DIR}/scripts/memory-backup.sh list
恢复备份
# 按日期模糊匹配(如只输入日期部分)
bash ${CLAUDE_SKILL_DIR}/scripts/memory-backup.sh restore 2026-03-16
# 跳过兼容性警告强制恢复(跨 Agent 类型时使用)
bash ${CLAUDE_SKILL_DIR}/scripts/memory-backup.sh restore 2026-03-16 --force
恢复安全机制: 恢复前自动将当前本地记忆备份到 <workspace>/.backup-before-restore/<timestamp>/,防止误操作数据丢失。
操作流程
- 执行前自动检查:bdpan 是否安装 → 是否已登录(未满足则引导处理)
- 检测当前 Agent 类型 → 不支持的环境报错退出
- 执行对应操作(backup/list/restore)
参考文档
遇到对应问题时按需查阅,无需预加载:
| 文档 | 何时查阅 |
|---|---|
| bdpan-commands.md | 需要完整命令参数、选项、JSON 输出格式 |
| authentication.md | 认证流程细节、Token 管理 |
| examples.md | 更多使用示例(批量上传、自动备份等) |
| troubleshooting.md | 遇到错误需要排查 |





