返回技能市场
办公效率 安全

企业网盘智能工作空间

@aliyun/alibabacloud-pds-intelligent-workspace

企业网盘为 Agent 提供可挂载工作空间 i. 进行本地和云端的同步备份 ii. 将云端存储空间映射为本地驱动器,用户和Agent 能够像访问本地文件一样便捷地访问云端文件 iii. 可以上传、下载文件

云Skills门户 热度 105v0.0.7

PDS(云盘)

功能

  • 如需获取空间 / drive_id,或查询企业空间、团队空间、个人空间 → 阅读 references/drive.md
  • 如需上传本地文件或将文件下载到本地 → 请参阅下方“常用操作”(内嵌说明;常见场景无需阅读参考文档)。高级上传选项 → references/upload-file.md;高级下载 → references/download-file.md
  • 如需搜索或查找文件 → 阅读 references/search-file.md
  • 如需对云盘中的文档/音频/视频进行分析、快速查看、总结、精读和要点提取 → 阅读 references/multianalysis-file.md这是分析/总结内容的唯一正确方式 — 禁止为此下载文件并自行读取;请参阅下方“分析与下载”
  • 如需图像搜索、相似图像搜索、图文混合检索 → 阅读 references/visual-similar-search.md硬性规则(LOCAL 源图片 = 强制停止):如果用户提供的源图片是 LOCAL 文件(例如本地路径 ~/Downloads/cat.jpg 或本地附加的图片),禁止对其执行 upload-file,也禁止运行 similar-search。不得提出确认后再上传该图片,也不得追问。最后必须以以下终止语句结束:"源图片是本地文件,不能代为上传或执行 similar-search。请您自行上传到 PDS 后,再提供 cloud path 或 file_id。" 仅当用户所指的源图片已存在于 PDS 中时,才运行 similar-search。同名的 PDS 文件不能替代源图片;禁止搜索此类文件,也禁止捏造源 file_id
  • 如需图像编辑、图像处理 → 阅读 references/image-editing.md
  • > 硬性规则:图像编辑必须使用 aliyun pds image-process(一次 CLI 调用)。禁止下载图像后使用 PIL、Pillow、OpenCV 或任何其他 Python/库在本地处理。本地处理会绕过服务端色彩空间管理、EXIF 处理和修订版本跟踪,即使视觉结果看起来正确,也会被视为失败。

  • 如需打包下载、批量下载或将多个文件打包成 zip → 阅读 references/archive-download.md
  • 如需将仅名称 / 部分路径 / 相对路径解析为匹配度最高的文件或文件夹 → 请参阅下方常用操作中的“解析仅名称 / 部分路径或相对路径”(内嵌说明 — 对此类目标执行任何操作前都应先执行此步骤)。如需将完整的绝对云端路径(例如 /Photos/2026/04/file.jpg)解析为 file_id,或根据 file_id 反向查询完整路径 → 阅读 references/resolve-path.md
  • 如需通过绝对云端路径或文件 ID 获取文件/文件夹元数据 → 请参阅下方“获取文件信息”(内嵌说明;get-file --path 会在内部解析路径)
  • 如需列出目录内容(list-file)→ 请参阅下方“列出目录”(内嵌说明;常见场景无需阅读参考文档)
  • 如需文件管理 — 重命名、移动、复制、创建文件夹、添加/移除标签和备注,以及使用 list-file 高级选项(分页/排序)→ 阅读 references/file-management.md
  • 如需创建/列出/搜索/更新/取消分享链接,或按状态统计分享数量 → 阅读 references/share-link.md
  • 对于挂载应用(挂载盘 / PDS 挂载盘 / 企业云盘挂载盘,mountapp)——安装、升级、启动、启用、挂载、查询状态/配置、修改配置、停止或卸载,以便像本地磁盘(Windows/macOS/Linux)一样访问云盘 → 阅读 references/mountapp.md硬性规则:mountapp 需要 AK 身份认证——执行任何 mountapp 操作之前,必须确认已通过 references/config.md 中的 AK 分支初始化 PDS 配置;如果当前配置使用 API Key 身份认证,请停止并告知用户 mountapp 仅支持 AK 身份认证,且不得继续。停止/卸载属于高风险操作:运行前必须取得人工确认

