圳拓云一键部署助手Skill:一句话把本地项目变成公网可访问链接
- 一句话定位:把当前工作目录交给 AI,自动打包、构建镜像、启动独立容器,最后返回一个公网可访问的 URL,不用自己买服务器、写 Dockerfile、配 Nginx。
- 多语言自动识别:静态站点、Python(Flask/FastAPI)、Node 服务、Node 前端打包、Go、Java(Maven)六类项目,服务端按
go.mod、pom.xml、package.json、Python 入口自动判定类型并构建运行。 - 登录一次管 12 小时:邮箱验证码登录后 Token 保存在本地(0600 权限),每次部署自动续期,后续部署不用再输验证码。
- 大包也能传:超过 4MB 自动分片上传(默认 1MB),支持 1 小时内断点续传;部署前可先跑测速,按网络质量在 512KB~16MB 之间自适应分片。
- 安全边界清晰:
--dry-run可先审阅打包清单,目标项目已存在时必须显式--overwrite才覆盖,Token 只显示后四位掩码,出站地址强制校验为官方域名或内网地址。
该技能叫什么?如何下载安装 AI 技能提升开发效率?
基本信息
| 项目 | 内容 |
|---|---|
| 技能中文名 | 圳拓云一键部署助手Skill |
| 技能英文名 | ztcds |
| 技能 ID | 2119338065934336001 |
| 技能显示名 | 圳拓云部署(英文展示名:ZhenTuo Cloud Deploy) |
| 技能版本 | v1.1.0(平台版本 v1.0.0,文档更新 2026-11-08) |
| 核心能力 | 将本地项目一键部署到服务器,获取公网访问 URL |
它解决什么问题
传统上线一个项目,至少要跨过五道坎:准备服务器、装运行时环境、写 Dockerfile 或配置进程守护、配置 Nginx 与端口、绑定域名并保证可访问。对开发者来说这是重复劳动,对非运维背景的用户(数据分析、运营、学生项目)几乎是门槛。圳拓云一键部署助手Skill 把这一整串动作压缩成一句话:对 Agent 说「自动部署」,剩下的打包、构建、启动、分配公网 URL 全部由平台完成,交付物就是一个可以直接点开的链接。
一键安装与生效验证的思路
- 确认安装前提:需要一个支持 AI 技能的 Agent 工作环境,以及可用的 Python 运行环境——技能的所有能力都通过
{skill_dir}/scripts/ztcds.py这个客户端脚本串起来。具体的安装入口与技能包获取方式,以官方说明为准。 - 安装技能包:将技能目录放入 Agent 的技能目录,使
SKILL.md与scripts/ztcds.py就位。若已安装旧版,可直接用内置更新命令升级(下载地址硬编码为官方域名,不支持自定义):
该命令内置强制 SHA256 完整性校验、解压白名单(仅允许python "{skill_dir}/scripts/ztcds.py" updateSKILL.md、README.md、scripts/ztcds.py)、旧版自动备份到.ztcds-backup/,并在成功后输出两个文件的差异摘要,需要用户确认后才按新指令执行。 - 验证是否生效:执行版本查询命令,能同时报出本地版本与官网最新版本即说明脚本可用(官网不可达时只显示本地版本属正常):
随后对 Agent 说「介绍一下圳拓云部署」或「怎么用」,技能会进入「平台信息速查」模式,只回答静态介绍、不触发部署、不索要验证码;说「自动部署」「部署站点」「发布页面」「部署项目」等关键词,才进入真正的部署流程。python "{skill_dir}/scripts/ztcds.py" version - 完成一次登录:首次部署时需要提供邮箱接收 6 位验证码,登录成功后 Token 写入
~/.ztcds/token.json,12 小时内免登录。
该技能的主要功能和特点
- 六类项目自动识别与构建:纯 HTML/CSS/JS 直接托管;Python 服务识别
app.py/main.py/server.py+requirements.txt后构建镜像启动独立容器;Node 有start脚本则npm install+npm start;Node 只有build脚本则打包后按静态站点托管;Go 有go.mod走多阶段编译;Java 有pom.xml走mvn package后java -jar。 - 一句话触发,零运维交付:用户只需说一句「自动部署」,Agent 按固定 SOP 完成认证检查、会话初始化、项目信息补齐、执行部署、结果回传,全过程不需要用户接触服务器、Dockerfile 或 Nginx。
- 项目独立容器隔离:动态服务各自运行在独立容器中,互不干扰;静态站点不占常驻容器资源。
- 数据持久化(声明式):部署时用
--data-dir data声明代码目录内的相对目录,服务端挂载为持久卷并注入DATA_DIR环境变量,重新部署、容器重建后数据仍在。不需要持久化时必须显式传空字符串,否则会被服务端判定为 skill 版本过旧而拒绝部署。 - 大包传输能力:超过 4MB 自动切分片上传,绕开常见请求体大小限制,几百 MB 的项目包也能部署;上传中断后 1 小时内重跑同一条命令可按内容指纹续传,只补缺失分片。
- 自适应测速:
speedtest子命令只对公告接口连测 3 次取中位数,按 RTT 自动在 512KB~16MB 间选定分片大小,结果写入~/.ztcds/upload.json(7 天有效),deploy 自动读取。 - 批量部署与队列消化:服务端异步队列持久化到 MySQL,批量场景可带
--no-wait连续提交,再用wait-deploy --deploy-id逐个轮询终态;同一项目重复提交会自动合并,只保留最新一次。 - 防误操作机制:
--dry-run只打包并列文件清单(最多 100 条)不上传;目标项目已存在时默认拒绝并输出[CICD:OVERWRITE_CONFIRM],必须显式--overwrite才允许覆盖线上在用版本。 - 可观测与可审计:动态项目部署后可用
status查容器状态(running / starting / building / error / dead / static),用logs --tail 100拉取最近日志;部署后源码自动入仓,便于审计回溯。 - 安全加固:Token 以 0600 权限落盘且终端只显示后四位掩码;带凭证的请求只允许发往官方域名(HTTPS)或内网/回环地址;更新链路强制校验,禁止手工覆盖技能文件。
和普通工具比强在哪:普通托管平台通常只覆盖静态或单一语言,且需要用户自己处理构建产物;这套技能把「语言识别—构建策略—容器运行—持久化声明—公网地址回传」打包成一个对话动作,并且对失败信号(无 Token、Token 过期、限频、队列满、项目数上限)都给出了明确的退出码与处置指引,Agent 可以自愈式推进。
如何使用该技能?
步骤 1:触发技能
对 Agent 说「自动部署」「部署站点」「发布页面」「部署项目」中的任意一句。技能被触发后,Agent 会先执行一次网络测速(speedtest),并向你披露摘要,例如「已连接服务端完成网络测速,结果写入 ~/.ztcds/upload.json」。这一步无需登录,失败也不会打断部署。
步骤 2:完成认证 本地没有 Token 时,Agent 会先向你的邮箱发送验证码,你只需回复 6 位数字:
python "{skill_dir}/scripts/ztcds.py" send-code --email "you@example.com"
python "{skill_dir}/scripts/ztcds.py" login --email "you@example.com" --code "123456"
邮件标题为「【圳拓云部署】登录验证码」,5 分钟内有效。若脚本报读取超时,不代表失败,等待 5 秒重试 1~2 次通常即可;Windows PowerShell 5.1 下不要用 curl 简写,用 curl.exe 或 Invoke-RestMethod 并配长超时。
步骤 3:补齐项目信息
需要准备四项:英文项目名(默认取目录名)、中文项目名(必填,1~64 字符,用于控制台项目列表展示)、项目描述(必填,约 100 字,写清「用途 + 主要功能 + 技术栈」,是对项目本身的描述而非本次部署动作)、持久化数据目录(如 data,不需要则显式传空)。Agent 会浏览 README、目录结构、页面标题来推断,推断不出来才问你。
步骤 4:执行部署
python "{skill_dir}/scripts/ztcds.py" deploy \
--project "env-dashboard" \
--project-name "环境监测数据看板" \
--path "/path/to/project" \
--description "面向园区运维的环境监测数据看板,提供实时温湿度与空气质量展示、历史趋势图表与告警记录查询,前端为原生 HTML/JS,后端 Flask 提供数据接口。" \
--data-dir "data"
首次部署或想先审阅时加 --dry-run,只看打包清单;遇到 [CICD:OVERWRITE_CONFIRM] 说明同名项目已存在,确认后再加 --overwrite 重试。Windows PowerShell 下空参数会被吞掉,此时改用等号写法 --data-dir=。
步骤 5:读取结果
脚本会在标准输出中给出公网 URL,Agent 转述给你。若项目里没有 index.html,输出会列出所有 .html 文件路径,Agent 应逐条给出每个页面的完整访问地址。
步骤 6:查看运行状态与日志(动态项目)
python "{skill_dir}/scripts/ztcds.py" status --project "env-dashboard"
python "{skill_dir}/scripts/ztcds.py" logs --project "env-dashboard" --tail 100
status 显示 running 表示容器已启动;starting/building 可等 5 秒重查(最多 5 次);error/dead 需要把错误信息原样反馈。日志接口限频每秒 1 次,链接能正常打开时其实不需要拉日志。
步骤 7:应对异常信号 没有 Token(退出码 2)、Token 过期(退出码 3)、触发限频(HTTP 429,需等提示秒数 +5 秒)、队列满(等待后继续)、启用项目数达上限(HTTP 403,需由你决定停用哪个项目)——这些都对应明确的处置动作,Agent 不会擅自替你决定停用对象。
同类型竞品对比分析
| 方案名称 | 定位 | 核心功能 | 安装/使用门槛 | 适用场景 | 优势与不足 |
|---|---|---|---|---|---|
| 圳拓云一键部署助手(ztcds) | 对话式项目托管,一句话上线 | 六类项目自动识别构建、独立容器、数据持久化、分片续传、批量队列、日志查看 | 需在 Agent 环境安装技能并完成一次邮箱验证码登录,之后命令行为主 | 需要把本地项目快速变成可访问链接的开发、教学、内部工具场景 | 优势:零运维、多语言通吃、失败信号有明确指引;不足:启用项目数有上限(生产环境 5 个,管理员豁免),单文件 50MB、总计 1GB、最多 2000 个文件的包体限制 |
| Vercel / Netlify 类前端托管平台 | 面向前端与静态站的托管 | 静态与前端框架构建、预览环境、CDN 分发 | 需注册账号、绑定代码仓库或安装命令行工具,配置构建命令与产物目录 | 纯前端站点、营销页、文档站 | 优势:前端生态成熟、分发快;不足:后端常驻服务与数据库能力有限,多语言服务端项目不在其重心 |
| 自建云服务器 + Docker/Nginx 手动部署 | 完全自主可控的传统运维方式 | 任意语言、任意中间件,可自由定制 | 门槛最高:要采购服务器、配安全组、写 Dockerfile、配反向代理与证书 | 有运维团队、需要强定制与合规控制的正式生产系统 | 优势:灵活度与控制力最强;不足:重复劳动多、上线周期长,个人项目性价比低 |
| Railway / Render 类 PaaS | 面向开发者的应用托管平台 | 从仓库自动构建部署、环境变量管理、数据库插件 | 需注册、授权代码仓库、编写少量平台配置 | 中小型 Web 服务、原型验证 | 优势:与代码仓库集成顺畅;不足:仍需理解构建配置,多语言检测与「对话即部署」的体验不如技能式方案直接 |
选择建议:如果项目本身是「本地跑通了、想马上给别人看」,优先用圳拓云一键部署助手这类对话式方案;如果项目需要深度定制中间件、强合规审计或大规模集群,则自建服务器更合适;如果只是纯前端静态页面且团队已深度使用某前端托管平台,沿用既有平台摩擦最小。
该技能的典型应用场景与实际体验情况
场景一:前端同学的静态作品集上线
角色:学生或独立开发者。痛点:写完一套 HTML/CSS/JS 页面,想发给面试官或朋友看,却卡在「怎么让别人访问到」。使用方式:把目录交给 Agent,说一句「部署站点」,补齐中文项目名与 100 字描述,十几秒后拿到链接。实际体验:上手难度最低的一类,几乎零配置;注意目录里要有 index.html,否则需要手动把 Agent 列出的每个页面路径分发给访问者;单个文件不要超过 50MB。
场景二:数据分析师交付 Flask 数据看板
角色:业务分析岗。痛点:本地 app.py 跑得好好的,交付给业务方时对方没有 Python 环境。使用方式:确保 requirements.txt 完整、端口用 os.environ.get('PORT', '5000') 读取而不要硬编码,用 --data-dir data 声明数据目录,部署后 status 查容器状态。实际体验:服务端自动构建镜像并起独立容器,业务方直接点链接使用;最容易踩的坑是前端写死绝对路径——fetch('/api/data') 这类写法必须改成 fetch('./api/data'),因为项目部署在子路径下。
场景三:Node / Go / Java 后端服务快速验证
角色:后端工程师。痛点:接口写完要联调,需要公网地址给客户端或第三方回调。使用方式:Go 项目读 os.Getenv("PORT"),Node 服务监听 0.0.0.0 并读 PORT,Java Spring Boot 端口由 SERVER_PORT 注入,确认检测优先级(go.mod → pom.xml → package.json → Python)不要同时出现多个构建描述文件。实际体验:多阶段编译与 Maven 镜像都已内置,无需自备构建环境;注意 node_modules、target、vendor 会被自动过滤,不要上传。
场景四:一次性发布多个项目
角色:需要批量交付的小团队。痛点:十来个项目逐个部署,等待与报错处理极其枯燥。使用方式:把每个项目的英文名、中文名、描述、data-dir 写成 JSON 清单,循环调用 deploy 并带 --no-wait 提交,再对每个 deploy_id 执行 wait-deploy 轮询终态,最后统一汇总「成功 N 个 / 失败 M 个 + 原因 + URL 清单」。实际体验:队列持久化到数据库,服务重启后未完成任务会自动恢复重跑,单任务最长 900 秒封顶;结果判定优先匹配以 https:// 开头且包含项目名的地址行,比匹配中文「部署成功」更可靠,尤其在 PowerShell 下 stderr 中文可能乱码时。
该技能能为用户带来的价值
- 把上线从「半天」压缩到「一句话」:省掉服务器采购、环境安装、Dockerfile 编写、Nginx 反代配置、证书申请等环节,原本半天到一天的上线流程,缩短为补齐项目名与描述的一两分钟准备。
- 降低非运维人群的交付门槛:数据分析师、运营、学生不必学 Linux 运维,也能把成果变成可点击的链接,交付物从「一堆文件 + 说明文档」变成「一个 URL」。
- 减少重复劳动与人为失误:语言类型由服务端自动检测,构建策略(静态托管 / 镜像构建 / 多阶段编译 / Maven 打包)全部内置,避免了手工写错端口、忘记反向代理、产物目录配错这类高频错误。
- 让迭代变安全:
--dry-run先审阅打包清单再决定上不上,覆盖线上版本需要显式确认,部署后源码自动入仓便于审计回溯,出现问题时status+logs能快速定位是构建失败还是运行崩溃。 - 长期可维护:数据持久化目录声明清晰,容器重建不丢数据;技能版本由官网统一发布,
update走强制校验与差异确认,团队可以放心把这条链路固化进日常交付流程。 - 可量化的能力边界:支持六类项目、单文件最大 50MB、打包总计 1GB、最多 2000 个文件、生产环境普通用户可启用 5 个项目——这些明确数字让使用者可以提前判断方案是否匹配自己的项目规模,而不是踩坑后才发现。
常见问题 FAQ
Q1:怎么安装?装完之后怎么确认已经生效?
把技能包放入 Agent 的技能目录后,执行 python "{skill_dir}/scripts/ztcds.py" version,能同时输出本地版本与官网最新版本即表示脚本可用。随后对 Agent 说「介绍一下」或「怎么用」,能返回平台介绍、支持的项目类型与版本信息,说明技能的「信息速查」通路正常;说「自动部署」则进入部署流程。具体安装入口与技能包下载方式,以官方说明为准。
Q2:收费吗?有限制吗? 技能本身提供的是部署能力,平台另外提供付费增值服务:付费 MySQL(独立实例,适合数据量或并发超出 SQLite 能力、或既有代码强依赖 MySQL 的场景)与短信通知服务(验证码、通知类短信),开通与计费需联系官方渠道(QQ 群 / 邮箱)。除此之外还有明确的使用限制:单文件最大 50MB、打包总计 1GB、最多 2000 个文件;生产环境普通用户可启用项目数为 5 个(管理员豁免,已停用项目不计数);部署有令牌桶限频(容量 40、每分钟回 20,静态扣 1 / 动态扣 4)。任何未在官方文案中出现的价格、SLA 或时限,都不要轻信。
Q3:它和 Vercel、自建服务器比,应该怎么选? 看项目形态与交付节奏。纯前端静态站且团队已深度使用前端托管平台,沿用即可;需要强定制中间件、强合规控制或大规模集群,自建服务器更合适;而「本地已经跑通、想马上给别人访问、还可能是 Python/Go/Java 服务」这类需求,对话式一键部署的摩擦最小——不需要写任何构建配置,服务端自动识别类型。
Q4:为什么部署时报「缺少 data_dir 参数,请升级 skill」或「启用项目上限」?
前者表示客户端技能版本过旧,新版本要求 --data-dir 必传(不需要持久化也要显式传空字符串,PowerShell 下用 --data-dir=),执行 update 升级后重试即可。后者表示生产环境普通用户启用项目数已达上限,报错里会列出当前启用清单,需要你确认停用哪个项目(在控制台停用,或携 Token 调状态接口将对应项目置为停用),腾出名额后再部署——Agent 不会替你决定。
Q5:部署后数据会丢吗?上线失败了怎么排查?
数据是否保留取决于是否声明了持久化目录:用 --data-dir data 声明后,该目录挂载为持久卷并注入 DATA_DIR 环境变量,容器重建数据仍在;静态站点没有容器也没有持久化目录,数据只能放在浏览器侧(localStorage / IndexedDB)。排查顺序建议为:先 status 看容器状态,error/dead 时把错误信息交给用户;running 但访问异常再拉 logs --tail 100(日志接口每秒最多 1 次)。若按 SOP 仍无法解决,可通过官方 QQ 交流群 1130144012 或邮箱 guoyanan@ztaqtec.com 反馈,按「做了什么 + 卡在哪一步 + 报错截图」的格式描述解决最快。