跳到主要内容

workspace download

workspace download 从 Workflow Server 获取指定 target 的项目源码,并写入本地目录。draft 使用单项目文件接口并替换目标目录;已发布版本会自动携带当前操作系统对应的 Desktop 平台,读取该根版本的 dependency lock,并把有权限的 included 项目写入同一父目录。下载恢复 Server 已保存的源码快照,不重新应用 .workflowignore.gitignore

Kanban 的图片、字体等二进制资源以 base64 文件响应传输,CLI 会解码并恢复原始字节;文本项目仍使用原有字符串 content

命令格式

pnpm exec workflow-code workspace download <workflow> [--target draft|latest|version] [--path <dir>]

参数

参数说明
<workflow>远程 workflow 名称。
--target <target>下载目标。默认 latest
--path <dir>本地目标目录。未传时写入 workspace/workflow/<workflow>

Target

说明
draft只下载根项目当前 draft,并完整替换目标目录,不处理依赖锁。
latest默认值。在 macOS 或 Windows 上解析为当前平台最新的在线兼容根版本,再按该精确版本的 dependency lock 下载。它与项目整体 latest、Server latest 可以不同。
具体版本号下载指定已发布版本及其 included 依赖;不会读取依赖项目的 latest。根版本必须声明支持当前 Desktop 平台并使用 source 模式。

workspace download 在 macOS 发送 platform=macos,在 Windows 发送 platform=windows。Linux 和其它操作系统没有隐式兼容平台,命令会在下载任何 target 前拒绝执行。

API

步骤Endpoint
下载 draftGET /api/workflows/{workflow}/files?target=draft&includeBinary=true
下载已发布项目组GET /api/workflows/{workflow}/project-group-download?target=&lt;target&gt;&platform=macos|windows

写入规则

规则说明
draft 目标目录写入前递归清空,再根据 server 返回路径恢复根项目。
已发布根项目写入 --path 或默认根目录;目录已被其它 UUID 占用时拒绝覆盖。
included 依赖写入根项目同一父目录下的独立同级目录。父目录中已有相同 UUID 项目时视为已满足且不覆盖。
写入内容文本直接写入 contentencoding: "base64" 时先严格解码再写入二进制内容。
原子性新项目先写入同一父目录的临时 staging;任一校验、目录移动或写入失败时移除本次新增目录。

安全校验

校验说明
禁止绝对路径server 返回 /... 或 Windows 盘符路径会被拒绝。
禁止路径穿越空路径、... 或包含空段的路径会被拒绝。
保留服务端清单dist.workflowignore 或其它已上传文件会原样恢复,不做第二次忽略。
依赖锁一致性根 Kanban 精确版本中已确认的 relatedProjects 必须与 Server 返回的 dependency lock 一致;CLI 会按路径和原始文件字节重算每个返回项目的 SHA-256,根版本、included 项目的精确版本和 source hash 必须全部匹配。
Desktop 发行兼容Server 只用根版本的 executionTargets.desktop 校验当前平台;included 依赖继续按根版本的精确 dependency lock、源码保留状态和下载权限处理,不要求依赖单独声明当前 Desktop 平台。
宿主数据隔离Server 响应和本地写入都拒绝 .env*、KV、PersistentValue、定时计划、运行历史、SQLite、workflow-auth.json 和其它宿主用户配置。

输出

情况输出
完整下载输出根项目、included 依赖、本地路径、精确版本和 complete: true
部分下载仍保存有权限的项目,并在 skippedDependencies 输出 external、源码不可用或需权限的依赖及申请链接。
文件路径非法输出错误信息,退出码为 1
未登录输出错误信息,退出码为 1

示例

pnpm exec workflow-code workspace download hello
pnpm exec workflow-code workspace download hello --target latest
pnpm exec workflow-code workspace download hello --target 1.2.0 --path ./workspace/workflow/hello-copy

注意事项

场景建议
目标目录有本地改动先备份或选择新的 --path
只想查看远程版本使用 versions
included 依赖缺少权限打开输出中的短期申请链接;来源 owner/manager 批准后重试同一命令,已有同 UUID 项目不会重写。
external 依赖不参与联动下载,需要自行准备对应 UUID 的来源项目。
当前系统不是 macOS 或 Windows没有隐式兼容目标;请改在已声明支持的 Desktop 平台下载。
下载后看板无数据属于预期行为。Server KV 不进入本地;请在本地运行来源 Workflow 同步入口。