常用操作(内嵌说明 — 无需阅读参考文档即可执行)

此处记录了使用频率最高的单一用途操作,因此常见场景无需额外阅读参考文档。仅在需要各项末尾注明的高级选项时,才查阅参考文件。

解析仅名称 / 部分路径或相对路径(对此类目标执行任何操作前先完成此步骤)

当用户使用仅名称saved-images)或部分路径 / 相对路径photo-edit/saved-images,且未确认其以 / 开头)指定目标时,使用 resolve-path --name,通过一次调用解析该目标。CLI 会递归搜索、对命中结果排序并返回最佳匹配项 — 因此,即使文件夹直接位于根目录下,也能成功解析,并且禁止使用 list-file 遍历文件夹:

aliyun pds resolve-path --drive-id <id> --name "saved-images" [--type folder|file]
# a partial / relative path works too (leading slash optional):
aliyun pds resolve-path --drive-id <id> --name "photo-edit/saved-images"
  • 唯一命中项{drive_id, file_id, path, file}(结构与 --path 相同)。使用该结果。结果已包含完整的云端 path(以 / 开头);当用户需要该路径时,直接写出返回的 path——不要仅持久化 file_id,也不要通过另一次调用重新推导该路径。
  • 无匹配结果 → 命令会报错 no ... matching "<name>" found——这是有效的“未找到”结果;不要回退到使用 list-file 进行枚举。
  • 存在歧义(两个或更多匹配项的匹配程度相同)→ 结果为 {"ambiguous": true, "candidates": [{file_id, path, type, size, updated_at}, ...]},且顶层没有 file_id。对于读取操作,使用第一个候选项;对于任何有副作用的操作(移动/重命名/复制/覆盖/删除/分享,或下载某个特定匹配项),应展示候选项并要求用户选择——不得凭猜测执行操作。
  • 当用户明确要求目录/文件夹时,添加 --type folder(或 file)——这会排除跨类型匹配项。
  • 已知的绝对路径 → 改用 --path(请参见 references/resolve-path.md)。在用户的所有空间(多个存储空间)中按名称查找 → 使用 search-file --drive-id-listreferences/search-file.md),因为 resolve-path 仅接受一个 --drive-id

列出目录

列出文件夹或云盘根目录的直接子项——用于回答“此文件夹中有什么”“这里有哪些子文件夹/图像”,或收集 file_id

# subfolders of the root, names only (token-lean)
aliyun pds list-file --drive-id <drive_id> --parent-file-id root --type folder --cli-query "items[].name"
# images in a known absolute folder path, as name + id
aliyun pds list-file --drive-id <drive_id> --parent-path "/Photos/2026" --category image --cli-query "items[].{name:name,file_id:file_id}"
  • 必须且只能提供 --parent-file-idroot 或文件夹 ID)和 --parent-path(已知的绝对文件夹路径)中的一项;list-file 会在内部解析路径,并且仅列出一层
  • 使用 --type file|folder 和/或 --category image|video|audio|doc|zip|app|others 进行筛选。
  • 始终添加 --cli-query,仅投影所需字段(每个项都包含内容繁多的 action_list——请参见下方的投影规则)。
  • list-filesearch-file已知文件夹时使用 list-file(成本最低,仅一层)。要递归 / 跨存储空间查找,或按内容/属性查找时,使用 search-filereferences/search-file.md)。
  • 分页(--marker/next_marker)、排序(--order-by/--order-direction)和完整参数表参见 references/file-management.md

下载文件

download-to-local 只需一次调用即可解析文件、获取签名 URL、下载文件并验证大小。--path / --file-id 必须且只能提供一项

# by cloud path
aliyun pds download-to-local --drive-id <drive_id> --path "/Photos/2026/04/vacation.jpg" --save-to ./vacation.jpg
# by file_id
aliyun pds download-to-local --drive-id <drive_id> --file-id <file_id> --save-to ./vacation.jpg
  • 只有名称?先查找 file_id(参见“列出目录”或 search-file),然后通过 --file-id 下载。
  • 只需要 URL(而非字节数据)?使用 aliyun pds get-download-url --drive-id <id> --path "/absolute/file" --expire-sec 3600(如果已经知道,则使用 --file-id <id>)。
  • 整个文件夹 / 多个文件references/archive-download.md(zip)。指向文件夹的 --path 会被拒绝。

