VibeDev-Si/dsh-film ↗★ 0

dsh-film

VibeDev 影视工作台:在 DeepSeek Harness 和 VibeDev 的右侧侧栏里写剧本、排分镜和调度导演台,Agent 用影视工具协同改片 · Film workbench for DeepSeek Harness and VibeDev: screenplay, storyboard canvas and director desk in the right sidebar, with film tools for the agent 适合在 DSH 中进行剧本创作、分镜排版等影视协同任务。

Package
dsh-film
Compatibility
Unverified
Harness peer range
>=0.2.0-rc.2 <0.3.0
Cordis peer range
^4.0.2
Version
0.3.1
License
MIT
Last updated
Oct 6, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:VibeDev-Si/dsh-film

dsh-film · VibeDev 影视工作台

在 DeepSeek Harness 和 VibeDev 里做片:聊天右侧的侧栏多出三个标签——剧本、分镜画布、导演台。左边和 Agent 聊,右边看和改成果。项目是工作区里 film/ 下的普通文件;Agent 用专门的影视工具改剧本和分镜、调度导演台(见下),和右边看到的是同一份。

0.2 仍属预览。分镜画布(含导演台)用的是 VibeDev 的原版前端,跑在插件自己的接口上;剧本标签是按 DSH 界面重写的,文件格式与 VibeDev Studio 的编剧台相同。图片、视频的生成由可选的「VibeDev 账号与模型」插件 @vibedev-si/dsh-vibedev(原 dsh-media)负责。

A film workbench for DeepSeek Harness and VibeDev: three right-sidebar tabs — script, storyboard and director desk — working on one film per workspace, kept as plain files under film/. In this 0.2 preview, the storyboard (with the director desk) is VibeDev's original front end running on the plugin's own API, and the script tab is a DSH-native rewrite. The agent works on the same film through its own film tools.

安装 · Install

需要 DeepSeek Harness 0.2.x,或基于它的 VibeDev(VibeDev Next)。插件以包名 dsh-film 发布在 npm 官方源;中国大陆镜像源(registry.npmmirror.com)从 npm 同步,新版本一般稍后就有。

插件页(推荐):在 VibeDev 或 DeepSeek Harness 的“插件”页点“添加插件”,选“安装第三方插件”(按包名或地址安装),在“包名或地址”里填 dsh-film。展开“安装源”,选“npm 官方源”或“中国大陆镜像源”(国内网络选镜像源通常更快),再点“安装”。

命令行:

  • DeepSeek Harness 桌面版:先完全退出桌面版,再运行下面的命令(dsh 命令在桌面版应用菜单的“管理 dsh 命令…”里安装):

    dsh plugin --profile desktop add dsh-film
    
  • VibeDev(VibeDev Next)桌面版:命令叫 vibedev-app,在应用菜单的“管理 vibedev-app 命令…”里安装。同样先完全退出应用,再运行:

    vibedev-app plugin --profile desktop add dsh-film
    

    VibeDev 的数据在 ~/.vibedev-app,用 dsh 命令装的插件到不了它那里。

  • 用 npm 安装的 dsh 命令行(终端或 Web 版):

    dsh plugin add dsh-film
    

从 GitHub Release 安装:插件页的“包名或地址”和上面的命令也接受 Release 里的 .tgz 直链,例如

https://github.com/VibeDev-Si/dsh-film/releases/download/v0.3.1/dsh-film-0.3.1.tgz

直链不经过安装源,需要本机能直接访问 GitHub(或配好代理)。包约 3 MB。网速很慢时仍可能超过 pnpm 默认的 60 秒下载时限而失败:这时改为按包名从中国大陆镜像源安装;也可以把时限调长:pnpm 11(DeepSeek Harness 和 VibeDev 桌面版自带的就是它)不再从 ~/.npmrc 读取这个设置,要在 pnpm 的全局配置 config.yaml 里加一行 fetchTimeout: 600000(Windows:%LOCALAPPDATA%\pnpm\config\config.yaml;macOS:~/Library/Preferences/pnpm/config.yaml;Linux:~/.config/pnpm/config.yaml),或设环境变量 pnpm_config_fetch_timeout=600000;pnpm 10 及更早的版本则在 ~/.npmrc 里加 fetch-timeout=600000。

