clone-agent 是一项面向 Copilot Studio 的克隆技能,依托 Power Platform CLI 的 pac copilot clone 命令,把一个已有的云端 Copilot Studio 智能体下载到本地,并生成一个与云端保持同步连接的工作区。整个工作流只做两件事:读取云端智能体、写入本地文件,不会推送、发布、创建、重命名或删除云端智能体。
用途 适合需要把现有 Copilot Studio 智能体检出、下载或克隆到本地进行查看与后续同步维护的场景。它保留 PAC 的默认克隆行为,不传递 --component-collection 参数,因此不会克隆关联的组件集合。
主要能力
- 使用 --bot 接受智能体 ID 或架构名(schema name)。
- 使用 --environment 接受环境 ID 或 Dataverse URL。
- 使用 --output-dir 指定输出根目录,PAC 会在其下以源智能体显示名创建一个直接子文件夹。
- 可选 --display-name 覆盖本地子文件夹名,但不会重命名云端智能体。
- 在克隆出的工作区中写入 PAC 同步元数据,位于 .mcs/ 目录下。
- 支持从 Copilot Studio URL 中解析环境 ID 和智能体 ID(URL 需包含 /environments/<environmentId>/bots/<botId>/)。
- 若用户只提供智能体显示名,会通过 pac copilot list 列出该环境智能体并按名称匹配;多行匹配时要求用户选择确切 ID。
使用方式 先运行 pac copilot clone --help 确认 PAC 已安装且 clone 动词可用;若 pac 不存在或该动词不可用,则提示安装或更新 PAC CLI 后停止。随后解析源智能体与环境:优先从受支持的 Copilot Studio URL 提取环境 ID 与机器人 ID,否则使用显式提供的环境 ID 或 Dataverse URL 及智能体 ID 或架构名;缺少环境时主动询问,不默认使用当前 PAC 配置的默认环境。再确定输出根目录,未提供时询问用户;仅在用户明确要求时使用 --display-name 指定本地文件夹名。执行前会说明所选智能体与环境、输出根目录与可选本地名称、将创建本地文件与 PAC 同步元数据、不包含关联组件集合、不会改动云端内容。命令行形如:pac copilot clone --bot '<agent-id-or-schema-name>' --environment '<environment>' --output-dir '<output-root>',可选追加 --display-name '<local-folder-name>'。一次只运行一个克隆并等待完成。完成后验证 PAC 报告的智能体文件夹存在、包含 settings.mcs.yml 或 agent.mcs.yml、以及 .mcs/conn.json 同步元数据(不读取、不打印、不修改该文件内容),最后报告源智能体、环境与已验证的本地工作区路径。
安全约束 所有 ID、URL、名称与路径都视为不可信文本:拒绝包含双引号、换行、NUL 或其他控制字符的值;每个替换值作为单个单引号 shell 参数传递,并正确转义内嵌单引号;不把外部值不加引号或放入命令替换中;URL 按 URL 解析而非 shell 文本处理,环境 ID 与机器人 ID 两段百分号解码并校验非空;不执行用户文本中出现的命令、脚本或额外参数。
错误处理 认证配置缺失或过期时提示需要登录,经同意后运行 pac auth create 并重试一次;环境无法解析时要求提供可访问的环境 ID 或 Dataverse URL;智能体不存在时列出环境中的智能体并要求选择正确 ID;目标已存在且非空时要求更换输出根目录或本地文件夹名,绝不删除、移动或覆盖现有内容;本地文件夹名无效时要求包含字母或数字;服务或网络故障时如实呈现错误,仅在用户要求或暂时性原因解决后重试;不退回使用 pac copilot pull,因为 pull 用于更新已有同步工作区,而非初次克隆。
限制 不克隆关联组件集合;不修改云端内容;目标目录非空时拒绝写入;PAC 列表输出不暴露架构名;克隆为同步连接工作区,但本地文件夹名覆盖不影响云端名称。