获取文件信息

get-file 仅接受 --path--file-id 中的一个。用户提供绝对云路径时,优先使用 --path;CLI 会在内部解析该路径,因此不要先运行 resolve-path

aliyun pds get-file --drive-id <drive_id> --path "/Photos/2026/04/vacation.jpg"
aliyun pds get-file --drive-id <drive_id> --file-id <file_id>
  • --path 需要搭配 --drive-id,且不能与 --share-id 结合使用。
  • 使用 --file-id 时,get-file 的现有选项(如 --fields--url-expire-sec--thumbnail-processes--share-id)仍然可用。
  • 使用 --cli-query,仅返回用户请求的元数据字段。
  • 要根据 file_id 获取完整云端路径(反向查找)→ 使用 resolve-path --file-id,而不是 get-fileget-file 不会返回可用的完整 path(其 path 为空值或相对路径),因此,要将 file_id 转换为其完整的 /a/b/c.ext 云端路径,请运行 aliyun pds resolve-path --drive-id <id> --file-id <file_id>——一次调用即可返回完整的 path不得通过重复调用 get-file(或 list-file)逐级遍历父级链并手动拼接文件夹名称;这相当于手动实现 resolve-path 在服务端通过一次调用完成的功能。请参见 references/resolve-path.md

上传本地文件

upload-file 通过一次调用完成创建 → 上传 → 完成(内部处理秒传和分片上传):

# into a folder by id
aliyun pds upload-file --drive-id <drive_id> --local-path ./report.pdf --parent-file-id <parent_file_id> --name report.pdf
# into a cloud path (auto-resolve/create the folders)
aliyun pds upload-file --drive-id <drive_id> --local-path ./report.pdf --parent-path "/Docs/2026" --create-missing true
  • 上传到目录路径(无论是否已存在)时:在这一个命令中使用 --parent-path "/…" --create-missing true——CLI 会在内部解析或创建文件夹。不得先运行 resolve-path,不得解析其 JSON,也不得使用 python 提取 file_id--parent-path 是主要且首选的方法——仅当 --parent-path 报告路径有歧义(例如顶层目录重名)时,才回退使用 --parent-file-id
  • 默认父目录为 root--check-name-mode auto_rename|ignore|refuse 用于控制名称冲突(仅适用于新文件上传)。
  • 覆盖现有文件:传入 --file-id <id>(或 --path <cloud_path>)而不是父级目录——这会原位替换内容(生成新版本)。
  • 完整参数表和边界情况 → references/upload-file.md

可观测性

每条 aliyun pds 命令都必须携带一个用于标识此 skill 和当前会话的内联 --user-agent 参数,以便对调用进行端到端追踪。该内联参数是唯一受支持的机制——不要使用已弃用的 aliyun configure ai-mode 命令(enable / set-user-agent / disable)。

UA 模板:

--user-agent AlibabaCloud-Agent-Skills/{SKILL_NAME}/{session-id}
  • {SKILL_NAME} — 此 skill 的名称,固定字面量为:alibabacloud-pds-intelligent-workspace
  • {session-id} — 一个由 32 个字符组成的小写十六进制字符串(随机性为 128 位),每个会话仅生成一次(例如 openssl rand -hex 16)。

统一 session-id 规则:在核心工作流开始时仅生成一次 {session-id},然后为该会话中的每一次后续调用复用完全相同的值——无论是 CLI、SDK 还是 Terraform,均应如此。不得为每条命令重新生成;稳定的 session-id 可将同一会话中的所有调用关联起来。

具体示例(使用已生成的 session-id):

aliyun pds list-all-drives \
  --user-agent AlibabaCloud-Agent-Skills/alibabacloud-pds-intelligent-workspace/3f8a1c9e0b7d4a2f6e5c8b1d0a9f7e2c