刚发布的版本:pnpm 11 默认只安装发布满一天的版本(minimumReleaseAge)。第一个版本不受影响:按包名安装一个此前没有任何版本的包时,pnpm 照样装上它,并把它记进 minimumReleaseAgeExclude。之后每次发布新版本,头一天按包名安装得到的是上一个版本;要马上装新版本,按确切版本安装(包名写成 dsh-film@),或者用上面的 Release 直链。

不能从 Git 仓库安装:不要在插件页填仓库地址 https://github.com/VibeDev-Si/dsh-film,也不要对它运行 dsh plugin add。lib/、client/ 和 apps/(分镜画布和导演台的前端)都是构建产物,不在 git 里,从仓库安装会失败(不会留下装了却用不了的插件)。

「VibeDev 账号与模型」插件是可选的:只有在分镜画布里生成图片和视频才需要另装 @vibedev-si/dsh-vibedev(原 dsh-media,包名 @vibedev-si/dsh-vibedev,装法相同;在侧边栏底部或「设置 → VibeDev 账号」登录 VibeDev,走 VibeDev 网关,按用量从 VibeDev 余额扣费)。不装也能写剧本、排分镜和调度导演台;从 VibeDev 插件中心安装影视工作台时会把它一并装上。分镜画布给每个视频模型列出的模式与该插件实际接受的一致:声明不收首帧的线路(Seedance 2.5(VibeDev)、2.5 30s(VibeDev)、2.5 480p 30s(山海)和三条 lec 线路;Seedance 2.5 特价按次收首帧,仍有图生视频)不显示“图生视频”,接一张图时改走“全能参考”,图作为参考图发送;以前保存成“图生视频”的节点在这些线路上也按全能参考生成。

装好后打开任意会话的右侧侧栏,在“开始”页点“剧本”等入口。会话需要有工作区。第一次打开任一影视标签时,插件自动在工作区里建好影片(片名取工作区文件夹名,画幅 16:9,连同一张空白分镜画布),不用填表。片名和画幅在三个标签共用的标题栏里改:点片名直接改(最多 80 字,回车或点别处保存,Esc 取消);画幅是这部片子的画面比例,分镜画布和导演台都按它来,菜单里有 16:9、9:16、1:1、4:5、21:9、2.39:1。0.1.0 建的 4:3 影片照旧保留并显示为 4:3。

升级:按上面的方法直接安装新版本即可,会覆盖旧版本,不用先卸载。装好后要重启 DeepSeek Harness / VibeDev,新版本才会生效;重启之前,影视工作台顶部会显示提示横幅,分镜画布和导演台也先不打开。影片是工作区里 film/ 下的文件,升级和卸载插件都不会动它们。

Requires DeepSeek Harness 0.2.x or VibeDev (VibeDev Next), which is built on it. The plugin is published to npm as dsh-film; the npmmirror China mirror syncs from npm.

  • Plugin page (recommended): Plugins → Add plugin → install a third-party plugin by package name, enter dsh-film, pick the npm registry or the China mirror under the install source, and install.
  • Command line: for the DeepSeek Harness desktop app, quit it fully, then run dsh plugin --profile desktop add dsh-film (the dsh command is installed from the app menu). VibeDev Next's command is vibedev-app (app menu → Manage vibedev-app Command…): quit the app fully, then run vibedev-app plugin --profile desktop add dsh-film; it keeps its data in ~/.vibedev-app, which dsh does not reach. With the npm dsh CLI, run dsh plugin add dsh-film.
  • GitHub Release: the plugin page and the commands also take the release asset URL, e.g. https://github.com/VibeDev-Si/dsh-film/releases/download/v0.3.1/dsh-film-0.3.1.tgz. It is fetched straight from GitHub, not through a registry. The file is about 3 MB; if a very slow connection still hits pnpm's default 60-second fetch timeout, install by name from the mirror instead, or raise the timeout — pnpm 11 (the one the desktop apps ship) no longer reads it from ~/.npmrc, so add fetchTimeout: 600000 to pnpm's global config.yaml (Windows %LOCALAPPDATA%\pnpm\config\config.yaml, macOS ~/Library/Preferences/pnpm/config.yaml, Linux ~/.config/pnpm/config.yaml) or set pnpm_config_fetch_timeout=600000; pnpm 10 and earlier take fetch-timeout=600000 in ~/.npmrc.
  • A fresh release: pnpm 11 installs only versions published at least a day ago (minimumReleaseAge). The very first version is not held back: installing by name a package with no earlier version installs it and adds it to minimumReleaseAgeExclude. After each later release, an install by name gets the previous version for a day; to get the new one at once, install the exact version (dsh-film@) or use the release URL.
  • Not from the git repository: lib/, client/ and apps/ (the storyboard and director desk front ends) are build outputs that are not in git, so installing from the repository URL fails (it does not leave a plugin that cannot work).
  • The VibeDev account & models plugin is optional: only image and video generation on the storyboard needs @vibedev-si/dsh-vibedev (formerly dsh-media; sign in to VibeDev at the bottom of the sidebar or in Settings → VibeDev account). Everything else works without it; installing the workbench from the VibeDev Plugin Center installs it too. The storyboard lists for each video model the modes that plugin accepts: lanes that declare no first frame (Seedance 2.5 (VibeDev), 2.5 30s (VibeDev), 2.5 480p 30s (山海) and the three lec lanes; Seedance 2.5 特价按次 takes a first frame and keeps image-to-video) offer no image-to-video, and a single image goes as a 全能参考 (multi-reference) reference image instead, also for nodes saved as image-to-video earlier.

