首次安装使用时,需要先完成本地安装和注册,详见 references/auth.md。
> Windows 用户:所有 bash ./setup.sh 命令请替换为 powershell -ExecutionPolicy Bypass -File setup.ps1,详见 references/auth.md。
每天使用本 SKILL 前进行一次更新检查,按照如下步骤执行:
读取本文件顶部 frontmatter 中的 version 字段;格式为 MAJOR.MINOR.PATCH。
通过命令获取最新版本信息 latest,输入参数 version 为上一步获取的当前版本:
mcporter call "https://www.weiyun.com/api/v3/mcpserver" "check_skill_update" --args '{"version": "当前版本"}'
> Windows (PowerShell) 用户注意:需先切换 UTF-8 编码,单引号内的 JSON 需改为转义双引号:
> ```powershell
> chcp 65001 >nul && mcporter call "https://www.weiyun.com/api/v3/mcpserver" "check_skill_update" --args "{"version": "当前版本"}"
> ```
JSON 格式数据返回,返回参数示例:
| 字段 | 类型 | 说明 |
|---|---|---|
| ------ | ------ | ------ |
latest | string | 最新版本号,格式为 MAJOR.MINOR.PATCH |
release_note | string | 最新版本发布说明 |
instruction | string | 更新指令 |
如果当前版本 version 低于最新版本 latest,则遵循 instruction 指令进行更新,或提示用户更新。
提供微云(Weiyun)网盘通过 MCP 协议进行文件管理的完整能力,包含 12 个 MCP Tool:
| Tool 名称 | 功能 | 说明 |
|---|---|---|
| ----------- | ------ | ------ |
weiyun.list | 目录列表查询 | 按目录查看文件和子目录,支持分页和排序 |
weiyun.list_by_category | 按分类拉取文件列表 | 按文档、图片、视频等分类分页拉取文件,支持续拉 |
weiyun.download | 批量下载 | 批量获取文件的 HTTPS 下载链接 |
weiyun.delete | 批量删除 | 批量删除文件或目录,支持回收站或彻底删除 |
weiyun.upload | 文件上传 | 两阶段协议:预上传 + 分片上传,支持秒传 |
weiyun.gen_share_link | 生成分享外链 | 为文件或目录生成分享短链接,支持设置分享密码 |
weiyun.rename_file | 重命名文件 | 重命名微云网盘中的文件 |
weiyun.rename_dir | 重命名目录 | 重命名微云网盘中的目录 |
weiyun.create_dir | 创建文件夹 | 在微云网盘中创建文件夹 |
weiyun.move_dir | 移动文件夹 | 移动微云网盘中的文件夹到目标目录 |
weiyun.move_file | 移动文件 | 移动微云网盘中的文件到目标目录 |
check_skill_update | 技能版本检查更新 | 检查当前 Skill 版本是否为最新,获取更新指令 |
核心架构原则:文件哈希计算和 block_sha_list 生成必须在客户端/本地完成。服务端只接收预计算好的哈希值,不会接收原始文件数据来计算哈希。这种设计是为了防止海量请求打爆服务器的存储和 CPU。
scripts/upload_to_weiyun.py 一键完成,无需手动计算参数或调用 MCPweiyun.list_by_category Tool)weiyun.rename_file、weiyun.rename_dir Tool)weiyun.create_dir Tool)weiyun.move_file、weiyun.move_dir Tool)weiyun.upload Tool)block_sha_list、check_sha、check_data 等上传参数check_skill_update)注意 : 所有接口请求时都务必要在 req_header 字段中携带上报数据,详见下方「数据上报」章节
查询微云网盘的目录内容,返回子目录和文件列表。
请求参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| get_type | uint32 | 否 | 获取类型:0-所有,1-仅目录,2-仅文件 |
| offset | uint32 | 否 | 分页起始偏移量,从 0 开始 |
| limit | uint32 | 是 | 每页返回数量,最大 50 |
| order_by | uint32 | 否 | 排序字段:0-不排序,1-按名字,2-按修改时间 |
| asc | bool | 否 | true-升序,false-降序(默认) |
| dir_key | string | 否 | 要查询的目录 key(hex 编码),为空则使用 token 绑定的 dirkey |
| pdir_key | string | 否 | 要查询的父目录 key(hex 编码),为空则使用 token 绑定的 pdirkey |
| req_header | ReqHeader | 推荐 | 请求信息头,用于数据上报(含 qua 和 version) |
响应:返回 pdir_key(父目录 key)、dir_list(目录列表)、file_list(文件列表)、finish_flag(是否拉取完毕)。
注意:腾讯文档文件会被自动过滤,不出现在返回结果中。
按文件分类(文档、图片、视频等)分页拉取文件列表,支持通过 server_version 续拉。
请求参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| category_id | uint64 | 否 | 分类 ID(位运算值),有值时优先于 lib_id 和 suffix_list。例如:1-doc、2-excel、4-ppt、8-pdf、64-image、512-腾讯文档、4095-全部 |
| lib_id | int32 | 否 | 库 ID:1-文档,2-图片,3-音乐,4-视频,5-其他。category_id 有值时会忽略此字段 |
| local_version | string | 否 | 上次返回的 server_version,用于增量续拉;首次请求传空字符串 |
| group_id | int32 | 否 | 分组 ID。文档库:0-全部,1-doc,2-xls,3-ppt,4-pdf,50-腾讯文档 Doc,51-腾讯文档 Sheet,52-腾讯文档表单;图片/视频库可传相册分组 ID |
| suffix_list | string[] | 否 | 指定后缀列表,仅文档库和其他库有效,例如 ["docx", "xlsx"] |
| count | int32 | 是 | 本次拉取数量,最大 100 |
| sort_type | int32 | 否 | 排序类型:0-创建时间,1-修改时间,2-名称,3-拍摄时间,4-大小 |
| is_desc_order | bool | 否 | 是否降序排列:true-降序(默认),false-升序 |
响应:返回 server_version(服务端游标,续拉时回填到 local_version)、file_list(文件列表)、finish_flag(是否拉取完成)。
注意:该接口要求同时携带真实微云 cookie(如 uid、uid_key)和 mcp_token。
批量获取微云文件的 HTTPS 下载链接。
注意事项:
本功能无法下载微云分享的链接里面的文件,只能下载用户微云网盘中的文件。
请求参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| items | McpDownloadFileItem[] | 是 | 需要下载的文件列表 |
每个 McpDownloadFileItem 包含 file_id(文件 ID)和 pdir_key(所在目录 key),均为必填。
响应:每个文件返回 file_id、https_download_url(下载链接)、file_size(文件大小)、cookie(下载时需携带的 cookie)。
权限校验:只能下载当前用户拥有的文件(通过 pdir_key 判断目录所有权)。
批量删除微云网盘中的文件或目录。
请求参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| file_list | McpDeleteFileItem[] | 否 | 待删除的文件列表(file_id + pdir_key) |
| dir_list | McpDeleteDirItem[] | 否 | 待删除的目录列表(dir_key + pdir_key + dir_name) |
| delete_completely | bool | 否 | false-移到回收站(默认),true-彻底删除 |
McpDeleteFileItem 字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| file_id | string | 是 | 文件唯一标识符 |
| pdir_key | string | 是 | 文件所在目录 key |
McpDeleteDirItem 字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| dir_key | string | 是 | 目录 key(hex 编码) |
| pdir_key | string | 是 | 父目录 key(hex 编码) |
| dir_name | string | 是 | 目录名称(后端必填,缺失会导致 1192 参数错误,目录名无效) |
注意:file_list 和 dir_list 至少要填一个。
⚠️ 删除是危险操作,AI Agent 必须遵守以下规则:
weiyun.delete 调用都必须先取得用户的明确确认(哪怕只是删除单个文件),禁止仅凭模糊指令(如"清理一下"、"整理目录")就直接调用。delete_completely=true 是不可恢复的彻底删除:在调用前必须用一句独立的提示向用户说明"该操作不可恢复,将绕过回收站",并取得用户对该次具体调用的二次确认。建议默认使用 delete_completely=false 走回收站。file_id / dir_key 解析错误而误删非目标项。⚠️ 删除目录时 dir_name 必填:
dir_name 可通过 weiyun.list 获取目录信息时得到,删除目录时必须传入,否则后端返回 1192 参数错误。dir_name。响应:返回 freed_space(释放的空间字节数)和 freed_index_cnt(删除的文件/目录总数)。
为微云文件或目录生成分享短链接。
请求参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ---------------------------------------------- |
| file_list | McpShareFileItem[] | 否 | 待分享的文件列表(file_id + pdir_key) |
| dir_list | McpShareDirItem[] | 否 | 待分享的目录列表(dir_key + pdir_key) |
| share_name | string | 否 | 分享名称,不填则使用第一个文件或目录名 |
| passwd | string | 否 | 分享密码,不填则创建无密码分享,长度一定是 6 个字符。支持随机密码,也支持用户指定密码 |
注意:
file_list 和 dir_list 至少要填一个。
随机分享密码生成规则:长度6,全小写字母+数字混合,不包含特殊字符
分享外链无法使用本 skill 进行下载,需要提示用户打开网页进行下载
⚠️ 分享外链是隐私扩散操作,AI Agent 必须遵守以下规则:
weiyun.download 取得本地副本。passwd:未设置密码意味着任何拿到短链的人都能访问。除非用户明确表示"不要密码",否则应使用随机密码并在结果中告知用户密码值。⚠️ 关键:pdir_key 不能为空!
pdir_key 必须使用 weiyun.list 响应中顶层的 pdir_key,而不是文件自身的 pdir_key 字段(该字段可能为空字符串)pdir_key,可能导致分享链接异常,强烈建议调用方显式传入正确的 pdir_keyfile_list[i].pdir_key(可能为空)weiyun.list 响应顶层的 pdir_key 字段值响应:返回 short_url(分享短链接)和 share_name(分享名称)。
微云文件上传采用两阶段协议:
发送文件元数据和分块 SHA1 列表,检查是否可以秒传,或获取上传通道。
必填字段:filename、file_size、file_sha、block_sha_list、check_sha
可选字段:file_md5、check_data、pdir_key
关键行为:file_sha 必须等于 block_sha_list 的最后一个值,否则校验会失败。
响应判断:
file_exist=true → 秒传成功,上传完毕file_exist=false → 使用返回的 upload_key、channel_list、ex 进行分片上传⚠️ 重试策略:
retcode=50000, msg=服务繁忙(瞬时不可用),这不是 MCP 工具自身缺陷。50000 错误时,等待 2~5 秒后重试,最多重试 3 次。upload_to_weiyun.py 已内置重试逻辑,优先使用脚本上传。根据预上传返回的通道列表,逐片上传文件数据。
必填字段:upload_key、channel_list、channel_id、ex、file_data、filename
上传状态:
1 = 继续上传下一分片2 = 上传完成3 = 等待其他通道完成重命名微云网盘中的文件,需要提供文件所在目录 key 和文件 ID。
请求参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| file_id | string | 是 | 文件唯一标识符 |
| pdir_key | string | 是 | 文件所在目录 key(hex 编码) |
| new_filename | string | 是 | 修改后的文件名 |
响应:返回 error(错误信息,成功时为空)。
重命名微云网盘中的目录,需要提供目录 key、父目录 key 和修改前的目录名。
请求参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| dir_key | string | 是 | 目录 key(hex 编码) |
| pdir_key | string | 是 | 父目录 key(hex 编码) |
| new_dir_name | string | 是 | 修改后的目录名 |
| src_dir_name | string | 是 | 修改前的目录名 |
响应:返回 error(错误信息,成功时为空)。
在微云网盘中创建文件夹,需要提供父目录 key 和文件夹名称。
请求参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| pdir_key | string | 否 | 父目录 key(hex 编码),在此目录下创建新文件夹。为空则使用 token 绑定的目录 |
| dir_name | string | 是 | 新文件夹名称 |
响应:
| 字段 | 类型 | 说明 |
|---|---|---|
| ------ | ------ | ------ |
| dir_key | string | 新创建的目录 key(hex 编码) |
| dir_name | string | 创建后的目录名(可能被自动改名,如存在同名目录) |
| error | string | 错误信息,成功时为空 |
移动微云网盘中的文件夹到目标目录,需要提供源目录 key 和目标目录 key。
请求参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| dir_key | string | 是 | 待移动的目录 key(hex 编码) |
| src_pdir_key | string | 是 | 源父目录 key(hex 编码),即当前所在的目录 |
| dst_pdir_key | string | 是 | 目标父目录 key(hex 编码),即要移动到的目录 |
| dir_name | string | 否 | 目录名称,移动时可选填用于冲突处理 |
响应:返回 error(错误信息,成功时为空)。
⚠️ 关键:src_pdir_key 和 dst_pdir_key 都需要使用 weiyun.list 响应中顶层的 pdir_key 或对应目录的 dir_key,不能传空字符串。
移动微云网盘中的文件到目标目录,需要提供文件 ID、源目录 key 和目标目录 key。
请求参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| file_id | string | 是 | 待移动的文件唯一标识符 |
| src_pdir_key | string | 是 | 源父目录 key(hex 编码),即文件当前所在的目录 |
| dst_pdir_key | string | 是 | 目标父目录 key(hex 编码),即要移动到的目录 |
| filename | string | 否 | 文件名称,移动时可选填用于冲突处理 |
响应:返回 error(错误信息,成功时为空)。
⚠️ 关键:src_pdir_key 和 dst_pdir_key 都需要使用 weiyun.list 响应中顶层的 pdir_key 或对应目录的 dir_key,不能传空字符串。
检查当前 Skill 版本是否为最新,如有新版本则返回更新指令。
请求参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| version | string | 是 | 当前 Skill 版本号,格式 MAJOR.MINOR.PATCH |
响应:
| 字段 | 类型 | 说明 |
|---|---|---|
| ------ | ------ | ------ |
| latest | string | 最新版本号,格式 MAJOR.MINOR.PATCH |
| release_note | string | 最新版本发布说明 |
| instruction | string | 更新指令(需要更新时遵循此指令执行) |
注意:每天首次使用本 Skill 前必须执行一次版本检查(详见文档顶部「版本更新检查」章节)。
这是上传功能最核心的部分。微云不使用标准的独立分块 SHA1,而是使用流式 SHA1 内部状态。
update() 到 SHA1 对象sha 值sha 值为整个文件的标准 SHA1 hexdigest(大端序,含 finalization)用于服务端防篡改验证:
lastBlockSize = file_size % 524288(若为 0 则取 524288)
checkBlockSize = lastBlockSize % 128(若为 0 则取 128)
check_sha:处理完所有非最后块后,继续 update 最后块中前 (lastBlockSize - checkBlockSize) 字节,
然后取 SHA1 内部寄存器 h0-h4 小端序输出为 hex
check_data:文件末尾 checkBlockSize 字节的 Base64 编码
直接上传本地文件到微云,整合了参数计算 + 预上传 + 分片上传的完整流程:
# 基本用法
python3 scripts/upload_to_weiyun.py /path/to/file --token <mcp_token> --env_id <env_id>
# 指定上传目录
python3 scripts/upload_to_weiyun.py /path/to/file --token <mcp_token> --pdir_key <dir_key>
# 使用环境变量
export WEIYUN_MCP_TOKEN=<mcp_token>
export WEIYUN_ENV_ID=<env_id>
python3 scripts/upload_to_weiyun.py /path/to/file
> Windows (PowerShell) 用户:需先切换 UTF-8 编码,将 python3 替换为 python,export 替换为 $env:VAR = "value":
> ```powershell
> # 基本用法
> chcp 65001 >nul && python scripts\upload_to_weiyun.py C:\path\to\file --token
>
> # 使用环境变量
> $env:WEIYUN_MCP_TOKEN = "
> $env:WEIYUN_ENV_ID = "
> chcp 65001 >nul && python scripts\upload_to_weiyun.py C:\path\to\file
> ```
脚本参数:
| 参数 | 必填 | 说明 |
|---|---|---|
| ------ | ------ | ------ |
file_path | 是 | 本地文件路径(位置参数) |
--token | 是 | MCP token(或设 WEIYUN_MCP_TOKEN 环境变量) |
--env_id | 否 | 环境标识(如 sit-0cd15bb3,或设 WEIYUN_ENV_ID) |
--pdir_key | 否 | 上传目标目录 key(不填使用 token 绑定目录) |
--mcp_url | 否 | MCP 服务地址(默认 https://www.weiyun.com/api/v3/mcpserver) |
--max_rounds | 否 | 最大上传轮数(默认 50) |
上传策略:循环「预上传获取通道 → 上传一片 → 重新预上传」直到完成。每次预上传会自动跳过已成功的分片(offset 随进度递增),支持秒传。
AI Agent 使用时:只需要 execute_command 运行此脚本即可,无需手动计算 block_sha_list 或调用 MCP。
⚠️ 能力披露(execute_command 的影响范围):该脚本会读取本地文件、读取 WEIYUN_MCP_TOKEN / WEIYUN_MCP_URL / WEIYUN_ENV_ID 等环境变量,并向受信任的微云 MCP 端点发起 HTTPS 网络请求上传文件内容。AI Agent 在调用前应:
--token 明文写入会被持久化的脚本或 shell history(推荐用 WEIYUN_MCP_TOKEN 环境变量);--mcp_url 与 WEIYUN_MCP_URL 仅接受 https://.weiyun.com / .qq.com 的端点,脚本内置白名单校验;如确需指向 mock / 本地调试地址,须显式设置 WEIYUN_MCP_URL_ALLOW_INSECURE=1 才能放行。仅计算上传参数(不执行上传),用于调试或手动调用 MCP:
python3 scripts/gen_block_info_list.py /path/to/file
> Windows (PowerShell):chcp 65001 >nul && python scripts\gen_block_info_list.py C:\path\to\file
输出包括:block_sha_list、file_sha、file_md5、check_sha、check_data、block_size、block_count。
两个脚本均包含纯 Python 的 SHA1 实现,支持提取未经 finalization 的内部状态 — 这是 Python 标准库 hashlib.sha1 无法做到的。
MCP 接口在出现异常时会返回以下错误码,调用方可根据错误码进行相应处理:
| 错误码 | 名称 | 说明 |
|---|---|---|
| -------- | ------ | ------ |
| 1192 | 参数错误,目录名无效 | 删除目录时缺少 dir_name 字段,需通过 weiyun.list 获取后传入 |
| 50000 | 服务繁忙 | 服务端瞬时不可用,等待 2~5 秒后重试,最多重试 3 次 |
| 117401 | ERR_RATE_LIMIT | 每日调用配额已耗尽,请明天再试 |
| 117402 | ERR_MCP_TOKEN_INVALID | MCP token 无效或已过期,请重新生成 token |
| 117403 | ERR_MCP_PARAM_EMPTY | 请求必填参数为空(如删除接口 file_list 和 dir_list 都为空) |
| 117404 | ERR_MCP_PARAM_INVALID | 请求参数不合法(如 file_id 或 pdir_key 格式错误) |
| 117405 | ERR_MCP_PERMISSION_DENIED | 无权操作非本人目录的文件 |
| 117406 | ERR_MCP_BACKEND_FAIL | 后端服务调用失败,请稍后重试 |
| 117407 | ERR_MCP_TOKEN_DISABLED | MCP token 已被禁用(取消授权/手动拉黑/安全打击) |
处理建议:
dir_name 缺失导致,请先通过 weiyun.list 获取目录名再传入 weiyun.deleteupload_to_weiyun.py(已内置重试)当需要在微云中找到某个文件并下载到本地时,按以下步骤操作:
第一步:查询根目录
调用 weiyun.list,参数:limit=50, get_type=0
file_list 包含文件,dir_list 包含子目录pdir_key(后续下载需要用到)第二步:遍历子目录查找文件
调用 weiyun.list,参数:
dir_key = <子目录的 dir_key>(从 dir_list 中获取)
pdir_key = <子目录所在父目录的 pdir_key>(即上一次 list 响应顶层的 pdir_key,或子目录所在目录的 dir_key)
limit = 50
⚠️ 关键:查询子目录时 dir_key 和 pdir_key 的含义:
dir_key:要查询的目标子目录的 key(从 dir_list 中的 dir_key 字段获取)pdir_key:该子目录所在的父目录 key(从上一级 weiyun.list 响应顶层的 pdir_key 获取)如果还有嵌套子目录,递归重复此步骤。
第三步:获取下载链接
调用 weiyun.download,参数:
items = [{"file_id": "<文件的 file_id>", "pdir_key": "<文件所在目录的 pdir_key>"}]
file_id:从 file_list 中获取pdir_key:使用 weiyun.list 响应中顶层的 pdir_key(不是文件自身的 pdir_key 字段)第四步:下载文件到本地
curl -s -L -o <本地文件名> -b "<cookie>" "<https_download_url>"
> Windows (PowerShell):
> ```powershell
> $session = New-Object Microsoft.PowerShell.Commands.WebRequestSession
> $session.Cookies.Add((New-Object System.Net.Cookie("FTN5K", "
> Invoke-WebRequest -Uri "
> ```
-L:跟随重定向(必须)-b:携带 cookie(从 download 响应中获取,格式如 FTN5K=08bfd4be)file_size 一致推荐方式(一键脚本):
# 1. 先查根目录获取 pdir_key
# 调用 weiyun.list limit=50 → 记住响应中的 pdir_key
# 2. 上传
python3 scripts/upload_to_weiyun.py /path/to/file --pdir_key <pdir_key>
> Windows (PowerShell):chcp 65001 >nul && python scripts\upload_to_weiyun.py C:\path\to\file --pdir_key
手动方式:参见上方「5. weiyun.upload — 文件上传」章节。
# 1. 先查目录获取文件信息和 pdir_key
调用 weiyun.list → 找到目标文件的 file_id,记住响应**顶层** pdir_key
# 2. 生成分享链接(pdir_key 必须非空!)
调用 weiyun.gen_share_link,参数:
file_list = [{"file_id": "<file_id>", "pdir_key": "<响应顶层的 pdir_key>"}]
share_name = "<文件名>"
⚠️ 关键:pdir_key 必须使用 weiyun.list 响应中顶层的 pdir_key,绝对不能传空字符串!文件项中的 pdir_key 字段可能为空,不可使用。
# 1. 先查目录获取文件信息
调用 weiyun.list → 找到目标文件的 file_id 或目录的 dir_key 和 dir_name,记住响应顶层 pdir_key
# 2a. 删除文件
调用 weiyun.delete,参数:
file_list = [{"file_id": "<file_id>", "pdir_key": "<pdir_key>"}]
delete_completely = false (移到回收站,更安全)
# 2b. 删除目录(dir_name 必填)
调用 weiyun.delete,参数:
dir_list = [{"dir_key": "<dir_key>", "pdir_key": "<pdir_key>", "dir_name": "<目录名>"}]
delete_completely = false
注意:删除目录时 dir_name 必填,可通过 weiyun.list 返回的 dir_list[].dir_name 获取。
# 1. 先查目录获取文件/目录信息
调用 weiyun.list → 找到目标文件的 file_id 或目录的 dir_key,记住响应顶层 pdir_key
# 2a. 重命名文件
调用 weiyun.rename_file,参数:
file_id = "<file_id>"
pdir_key = "<响应顶层的 pdir_key>"
new_filename = "<新文件名>"
# 2b. 重命名目录
调用 weiyun.rename_dir,参数:
dir_key = "<dir_key>"
pdir_key = "<响应顶层的 pdir_key>"
new_dir_name = "<新目录名>"
src_dir_name = "<原目录名>"
# 查找所有 PDF 文件
调用 weiyun.list_by_category,参数:
category_id = 8 (8 = PDF)
count = 50
# 续拉更多结果
调用 weiyun.list_by_category,参数:
category_id = 8
count = 50
local_version = "<上次响应的 server_version>"
# 按后缀查找
调用 weiyun.list_by_category,参数:
lib_id = 1 (1 = 文档库)
suffix_list = ["docx", "xlsx"]
count = 50
# 1. 先查目录获取 pdir_key(如果要在子目录下创建)
调用 weiyun.list → 记住响应顶层 pdir_key 或目标子目录的 dir_key
# 2. 创建文件夹
调用 weiyun.create_dir,参数:
pdir_key = "<目标父目录的 pdir_key>"(为空则在 token 绑定的根目录下创建)
dir_name = "<新文件夹名称>"
响应:返回新创建目录的 dir_key 和 dir_name(可能因同名被自动改名)。
# 1. 先查源目录获取文件/目录信息
调用 weiyun.list,查询源目录 → 找到目标文件的 file_id 或目录的 dir_key,记住响应顶层 pdir_key 作为 src_pdir_key
# 2. 查目标目录获取 dst_pdir_key
调用 weiyun.list,查询目标目录 → 记住响应顶层的 pdir_key 作为 dst_pdir_key
# 3a. 移动文件
调用 weiyun.move_file,参数:
file_id = "<file_id>"
src_pdir_key = "<源目录的 pdir_key>"
dst_pdir_key = "<目标目录的 pdir_key>"
# 3b. 移动目录
调用 weiyun.move_dir,参数:
dir_key = "<要移动的目录 dir_key>"
src_pdir_key = "<源父目录的 pdir_key>"
dst_pdir_key = "<目标父目录的 pdir_key>"
⚠️ 关键:src_pdir_key 和 dst_pdir_key 不能为空,必须通过 weiyun.list 获取正确的目录 key。
所有 MCP 工具需要通过 WyHeader HTTP 头传递 mcp_token:
WyHeader: mcp_token=<token>
ℹ️ 用户隐私披露:调用本 skill 的任何 MCP 接口时,请求体的 req_header 字段会向微云服务器附带以下遥测信息,便于官方做问题定位:
MAC_15.4.1、WINDOWS_10.0.19045);CODEBUDDY_4.8.1);1.0.8)。这些字段不包含文件内容、文件名或账户标识,但仍属于设备级遥测。AI Agent 在首次为用户调用本 skill 前,建议告知用户上述上报内容;如用户明确拒绝上报,可在调用 MCP 接口时省略 req_header 字段(接口仍可正常工作,仅会影响微云侧的故障排查能力)。
为了方便微云官方进行问题故障定位,MCP 客户端在调用每个接口时,应在请求体的 req_header 字段中携带上报数据。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
qua | string | 推荐 | 用户设备信息,格式:{平台}_{平台版本}_{渠道}_{渠道方版本},如 MAC_15.4.1_CODEBUDDY_4.8.1 |
version | string | 推荐 | skill 的版本号,如 1.0.4,取自本文件顶部 frontmatter 的 version 字段 |
QUA 是一个字符串,由设备信息拼接而成:
{平台}_{平台版本}_{渠道}_{渠道方版本}
MAC / WINDOWS / LINUX)15.4.1,Windows 10.0.19045)CODEBUDDY、WORKBUDDY)| 平台 | QUA 示例 |
|---|---|
| ------ | --------- |
| macOS | MAC_15.4.1_CODEBUDDY_4.8.1 |
| Windows | WINDOWS_10.0.19045_WORKBUDDY_4.8.1 |
| Linux | LINUX_6.1.0_CODEBUDDY_4.8.1 |
{
"limit": 50,
"req_header": {
"qua": "MAC_15.4.1_CODEBUDDY_4.8.1",
"version": "1.0.9"
}
}
python3 scripts/upload_to_weiyun.py <文件路径> --pdir_key <目录key>,无需手动计算参数或调用 MCPweiyun.list 响应中顶层的 pdir_key,而不是文件自身的 pdir_key 字段(该字段可能为空字符串)weiyun.list,使用响应顶层的 pdir_key(不是 file_list[i].pdir_key,该字段通常为空)。pdir_key 为空会导致分享链接打开异常weiyun.list 响应顶层的 pdir_keyweiyun.download 返回的下载链接需要用 curl -b "" 携带 cookie 值,同时 -L 跟随重定向--pdir_key 参数。先调用 weiyun.list 获取响应中顶层的 pdir_keyupload_to_weiyun.py 已自动处理此问题file_data 字段,服务端会再次进行 Base64 解码channel_id 必须与 channel_list 中某个条目匹配env_id=sit-xxxxxrequests 库,如提示缺少请先安装:pip install requestsweiyun.list 响应顶层的 pdir_key,而不是文件/目录条目自身的 pdir_key 字段chcp 65001 >nul && python ...。Python 脚本已内置 _encoding_fix.py 模块自动修复 stdout/stderr 编码,但 chcp 65001 仍然是必要的(确保 cmd/PowerShell 控制台本身使用 UTF-8 解码输出)python 而非 python3:Windows 系统通常使用 python 命令,macOS/Linux 使用 python3。请根据用户操作系统自动选择正确的命令weiyun.list 获取 file_id/dir_key、dir_name 和顶层 pdir_key,再调用 weiyun.rename_file 或 weiyun.rename_dir(重命名目录时需额外传 src_dir_name 即原目录名)weiyun.list_by_category,通过 category_id 或 lib_id 指定分类,支持 server_version 续拉。该接口需要同时携带真实微云 cookie 和 mcp_tokenweiyun.gen_share_link 时设置 passwd 参数即可创建加密分享weiyun.create_dir,传入 pdir_key(父目录 key)和 dir_name(文件夹名称)。pdir_key 为空时在 token 绑定的根目录下创建。返回的 dir_name 可能因同名冲突被自动改名weiyun.move_file 或 weiyun.move_dir。需要先通过 weiyun.list 分别获取源目录和目标目录的 pdir_key,填入 src_pdir_key 和 dst_pdir_key。两个 key 都不能为空src_pdir_key 来自文件/目录当前所在位置的 weiyun.list 响应顶层 pdir_key;dst_pdir_key 来自目标位置的 weiyun.list 响应顶层 pdir_key 或目标目录的 dir_keydir_name 是删除目录时的必填字段,需通过 weiyun.list 获取目录的 dir_name 后传入 weiyun.delete。删除文件不需要此字段upload_to_weiyun.py 一键上传脚本(已内置重试逻辑)共 4 个版本