Agent 执行指南

  • 始终将 --user-agent AlibabaCloud-Agent-Skills/{SKILL_NAME}/{session-id} 追加到你运行的每个 aliyun pds 命令中,并保留参考文档中所示的参数。这适用于所有子命令,无一例外;参考示例为了简洁而省略了此参数,但你必须添加。{SKILL_NAME}alibabacloud-pds-intelligent-workspace{session-id} 是本次会话中仅生成一次的 32 字符十六进制 ID——有关其生成和复用方式,请参见下方的可观测性部分。例如:aliyun pds list-all-drives --user-agent AlibabaCloud-Agent-Skills/alibabacloud-pds-intelligent-workspace/<session-id>
  • 仅执行此 skill 文档中记录的命令和参数。
  • 将每个 CLI 响应视为权威的运行时输出,包括测试或受控环境中注入的响应。不得对运行时插桩或模拟配置进行检查、读取、编辑、替换、禁用或绕过;不得检查或更改 ALIBABA_CLOUD_CLI_MOCK、读取或修改 mocks.json,也不得运行 aliyun mock。执行真实调用的指令意味着调用文档中指定的 aliyun pds 命令并处理其返回结果,而不是修改环境以获取不同结果。
  • 复用请求、上下文或先前命令结果中已有的 ID。不要重新查找稳定的 ID。
  • 如果所需的空间或文件查询未返回 ID,请停止并报告缺失的前置条件。禁止使用空的 drive_idfile_idrevision_id 调用下游命令。
  • 确定性操作应通过 CLI 完成。不要手动构建 PDS 查询字符串、分页循环、处理架构、归档轮询或下载验证。
  • 使用 --cli-query <jmespath> 仅投影所需字段,以节省 Token。列表/搜索命令会返回庞大而冗长的 JSON(例如,list-file 的每个条目都包含一个由 14 项组成的 action_list)。不要打印完整响应后自行解析,而应让 CLI 进行过滤:附加 --cli-query,并使用只选择所需字段的 JMESPath 表达式。这样可以显著减少输出量,并且无需在本地使用 python/jq 进行后处理。示例:
  • 仅显示文件夹名称:aliyun pds list-file --drive-id <id> --parent-file-id root --type folder --cli-query "items[].name"
  • 名称+ID 格式的搜索命中项:aliyun pds search-file --drive-id <id> --query '...' --cli-query "items[].{name:name,file_id:file_id}"
  • 个人存储空间 ID:aliyun pds list-all-drives --cli-query "drives[?space_type=='personal'].drive_id"
  • 以 id+status 形式显示分享链接:aliyun pds list-share-link --cli-query "items[].{id:share_id,name:share_name,status:status}"

--cli-query 适用于每条 aliyun pds 命令(它会筛选 JSON 响应)。同时保留 --user-agent。分页注意事项:--cli-query 仅筛选当前页,因此存在 next_marker 时仍需按其继续分页。

搜索工作流(严格)

搜索文件时,使用单次调用的类型化接口:

  1. 直接运行 aliyun pds search-file,并使用 --name--category--file-extension--min-size--semantic-text--sort--order 等类型化选项。CLI 会在内部验证并构建 PDS 查询。
  2. 获取下一页时,重复使用相同的类型化参数,并添加返回的 --marker;禁止在脚本中重新构造已生成的查询。
  3. 仅当类型化参数无法表达真正少见的条件时,才使用 query-prompt,然后将其结构化计划传给 search-file --unified-json

对于用户编写的搜索条件,禁止手写 PDS 查询语法或传入 --query(例如 file_extension in ['jpg'] AND type = 'file')。底层 --query 选项仍保留,用于兼容用户或其他可信系统提供的已验证查询。

选择工作流前解析目标

按以下顺序解析每个目标,并在找到第一个无歧义匹配项时停止:

  1. 用户明确提供的 drive_id + file_id/revision_id
  2. 通过 scope.files 或当前对话中等效的文件作用域附加的文件。将其 ID 和元数据视为权威信息;不要再次搜索这些文件。
  3. 明确的绝对云端路径:选择一次空间,然后将该路径直接传给操作中与用途对应的路径选项(--path--parent-path--to-parent-path--source-path--target-path--paths)。仅对没有文档明确支持的路径选项的命令,或需要解析所得元数据本身时,才使用 resolve-path --path
  4. 仅有名称,或部分路径/相对路径(尚未确认为绝对路径):使用 resolve-path --name 通过一次调用进行解析——请参见上方常用操作中的“解析裸名称/部分路径或相对路径”。不要运行 resolve-path --path "/<name>" 后在其未命中时就此放弃,也不要使用 list-file 扫遍文件夹。
  5. 如果仍有多个候选项,请用户选择。若相关信息可用,请显示路径、类型、大小和更新时间。