Then open the right sidebar of a session that has a workspace and pick a part on its start page. The first time a film tab opens, the plugin creates the film — named after the workspace folder, 16:9, with an empty storyboard — with no form to fill in. Rename it and pick its frame in the header the three tabs share: click the title to edit it (up to 80 characters; Enter or clicking away saves, Esc cancels); the frame is the film's aspect ratio, which the storyboard canvas and the director desk use (16:9, 9:16, 1:1, 4:5, 21:9, 2.39:1). A 4:3 film made by 0.1.0 keeps and shows its frame. To upgrade, install the new version over the old one (no need to uninstall first), then restart DeepSeek Harness / VibeDev: until you do, the workbench shows a banner asking for the restart and does not open the storyboard or the director desk. Your film stays in the workspace's film/ folder either way.

0.3.1 版本说明 · 0.3.1 release note

  • 配合改名后的「VibeDev 账号与模型」插件(@vibedev-si/dsh-vibedev,原 dsh-media):未登录时的提示改为指向侧边栏底部「登录 VibeDev」和「设置 → VibeDev 账号」(dsh-media 的设置页里并没有登录入口);缺少插件时的提示写明新的插件名和包名;Agent 工具说明里的 dsh-media 改称 VibeDev 插件。功能没有变化:分镜画布照旧通过 vibedevMedia 服务生成,新旧两个插件都提供这个服务。

  • For the renamed VibeDev Account & Models plugin (@vibedev-si/dsh-vibedev, formerly dsh-media): the signed-out hint now points to "Sign in to VibeDev" at the bottom of the sidebar and to Settings → VibeDev account (dsh-media's settings page had no sign-in); the missing-plugin hint names the new plugin and package; the agent tool descriptions call it the VibeDev plugin. Nothing else changes: the storyboard still generates through the vibedevMedia service, which both the old and the new plugin provide.

0.3.0 版本说明 · 0.3.0 release note

  • 视频节点上直接剪:裁剪条(入点出点、磁吸、0.1 秒微调)、在播放头切开、“剪辑”面板一次截多段或多点截帧、选中多个视频拼接(编码一致时插件无损拼接,否则在页面里重新编码)、分离音频、音频截取。生成、下载、存素材都自动用裁剪后的片段;参考视频超出所选模型的限制时,提示“截取前 N 秒 / 选择片段”,不会自动提交。

  • 字幕:在视频节点上导入、导出和编辑 SRT(也读 WebVTT 和纯文本),自动断句,实时叠在画面上;裁剪、切开、拼接后字幕跟着对时。不做语音识别。

  • 运镜与相机:视频节点和生成配置节点上选运镜(约 40 种,可组合、可调速度);图片和视频节点上设相机(质感、镜头、焦距、光圈,可选景别和机位)。生成时自动写进提示词,只加一次,“查看最终提示词”能看到实际发送的内容。多角度工具加了预设和景别。

  • 提示词技能与生成预设:自带 23 个中文影视技能(分镜画面、角色/场景/道具设定卡、产品广告镜头、首尾帧衔接、风格统一等),可以挂到节点上、用 @ 引用,或放一个技能节点连到多个生成节点;6 个生成预设,也可以把自己的设置存成预设(存在本机浏览器里)。影视工作台里不再从 GitHub 读取在线提示词库。

  • 生成面板:参数按模型能力显示(图片的方/横/竖与像素、视频的时长、原生音频和各比例像素),生成按钮显示预估价格;预估 ≥ ¥20、模型没有报价或参考视频时长未知时先确认,批量生成按总额确认。影视工作台下每次最多 4 张图。模型按家族分组,首尾帧改为两个固定槽位,可以一键用上一镜的尾帧。

  • 素材与画布:素材按分类和多个标签筛选;粘贴提示词时 @ 引用还原成引用标签;长文本节点可以用滚轮浏览;画布同步了上游 infinite-canvas v0.19(缩略图、拖拽和连线提速、悬停按钮),去掉了继承来的第三方品牌标志和赞助信息。

  • Agent:新增剪切组工具(入出点、切分、出片、拼接、分离音频、读写字幕);生成选项工具能设运镜、相机、提示词技能、技能节点、首尾帧和预设;页面拒绝生成时,原因原样转给 Agent;“帮我写”按运镜、相机和技能来写。

  • 变化:0.1 的旧导入地址 /api/canvas/timelines/:boardId/import 不再可用(返回 404)。在不收首帧的线路上,“图生视频”改走“全能参考”;带尾帧的请求直接拒绝,不扣费。

  • 来源:部分视频、音频和素材交互改编自 tigerowo/infinite-canvas(经作者许可);交互设计参考了 Open AI Canvas,不含其代码。详见包内 apps/canvas/NOTICE。

  • Cut right on video nodes: a trim bar (in/out points, snapping, 0.1 s steps), split at the playhead, the 剪辑 (cut) panel for several segments or frames at once, joining selected videos (losslessly by the plugin when the codecs match, otherwise re-encoded in the page), extracting audio and trimming audio. Generation, download and save-as-asset use the trimmed clip; a reference video over the chosen model's limit offers "trim to the first N s / pick a segment" and never submits by itself.

  • Subtitles: import, export and edit SRT on video nodes (WebVTT and plain text are read too), with automatic line splitting and a live overlay on the picture; cues follow trims, splits and joins. No speech recognition.

  • Camera moves and camera settings: pick camera moves (about 40, combinable, with speed) on video and generation-config nodes, and camera settings (look, lens, focal length, aperture, optional shot size and angle) on image and video nodes. They are added to the prompt at generation time, once; "view final prompt" shows what is sent. The multi-angle tool gains presets and shot sizes.

  • Prompt skills and generation presets: 23 bundled Chinese film skills (storyboard frame, character/scene/prop sheets, product ad shot, first/last frame continuity, consistent style …) can be attached to a node, mentioned with @, or put in a skill node wired to several generation nodes; six generation presets, plus your own presets saved in this browser. The workbench no longer reads the online prompt library from GitHub.

  • Generation panel: settings follow each model's capabilities (square/landscape/portrait with pixel sizes for images; duration, native audio and per-ratio pixels for video), and the generate button shows an estimate; an estimate of ¥20 or more, an unpriced model or a reference of unknown length asks first, and a batch asks once for its total. At most 4 images per run in the workbench. Models are grouped by family; first/last frames are two fixed slots, with one click to reuse the previous shot's last frame.

  • Library and canvas: filter assets by category and several tags; pasted prompts turn @ references back into reference chips; long text nodes scroll with the wheel; the canvas is synced with upstream infinite-canvas v0.19 (thumbnails, faster dragging and edges, hover buttons), and inherited third-party brand marks and sponsor notes are gone.

  • Agent: a new cut group (in/out marks, split, render a clip, join, extract audio, read and write subtitles); the generation-option tools set camera moves, camera settings, prompt skills, skill nodes, first/last frames and presets; when the page refuses a generation, its reason reaches the agent word for word; 帮我写 writes with the chosen camera move, camera settings and skills.

  • Changes: 0.1's old import path /api/canvas/timelines/:boardId/import is gone (404). On lanes without a first frame, image-to-video goes as 全能参考 (multi-reference); a request with a last frame is refused before anything is charged.

  • Sources: some video, audio and library interactions are adapted from tigerowo/infinite-canvas (with the author's permission); the interaction design also draws on Open AI Canvas, whose code is not included. See apps/canvas/NOTICE in the package.

0.2.0 版本说明 · 0.2.0 release note

  • 剪辑台已移除:0.2.0 起影视工作台只有剧本、分镜画布和导演台三个标签,Agent 也不再带剪辑、字幕识别和渲染的工具(常驻工具从 35 个减到 30 个),插件包从约 38 MB 缩到约 3 MB。旧会话里还开着的剪辑台标签会显示 DSH 自带的“不可用”提示,关掉即可。

  • 你的文件都还在:插件不删也不改 0.1 留下的 film/canvas/timeline.json(剪辑和撤销历史)和 film/canvas/renders/(导出的成片);旧成片照旧出现在分镜画布的素材库里,film/.tasks/ 里旧的识别和渲染任务也照旧能读(显示为已中断或已结束)。

  • 模型缓存可以手动删:0.1 剪辑台同意后下载的模型和渲染器在 $DSH_HOME/cache/dsh-film/video-editor-models/(可能有几百 MB)。插件不会自己删它;不再需要时可以手动删掉这个文件夹。

  • 旧设置不影响加载:插件设置里 0.1 的 modelsDir 和 ffmpegPath 两项不再使用,留在配置里也能正常加载。

  • The editing desk is gone: from 0.2.0 the workbench has three tabs (script, storyboard, director desk), the agent no longer carries the cut, recognition and render tools (30 core tools instead of 35), and the package shrinks from about 38 MB to about 3 MB. An editing-desk tab still open from an older session shows DSH's own "unavailable" placeholder; close it.

  • Your files stay: the plugin neither deletes nor changes film/canvas/timeline.json (0.1's cut and its undo history) or film/canvas/renders/ (its exported films); old renders still appear in the storyboard's library, and old recognition and render tasks in film/.tasks/ still read (as interrupted or finished).

  • The model cache can be deleted by hand: the models and the renderer 0.1's editing desk downloaded with your consent are in $DSH_HOME/cache/dsh-film/video-editor-models/ (possibly hundreds of MB). The plugin never deletes it; remove the folder yourself when you no longer need it.

  • Old settings still load: 0.1's modelsDir and ffmpegPath settings are no longer used, and a profile that still holds them loads normally.

文件 · Files

/
  film/film.json             项目信息:片名、画幅(format vibedev.film, version 1)
  film/story/.md         剧本:正文是 Markdown,场次、镜头、人物等记在隐藏的结构标记里
  film/canvas/document.json  分镜画布
  film/canvas/media/         生成、导入的素材
  film/canvas/models/        从工作区导入的模型(GLB、FBX、OBJ)
  film/canvas/imports.json   从工作区导入过的文件(没改过的不再列为可导入)
  media/                     VibeDev 插件(dsh-vibedev)生成的素材;和工作区里其他素材一样,用到时放进 film/

一个工作区放一部片。已有的 film/film.json 不会被覆盖;建影片时已有的画布(哪怕读不出来)不会被覆盖,工作区里原有的画布会沿用它的 id。删除画布留下的记录只挡住被删的那块画布:删掉影片后再建的新片有新 id,照常带上自己的空白画布。工作区在隐藏文件夹(名字以 . 开头)或 .ssh、.aws 等凭据文件夹里时不建片,也不播放、不导入那里的素材。

工作区里 film/ 以外的图片、视频和音频都算素材:分镜画布的素材库会列出它们。隐藏的文件和文件夹、node_modules、构建输出和缓存之类的生成目录、.ssh 等凭据目录和链接不列;文件太多时只读一部分(最多 2000 个素材、12 层目录),并标明列表不完整。用到时插件把文件复制进 film/canvas/media/(文件系统支持时用写时复制的克隆,不占额外空间;从不硬链接,所以之后在别处改了原文件,片里的那份不跟着变),同样的字节只放一份;导入过、之后没改过的文件不再出现在分镜画布的可导入列表里。

Media anywhere in the workspace outside film/ is material: the storyboard's library shows it (hidden entries, node_modules, build and cache folders, credential folders and links are skipped; a very large workspace is listed in part, and the list says so). A file is copied into film/canvas/media/ when used (as a copy-on-write clone where the file system supports it; never a hard link, so editing the original elsewhere later leaves the film's copy as it was), the same bytes only once; an imported file that has not changed since is no longer offered for import by the storyboard. A workspace inside a hidden