在阿里云 ECS 上跑演示稿工作区,要补的三件事
CreatPPT 在本机跑很省事:一条 npx 出工作区,浏览器里改完点导出。搬到 ECS 上形状就变了——机器一般没有桌面,浏览器在你自己电脑上,生成、审核、导出被拆到三处。要补的只有三件事:版本对不对、交付物是什么、访问边界划在哪。
先把 Node 对上:镜像里的版本要自己验
engines.node 写的是 >=20,而且是硬条件:低于 20 的运行时会在 CLI 启动阶段停下,不会给你「降级也能跑」的提示。ECS 上常见的麻烦是公共镜像里带的 Node 由镜像维护方定版本,跟你什么时候装插件无关,别假设它够用。
node -v
主版本号小于 20 就换掉,nvm 或发行版包管理装 20 或 22 都行。npx 随 npm 提供,版本对上后不用再全局装 CLI。这个包不大——star 171、周下载 11、运行时依赖只有 commander——但版本条件写在 manifest 里,绕不过去。
装 bundle:多的是一个工具,不是一套界面
dsh plugin --profile web add @seekskyworld/creatppt
装完 DSH 里只多一个模型可调用的工具 create_presentation。给它标题或一段 brief,它跑同一条管线:intake 加 planner 产出 DeckSpec v2 与素材,再过 validate、quality、create,返回交付目录、工作区 URL、页数、媒体摘要和告警。自己先跑一遍 validate --showcase 再看结果,能省掉被 quality gate 打回的往返。
两件事提前说清。它不额外加确认流程,也没有原生 Harness UI,「装完点哪个按钮」没有答案——入口是模型调用,出口是响应里的 URL。另外 README 写明 DSH 是技术预览,发新版 bundle 前要对兼容版本做过测试;本站实装验证跑在 dsh 0.2.1-rc.2 上,档位 L5 运行时冒烟。
交付物是工作区,不是 pptx
这是 ECS 上最容易搞错的一环,因为服务端和人的位置分开了。create 只写两样东西:deck.json 和 assets/。返回的 JSON 带一个不变量 pptxGenerated: false,它是字面意思——生成阶段没有 PPTX。
PPTX 由人在浏览器里点 Export PPT 才产出,导出器在浏览器端跑,产出原生文本、图片、形状、线条与图表。所以「Agent 说已经生成 PPTX」一定是错的,不管它说得多笃定。
Web 与 PPTX 是两个渲染器,共用 DeckSpec 与几何 token,保证的是可编辑结构与一致的视觉语言,不是跨 Office 版本的像素一致。想把可用插件放在一起对照,同类插件的中文清单 里有按场景分的说明。
访问边界:默认只听 127.0.0.1
serve 默认监听 127.0.0.1。在本机这是方便,在 ECS 上意味着你在自己电脑打不开那个 URL——不是配错,是设计如此。
正确的做法是 SSH 隧道,不是把端口放开:
npx @seekskyworld/creatppt@latest serve ./delivery --host 127.0.0.1 --port auto --background --json
ssh -L 4173:127.0.0.1:4173 you@ecs-host
--port auto 在可用端口里挑一个,--background 退到后台并把 PID 写进 JSON,你从 JSON 读真实端口再拼隧道。安全组只留必要端口,SSH 那一个就够;别为省一条隧道把工作区端口对 0.0.0.0 开放,那个服务没有面向公网的鉴权设计。
起完先探活:
npx @seekskyworld/creatppt@latest health ./delivery --json
health 只确认进程还在、交付目录还能读,不复核页面内容,别把它当验收。
出网只影响两处:npm 拉包,以及你自己显式给的图。starter 图压缩成 JPEG 随包解包,不依赖出网,内网机器上生成不会因为拿不到图失败。
磁盘要留量。每个模板自带六张 starter 图,自动填充只从所选模板池按稳定顺序取、同一份 deck 不重复插同一张,但其余图仍会复制进 assets/,好让后续切模板时本地有图。所以交付目录体积跟模板池总量相关,不是跟页内用图数相关;media.total 是连 starter 库一起复制的总数,页内真实用图看 automatic / manual / uniqueSources。
四个会真的绊住你的坑
坑一 · 生成完了,翻遍目录找不到 pptx
create 的产物只有 deck.json 与 assets/,PPTX 必须人在浏览器里点 Export PPT 才出现。Agent 报告「已生成 PPTX」时,看 JSON 里的 pptxGenerated,它是不变量,不是状态位。
坑二 · 审核到一半点了 stop,工作区 URL 就没了
stop 之后那个 URL 立即失效,刷新只会连接失败。要等人工审核与导出都做完再 stop;压测脚本按时间关进程,很容易把正在看的人踢出去。
坑三 · 镜像里的 Node 不到 20,CLI 停在启动阶段
症状是命令没跑起来就退出,没有 deck、没有 URL。先用 node -v 确认主版本,不满足就换运行时,别去动 --force 之类的东西。
坑四 · 交付目录建在了 CreatPPT 的源码 checkout 里
README 要求 Agent 在 checkout 之外的目录工作。混在一起时,交付目录会和源码、构建缓存互相污染,出问题分不清是构建产物还是生成结果,--out 给独立路径。
总结
ECS 上的顺序是「版本对上 → 装 bundle → validate → create → 隧道开工作区 → 人工导出 → stop」,三件事补完剩下的都是照做;同类插件的中文清单与安装形态,可以对着 DeepSeek Harness Hub 插件清单 逐项看。
适合与不适合
适合:需要把演示稿生成放到常开服务器上、多人轮流审核的人;已经在用 dsh、希望生成入口走模型调用而不是再学一套界面的人;内网机器上出稿、对出网有顾虑的场景。
不适合:期待一条命令直接吐出 pptx 的人,最后一步必须由人在浏览器里点;需要服务端直接对公网提供编辑界面的人,serve 默认只听本机,安全模型不是按多租户设计的。
标签:CreatPPT、DeepSeek Harness、演示稿工作区、阿里云 ECS
本文由 DeepSeek Harness Hub 自动整理,数据来源于插件详情页。