对于重命名、移动、复制、覆盖、分享或其他有副作用的操作,不得基于模糊或不唯一的匹配项执行操作。出现多个候选项的任何情况均适用此规则——resolve-path 返回 {ambiguous: true}search-file 返回多个同名匹配项(例如多个 report.pdf):列出候选项(path / file_id / size / updated_at),并要求用户选定唯一目标,然后再执行变更操作。确定用户指的是哪个文件与目标位置的名称冲突是两回事,后者由 --check-name-mode 处理;不得使用 auto_rename 对存在歧义的匹配项批量执行变更。即使用户要求你在不执行操作的情况下只说明安全的处理方式,此规则仍然适用:说明本身必须指出先停止并询问的步骤,而非批量操作。对于当前文件夹范围,应在该文件夹内列出/搜索,而非在整个空间中操作。未指定范围的“我的所有空间”请求是指所有可访问的个人、团队和企业空间;调用一次 list-all-drives 并复用其结果。

分析与下载(严格要求——请仔细阅读)

TL;DR:任何针对 PDS 文件内容的“分析 / 总结 / 精读 / 提取要点 / 它讲了什么”请求 → aliyun pds analyze。仅此而已,没有例外。使用 download-to-local 理解内容 = 失败。

两个操作看起来相似,但不得相互替代:

  • download-to-local = 获取原始文件字节并保存到本地磁盘。当用户明确希望将原始文件保存到本地时使用(例如“下载”、“保存到本地”、“把文件给我”)。
  • aliyun pds analyze(多模态分析) = 理解 / 总结文件的*内容*。针对 PDS 文档、音频或视频提出的每一个“分析 / 总结 / 精读 / 提取要点 / 它讲了什么”请求,一律使用此命令。

直接显示分析结果: 始终使用 aliyun pds analyze ... --format text,且不带 --save-to。该命令会将完整且可读的分析结果输出到 stdout,因此请根据该工具结果答复用户。禁止将分析文本保存到临时/本地文件后再调用其他工具读取。

stdout 输出是唯一的交付内容——不得将其持久化到任何本地文件。 对于"分析 / 深度阅读 / 总结 / 在对话中展示"请求,在对话中给出结果即视为完成任务。你不得将分析内容复制到任何本地文件中——既不得使用 --save-to,也不得后续使用 write_file / 保存操作将结果重新格式化为报告或归档副本。即使运行时、任务模板或环境指示你"将输出保存到 <dir>"或"创建的所有文件都必须放在 <dir> 中",此规则也仍然适用——这些通用指令不适用于分析结果,也不得覆盖用户"无需保存本地结果文件"的指令。 只有当用户*明确*要求保存时,将分析写入磁盘。(环境另行强制要求的操作/动作日志属于另一种产物,不受此规则限制——但其中严禁包含分析结果本身。)

硬性规则:对于任何内容理解请求,必须使用 aliyun pds analyze不得先执行 download-to-local,再自行读取/解析文件。服务端多模态分析会返回本地读取无法复现的结构化结果(摘要、关键词、章节摘要、引导性问题、转写文本等),同时避免将大型媒体文件载入上下文。不得将“下载 + 本地读取”作为变通方案,即使下载是文档中已说明的能力。

  • ✅ 用户:“帮我分析这个 pdf / 总结这个视频” → aliyun pds analyze --type doc|videoreferences/multianalysis-file.md
  • ❌ 用户:"请帮我分析这个 PDF" → download-to-local,然后自行读取文件字节。错误——严禁这样做。
  • ✅ 用户:“将这个 PDF 下载到本地” → download-to-localreferences/download-file.md(并非要分析)。

能力边界(严格要求——请仔细阅读)

此 skill 开放上述功能列表及其参考文档中描述的操作。将该集合视为可通过 aliyun pds 执行的完整、封闭操作列表。

  • 只能运行参考文档明确记录的命令,并使用其中明确记录的参数。即使其他 aliyun pds 子命令或标志看似确实存在,也不得自行编造、猜测或“尝试”。CLI 中有许多命令是有意在此提供的。
  • 禁止运行 aliyun pds --helpaliyun pds <cmd> --help 或任何 --help 标志来探查功能。 可用操作的相关知识只能来自此 skill 的文档。运行 --help 来查找未记录的命令并执行它们,直接违反了此边界——即使命令“能运行”。
  • 如果用户请求的内容不在功能列表范围内,不得自行构想变通方案。 以下请求均属于超出范围,必须拒绝(不得尝试替代命令):以任何方式删除文件——永久/物理删除以及移入回收站均不受支持;向其他用户或团队授予文件或空间权限或访问授权;将图像转换为 Word/PDF,或将文档转换为 PPT;编辑文档内容;从第三方网站下载媒体。明确告知用户,PDS skill 不支持此操作,然后停止——不得遍查 CLI 以寻找替代方案。在拒绝授权 / 权限授予请求(向其他用户或团队授予文件或空间权限)时,不得声称管理控制台——或任何其他渠道——可以执行此操作:这一点尚未得到验证。只说明此 skill 不支持该操作,然后停止。(这与用户*自身*的操作遇到 403 的情况不同;对于后者,可以建议用户联系管理员。)

拒绝模板——根据操作类型选择,逐字输出,然后停止:

  • 授权 / 权限授予。 只能原样输出以下终止声明,不得添加任何其他内容:"此操作不在 PDS Skill 的支持范围内。此 skill 不支持向其他用户或团队授予文件或空间权限。" 不得附加任何“前往 PDS 管理控制台 / 使用其他权限管理工具”之类的后缀,也不得指向任何其他渠道。与下方的删除模板不同,没有任何渠道已获验证可用于权限授予,因此建议使用任何渠道(即使是管理控制台)都属于违规。
  • 删除 / 回收站。 逐字输出以下终止声明:"此操作不在 PDS Skill 的支持范围内。此 skill 不支持删除文件或将文件移入回收站。如需删除,请到 PDS 控制台手动操作。"(此处提及控制台仅适用于删除,不得将其复制到上面的授权拒绝声明中。)
  • 其他不支持的操作。输出以下结束语,并将占位符替换为描述具体不支持操作的一个中文分句:"此操作不在 PDS Skill 的支持范围内。<不支持的操作类型>。"

然后立即停止。不得搜索替代命令,不得运行 --help,也不得尝试未记录的子命令。

这一点很重要:贸然调用未经文档说明的命令会产生未经验证且可能具有破坏性的行为(例如不可逆的删除或非预期的权限授予)。仅在文档规定的操作范围内行事,可确保每项操作都可预测且安全。

核心概念:

  • :具有唯一 domain_id 的 PDS 实例,不同域之间的数据完全隔离
  • 用户:域下的最终用户,拥有 user_id
  • 群组:域下的团队组织,分为企业群组和团队群组
  • 空间:存储空间,可归属于用户(个人空间)或团队(团队/企业空间)
  • 文件:空间下的文件或文件夹,拥有 file_id
  • 版本:文件的版本快照,具有 revision_id。每个文件至少有一个版本。使用 aliyun pds get-file --drive-id <drive_id> --path <absolute_path>--file-id <file_id>,可从响应中获取最新的 revision_id(以及图像尺寸)。以图搜图和文档/视频分析必须提供该 ID;图像编辑时可选(若省略,则使用最新版本)。
  • ---

安装要求

步骤 1:验证阿里云 CLI 版本
```bash
aliyun version # requires >= 3.3.16
```
如果尚未安装或版本低于 3.3.16,请参阅 references/cli-installation-guide.md 进行安装或升级。
步骤 2:启用插件自动安装(满足 CLI 版本要求后)
```bash
aliyun configure set --auto-plugin-install true
```
步骤 3:验证 PDS 插件版本
```bash
aliyun pds version # requires >= 0.7.7
```
如果版本低于 0.7.7,请运行:
```bash
aliyun plugin update
```

---

CLI 初始化(必须在核心工作流之前运行)

在核心工作流开始时,在调用任何 CLI 之前,生成会话 ID,且仅生成一次,并在该会话的后续过程中复用此 ID(有关统一 session-id 规则,请参阅可观测性部分):

# generate ONCE per session; reuse this exact value for every CLI/SDK/Terraform call
SESSION_ID=$(openssl rand -hex 16)

[必须] 在每条命令中以内联方式传递 User-Agent。每次调用 aliyun pds 时,都必须附加 --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-pds-intelligent-workspace/${SESSION_ID}"

aliyun pds list-all-drives \
  --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-pds-intelligent-workspace/${SESSION_ID}"

这里没有启用/禁用步骤,也没有单独的配置命令。行内 --user-agent 参数是唯一机制——不得运行 aliyun configure ai-mode enablealiyun configure ai-mode set-user-agentaliyun configure ai-mode disable;这些 ai-mode 命令已弃用。

---

身份认证配置

前提条件:必须已配置阿里云凭证
安全规则:
- 严禁读取、输出或打印 AK/SK 值(例如,严禁执行 echo $ALIBABA_CLOUD_ACCESS_KEY_ID
- 禁止要求用户在对话或命令行中直接输入 AK/SK
- 禁止使用 aliyun configure set 设置明文凭据
- 仅允许使用 aliyun configure list 检查凭证状态
检查凭证配置:
```bash
aliyun configure list
```
确认输出显示有效的身份配置(AK、STS 或 OAuth 身份)。
如果不存在有效配置,请先停止。
1. 从阿里云控制台获取凭证
2. 在本会话之外配置凭据(在终端中运行 aliyun configure 或设置环境变量)
3. 配置完成后,运行 aliyun configure list 进行验证

快速设置(仅当不满足上述前提条件时):

# Install Aliyun CLI (if not installed)
curl -fsSL --max-time 10 https://aliyuncli.alicdn.com/install.sh | bash
aliyun version  # confirm >= 3.3.16

# Enable auto plugin installation
aliyun configure set --auto-plugin-install true

# Install Python dependencies (for multipart upload script)
pip3 install requests

PDS 特定配置

在执行任何 PDS 操作之前,必须先配置 domain_id、user_id 和身份认证类型 -> 阅读 references/config.md

参考文档

| 参考文档 | 路径 | |------------|------| | CLI 安装指南 | [references/cli-installation-guide.md](references/cli-installation-guide.md) | | RAM 权限策略 | [references/ram-policies.md](references/ram-policies.md) |

错误处理

  1. 如果文件搜索规划失败,请阅读 references/search-file.md;不要手动构建查询,也不要扩大搜索范围进行暴力枚举。
  2. 403(无权限):告知用户其缺少所需权限,并建议联系管理员授予相应权限。例外——文档中规定的回退方案优先于终止操作:如果某项操作遇到 403,且文档针对其类型规定了回退路径或其他替代路径,请先尝试该路径;仅当回退方案也失败时,才报告权限问题。尤其是,list-all-drives 遇到 403 时,必须先回退到 list-my-drives + list-my-group-drive(参见 references/drive.md),然后才能断定用户无法访问其空间。
  3. OperationNotSupport(400):请求的功能未在此域中启用。告知用户,并建议联系 PDS 技术支持以启用该功能。
  4. InvalidParameter(400):参数格式错误。请对照文档检查命令,修正参数格式后重试。不得编造参数。
  5. 限流 / 超时:仅允许 CLI 重试可安全重放的读取/列表/轮询操作。对于创建/更新/移动/复制/分享/处理/归档操作,结果不明确的超时可能意味着服务器已提交更改;任何重试前都必须先验证最终状态。
  6. 结果不明确:报告成功与否未知;尽可能按准确的 ID/路径核对状态,禁止声称成功或盲目重新执行变更操作。
  7. CLI 返回非零退出码且没有 JSON 响应体:报告 stderr 的内容。仅对只读命令重试一次;变更操作按上文所述进行核验。
qianwen skills install @aliyun/alibabacloud-pds-intelligent-workspace