在 DeepSeek Harness 里搭一个节点式短剧工作室。从一句话点子出发,直接在无限画布上拿到分镜、配音、字幕齐全的成片。
32.9/100
综合分
4
GitHub 星标
2,864
npm 周下载
—/5
用户评分
数据截至 2026/10/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @ninkch/dsh-infinite-canvasnpm 源 · @ninkch/dsh-infinite-canvas 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@ninkch/dsh-infinite-canvas @ 0.17.4
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 08:17:55
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 149 处,展示前 39 条)
- 读取本地文件index.js:27
VERSION = JSON.parse(readFileSync(path.join(HERE, 'package.json'), 'utf8')).version || VERSION; - 读取本地文件index.js:46
if (existsSync(path.join(HERE, '.git'))) return null; - 读取本地文件index.js:51
const m = JSON.parse(readFileSync(path.join(dir, 'package.json'), 'utf8')); - 读取本地文件index.js:66
for (const entry of readdirSync(runtimes)) { - 读取本地文件index.js:71
try { if (existsSync(c)) return { kind: 'script', node: process.execPath, script: c }; } catch { } - 读取本地文件index.js:73
try { if (existsSync('C:\\Program Files\\nodejs\\pnpm.cmd')) return { kind: 'path', command: 'pnpm' }; } catch { } - 执行外部命令来自配置/变量index.js:96
? spawn(pnpm.node, args, { cwd: PROFILE_DIR, windowsHide: true, env: { ...process.env, ELECTRON_RUN_AS_NODE: '1' } }) - 执行外部命令来自配置/变量index.js:97
: spawn(pnpm.command, args, { cwd: PROFILE_DIR, windowsHide: true, shell: process.platform === 'win32' }); - 删除本地文件index.js:139
try { unlinkSync(target); } catch { } - 删除本地文件index.js:145
try { rmdirSync(target); } catch { } - 写入本地文件index.js:152
mkdirSync(path.dirname(CONFIG_PATH), { recursive: true }); - 写入本地文件index.js:153
writeFileSync(CONFIG_PATH, JSON.stringify(cfg, null, 2) + '\n', 'utf8'); - 写入本地文件index.js:190
mkdirSync(path.dirname(f), { recursive: true }); - 写入本地文件index.js:193
writeFileSync(tmp, JSON.stringify(meta, null, 1), 'utf8'); - 写入本地文件index.js:194
renameSync(tmp, f); - 写入本地文件index.js:238
mkdirSync(root, { recursive: true }); - 删除本地文件index.js:424
if (existsSync(abs)) unlinkSync(abs); - 删除本地文件index.js:442
unlinkSync(abs); - 删除本地文件index.js:445
try { unlinkSync(abs + suffix); } catch { } - 删除本地文件index.js:790
if (existsSync(abs)) { unlinkSync(abs); result.files++; } - 执行外部命令固定命令index.js:1056
collect(spawn('powershell.exe', ['-NoProfile', '-STA', '-ExecutionPolicy', 'Bypass', '-WindowStyle', 'Hidden', '-Command', script], { windowsHide: tru - 执行外部命令固定命令index.js:1058
collect(spawn('osascript', ['-e', 'POSIX path of (choose folder with prompt "选择数据根目录")'], { windowsHide: true })); - 执行外部命令固定命令index.js:1060
collect(spawn('zenity', ['--file-selection', '--directory', '--title=选择数据根目录'], { windowsHide: true })); - 发起网络请求index.js:1426
const upstream = await fetch(url, { - 发起网络请求index.js:2739
const res = await fetch(base + NPM_LATEST_PATH, { - 发起网络请求index.js:2757
const res = await fetch(NPM_REGISTRIES[kind] + NPM_LATEST_PATH, { headers: { accept: 'application/json' }, signal: AbortSignal.timeout(3000) }); - 执行外部命令来自配置/变量index.js:3226
const child = spawn(open, [root], { detached: true, stdio: 'ignore' }); - 发起网络请求client.js:5190
const r = await fetch(url); - 发起网络请求client.js:5220
const r = await fetch('/' + NS + '/api/asset?rel=' + encodeURIComponent(rel), { method: 'POST', body: blob }); - 发起网络请求client.js:5299
const r = await fetch('/' + NS + '/api/asset?rel=' + encodeURIComponent(rel), { method: 'POST', body: rec.blob }); - 发起网络请求client.js:5373
const r = await fetch(url, { method: 'HEAD' }); - 发起网络请求client.js:5445
const r = await fetch('/' + NS + '/api/poster?rel=' + encodeURIComponent(rec.rel), { - 发起网络请求client.js:5514
try { const r = await fetch(url, { method: 'HEAD', cache: 'no-store' }); return !!(r && r.ok); } catch { return false; } - 写入剪贴板client.js:13673
try { await navigator.clipboard.writeText(storyboardAssetText(shots)); toast(T('copiedOk')); } - 写入剪贴板client.js:17589
h('button', { type: 'button', className: 'dshic-dir-mini', 'data-action': 'dir-spec-copy', onClick: () => { try { const txt = JSON.stringify(ENG.compi - 写入剪贴板client.js:20661
if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(text).then(() => toast(okMsg)).catch(() => toast(text)); ret - 读取本地文件skill-pack-loader.js:43
try { st = statSync(abs); } catch { return null; } - 读取本地文件skill-pack-loader.js:46
const data = readFileSync(abs, 'utf8'); - 读取本地文件skill-pack-loader.js:58
if (!existsSync(abs)) throw new Error('缺少 pack.js:' + abs);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 一句话生成短剧成片
- 节点式画布创作
- 分镜配音字幕齐全
最近更新
在 GitHub 查看全部 →v0.19.202026-11-02
· 重点更新
· 素材面板严格按项目隔离。通用项目的素材不再混进每个项目的视图——范围过滤更严格,「通用项目」和「全部」是查看共享素材的明确入口。搜索框(内嵌放大镜)和项目选择器现在共用一行(搜索约占 2/3,选择器约占 1/3),文本素材(剧本/分镜)也获得和媒体卡片一样的项目下拉菜单。
· 画布节点直接采用素材名称。不再有 图片1/视频2/文本1——单条添加和批量添加都按素材命名节点。多余的「图片」素材分类已移除(角色/道具/场景本身就是图片;其余都归入通用,旧版带图片标签的素材在读取时自动归一)。
· 统一导入支持文本。一个导入按钮按文件类型分流:图片/视频照旧,另外 .txt/.md 文件作为剧本文本素材导入(以文件名命名)——百章小说一次导入,再批量放到画布上作为分镜来源。
· 题材卡 v3:选项菜单式机制库,不强制故事走向。全部 37 张题材卡重建,故事机制(冲突、角色、回报钩子、节奏)都是选项菜单——每个库 3 个以上可选方向,可组合、可调整、可跳过。剧本切片开头现在写明原则(条目是可组合的部件;事件和走向属于剧本)和素材优先级(已有小说/剧本文本和设定集优先于题材库;风格和镜头始终生效)。新增山海神话题材卡,附带异兽图志/法术能力/神器地理素材库(只供素材表使用,剧本/分镜永不读取)和七族特效词库。回归门禁禁止所有卡片再出现旧的单方向模板段落和措辞。
完整更新日志:
v0.19.192026-11-01
· 亮点
· Sanbao 图片任务改为异步,可查询。发往 sanbaobeauty.com 的图片请求自动走 POST /openapi/v1/images(任务 id 存在节点上,轮询后再下载,带瞬时重试窗口)。原来兼容 OpenAI 的同步接口在代理处 504,又没有任务 id,图和费用一起丢。本地参考图通过 /openapi/v1/uploads/raw 上传,用扩展参数 uploadKey;也可以显式选「Sanbao 图片任务」模式。通用的兼容 OpenAI 图片提交在 502/503/504/429/408 上多一次瞬时重试。
· FX 驱动分镜契约(fx_motion)。奇幻题材和风格现在解锁专用镜头契约:动感可由特效承载,身体保持不动;FX 镜头用画面状态节拍替代强制的身体节拍;一份奇幻 VFX 词表;每个角色的 FX 签名逐字引用;速度铁律(瞬时事件是跨剪辑的状态差异,绝不在镜头内做动画);以及关键帧优先的提示。开关落在奇幻 / 仙侠修真 / 武侠 / 小镇怪谈题材、四种奇幻风格,以及新的山海神话题材卡(七族 FX 词表)。写实项目不受影响。
· state_jump 镜头和真正的容量检查。同构图状态跳变(灯笼一闪揭示、影子已在那里)现在是合法剪辑,配专用提示词和精确负面词。分镜容量警告按真实镜头数(100)判断,不再按剧本长度,之前每个细节丰富的场景都会误报。
· 每个视频只留一帧尾帧。两条不协调的流水线可能各自为同一视频保存一份「尾帧」素材,一次生成就产出三份尾帧。现在生成路径独占抽取(tailPending 锁),只存一帧(最佳帧或最后一帧),两个链式端口都指向它。
完整更新日志:
v0.19.182026-11-01
· 重点更新
· Sanbao 下载现在会在 CDN 缓存预热期间重试。任务成功只代表转码完成;文件分发过程中,首次 GET 可能返回 HTTP 502,持续 2-3 分钟(最坏约 5 分钟)。下载现在会在 10 分钟窗口内每 10 秒重试一次,每次尝试前先从任务状态刷新签名 URL。401/400 仍立即失败,窗口超时会报告任务 id,方便找回结果。
· 素材预览刷新后不再丢失,也能重新同步到主机。历史清理不再抹掉 assetId(存储层加了保护,清理改为非破坏性),孤立节点每次启动都会重新关联(主流程 2 秒、兜底 10 秒,带 [IC] asset-relink 诊断),主机同步也不再拿 null 覆盖修好的指针。
· 素材页:工具栏合并为一行,分页器支持跳页。全量同步、导入、选择本页、批量添加/删除/清空和分页现在共用项目选择器下方那一行。按钮改为描边样式(透明背景、1px 边框,删除用红色描边)。分页用页码输入框,回车或失焦跳转,非法文本忽略,越界值收敛到范围内,总数显示在右侧。
· 素材支持多选,可批量添加到画布、批量删除。批量添加通过 layoutBatchColumns 把节点放在最右侧节点右边(每列最多 5 个,零重叠),音频会跳过并提示数量;批量删除复用单个素材的删除路径,只弹一次确认。
完整更新日志:
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成无限画布(DeepSeek Harness 版)
DeepSeek Harness 内的节点式短剧工作室。 从一句话创意出发,在无限画布上完成剧本、分镜、角色资产、画面生成、视频生成,直到带转场、字幕、配音的成片。
这是什么?
无限画布是一个 DeepSeek Harness 插件:它在 Web 界面侧边栏加入一个完整的创作工作室。你像导演一样工作——无限画布上的节点连成流水线:剧本、分镜、角色与场景资产、图片生成、视频生成,最终在成片节点完成转场、字幕与配音。
全部本地运行于你的 Harness。生成后端自带或自配均可;未配置任何 API 时有内置演示模式,整条流水线离线可学可测。
用对话驱动画布
画布与对话共享同一个"大脑"。每个节点都是一个 AI 工位,而对话侧就是导演:用自然语言下指令,Agent 替你操作画布工具——批量工作尤其如此。
「创建一个叫《时空邮递员》的项目,先写世界观和设定集。」
「根据设定集写第一集。」→ 剧本节点生成一整集(60–120 秒),每个场景带【场N】分场标记。
「把第一集铺开到场景。」→ 每场一个文本节点 + 分镜表节点自动出现并连线。
「把所有角色、场景、道具的参考图都生成了。」→ 十个图片节点一次建好、逐个生成。
「生成场1的视频。」→ 分镜镜头 + 参考图合成一次多镜头视频调用。
展开完整文档(README 剩余 1 节)
无限画布(DeepSeek Harness 版) DeepSeek Harness 内的节点式短剧工作室。 从一句话创意出发,在无限画布上完成剧本、分镜、角色资产、画面生成、视频生成,直到带转场、字幕、配音的成片。 这是什么? 无限画布是一个 DeepSeek Harness 插件:它在 Web 界面侧边栏加入一个完整的创作工作室。你像导演一样工作——无限画布上的节点连成流水线:剧本、分镜、角色与场景资产、图片生成、视频生成,最终在成片节点完成转场、字幕与配音。 全部本地运行于你的 Harness。生成后端自带或自配均可;未配置任何 API 时有内置演示模式,整条流水线离线可学可测。 用对话驱动画布 画布与对话共享同一个"大脑"。每个节点都是一个 AI 工位,而对话侧就是导演:用自然语言下指令,Agent 替你操作画布工具——批量工作尤其如此。 「创建一个叫《时空邮递员》的项目,先写世界观和设定集。」 「根据设定集写第一集。」→ 剧本节点生成一整集(60–120 秒),每个场景带【场N】分场标记。 「把第一集铺开到场景。」→ 每场一个文本节点 + 分镜表节点自动出现并连线。 「把所有角色、场景、道具的参考图都生成了。」→ 十个图片节点一次建好、逐个生成。 「生成场1的视频。」→ 分镜镜头 + 参考图合成一次多镜头视频调用。 「把第一集交给 FilmCraft 渲染 MP4。」→ FCP7 XML + SRT 落盘,Craft 套件接手。 设定集、整集剧本、分镜拆解、成批参考图——这些批量工作正是 Agent 最快的部分。跑完后你只需要在画布上精修真正在意的那 20%:改提示词、调参考图顺序、重掷某一个镜头、从历史里回退旧结果。 案例:门缝里的字条 用上面的流程完整制作的一集。整集铺开后的画布全览——左侧一列图标添加节点,右侧「项目」面板管理当前项目的画布(第1集 / 第2集),资产与设定集在项目内共享: 画布全览(中文界面) 场1 的镜头组——场1分镜表 → 角色/场景多视图 → 场1视频,节点之间用连线表达参考关系: 场1 分镜与参考图 节点 + 生成面板:点击节点内容区弹出面板,参考图在顶部缩略图条里可拖拽排序,模型/比例/清晰度/张数一行排开: 节点与生成面板 设定集弹窗——世界观、风格基调、角色/场景/道具条目,每条都可以绑定参考资产: 设定集弹窗 资产弹窗——卡片网格,搜索/分类/项目筛选,视频以首帧作为缩略图: 资产弹窗 左上角项目名点开是项目下拉:每行显示「项目名 · 画布名」,可直接就地改名,超过 5 个项目自动分页并可跳页: 项目下拉 设置页签——数据根目录、Craft 状态、技能增强(通用专家)、文本模型与图片/视频/TTS 供应商: 设置页签 快捷键与操作: 快捷键与操作 帮助与反馈: 帮助与反馈 在对话旁边工作 画布不是必须切过去的另一个窗口——它可以作为 Harness 右侧面板里的一个页签打开,左边对话、右边分镜,同时进行:在对话里提要求,右边节点实时跟着变。 1. 打开右侧面板(开始),点击 无限画布 卡片。 2. 画布以页签形式出现在对话右侧,与全屏面板共享同一批项目、节点与资产。 3. 需要更大空间时,把右栏拖宽,或用右栏的全屏按钮。 无限画布作为右侧面板页签 同一时刻只有一个画布实例(共享节点图与生成状态):在右栏打开时若全屏面板也开着,画布会被移动到右栏而不是复制一份——另一侧显示「把画布切换到这里」按钮。 3D 导演台(预演) 同一项目里内置的摆位与预演工作台:把真实 glTF 角色与场景陈设摆进场景,用真实机位取景,再把结果作为图片或视频节点导回画布。 - 内置「媒体创作」预设模式:导演第一视角的引导式创作(选透镜 → 定题材/规格/影调 → 一句话故事 → 分镜 → 生成 → ArtCraft 后期),随插件安装、在模式选择器直接可选;附带的导演工作坊技能一次只问一个问题,带新手走完全程。 - 三种模式:静态预演(影棚外观、暂停摆位)、动态预演(影棚外观 + 时间轴播放)、实时渲染(成片外观:日光、阴影、材质,无辅助线)。 - 资产库:人物、树木、家具、建筑、几何体,以及古街陈设(坡屋顶、摊位、石阶),一个搜索栏全覆盖。 - 直接操作:局部轴移动/旋转/缩放操作轴、框选、Alt + 拖轴端方块 = 等比缩放、W/A/S/D + Q/E 键盘漫游(按住 Shift 加速 4 倍)。 - 分镜与时间轴:分镜轨、单镜起止、机位关键帧、缓动曲线、标记、循环播放。 - 机位与光学:FOV、焦段、传感器尺寸、滚筒角联动一致;景别预设直接显示当前构图占比。 - 导出:PNG 截图或 MP4/WebM 预演视频,直接落成画布上的图片/视频节点。 静态预演——影棚视口、对象属性与快捷键列表 动态预演——时间轴、分镜轨与机位关键帧 实时渲染——日光、真实阴影与太阳参数 资产与画布共享:你已经生成的角色、树木、家具、建筑,可以直接拿来当预演场景的摆件。 完整操作(资产页签、操作轴、快捷键表、分镜、导出):操作手册 → 3D 导演台。 技能页:导演 / 题材 / 规格 / 影调 右栏第三个页签「技能」决定整部片怎么拍。它不是提示词模板,而是会被自动拼进每一次剧本、分镜、图片、视频生成的硬约束。页面里没有任何下拉框,全部是图标瓦片,点一下选中、再点一下取消。 四层各管什么 | 层 | 数量 | 决定 | 为什么单独一层 | | 导演 | 45 | 镜头语言、灯光色彩、剪辑节奏、风格参数 | 它同时约束分镜的机位字段、图片关键帧、视频运镜——整部片最不可替换的决策 | | 题材 | 叙事 36 / 行业 10 | 压力机制、观众回报、场面颗粒、集尾钩子 | 同一个「复仇打脸」,王家卫拍是抽帧暧昧,徐克拍是凌厉升格;混进导演层会互相污染 | | 规格 | 8 | 结构块、平均镜长下限、节奏、质量档 | 它决定「这是短剧、电影质感还是商业片」,与题材正交 | | 影调 | 9 | 成像底层、材质、渲染质感 | 2D 厚涂 / 国漫 3D / 游戏 CG 是成像域,不是导演;塞进导演会让「怎么剪」和「长什么样」打架 | 导演(45 位):华语 16(王家卫、张艺谋、侯孝贤、毕赣、徐克、路阳、袁和平、乌尔善、李安、杨德昌、贾樟柯、姜文、杜琪峰、宁浩、周星驰、王晶)· 日韩 7(黑泽明、朴赞郁、奉俊昊、是枝裕和、李沧东、宫崎骏、新海诚)· 欧美 22(斯皮尔伯格、希区柯克、库布里克、斯科塞斯、费里尼、伯格曼、塔可夫斯基、诺兰、维伦纽瓦、芬奇、雷弗恩、马力克、迈克尔·曼、科恩兄弟、雷德利·斯科特、大卫·林奇、阿方索·卡隆、伊纳里图、韦斯·安德森、乔治·米勒、阿莫多瓦、盖·里奇)。 规格(8 种):短剧 · 电影质感 · 商业片 · 纪实 · 音乐视频 · 预告 · 解说 · 访谈。 - 短剧是单集 60–180 秒的自足单元,同时覆盖单集与连续多集——一部剧就是一集一集往下做,不需要单独的「连续剧」规格。 - 电影质感是质感规格,不是长片规格:它约束每一镜怎么做才像电影(ASL 1.5 秒以上、24 帧、动机光、真材质),成片长度档只到 30–300 秒。原因很实际——AI 视频模型单次只出 3–8 秒(本插件默认 5 秒),所谓「一部 120 分钟的电影」只能是几百上千个片段接起来。 - 商业片把「宣传片 / 广告片 / 产品片」合成一张卡——它们是相近需求,靠段位配比内部分流。 画幅不在技能里决定 横屏、竖屏、方屏、宽银幕都能用任何规格——画幅与分辨率是视频节点生成时的选项。短剧竖屏投放很常见,但那是发行选择,不是创作规格;短剧同样可以横屏、可以按电影标准拍。 注入到哪 | 节点 / 能力 | 拿到的内容 | | 剧本节点 | 题材卡 + 导演的叙事/节奏/表演节 + 规格的结构块 | | 分镜表节点 | 导演的镜头语言/灯光/风格参数/拍摄清单 + 规格 + 运镜词典 | | 图片节点 | 「风格增强锁」:风格参数 + 影调成像材质 + 题材颗粒 + 三份负向词 | | 视频节点 | 同上(有上游分镜表时也追加,不打断结构化字段) | | 角色/场景/道具设定图 | 导演的灯光色彩 + 影调卡 | | 设定集 AI 草稿 | 同剧本 | 四层全空时什么都不注入——老项目行为完全不变。 三个按钮 - 预览:显示当前配置注入到剧本的切片全文与字节数 - 写设定集:把风格摘要写进设定集的「风格基调」,对话侧也能读到 - 清空:四层归零,生成行为回到默认 对话侧同样生效 配置存在项目文档里(与设定集同一套同步机制),所以对话侧读得到、面板上也看得到。在对话里说「用王家卫的风格拍这段」,Agent 会调 canvas_list_skills 看有哪些技能、再调 canvas_skill_pack 取对应切片——和画布自生成用的是同一套口径。 完整说明见 操作手册 → 技能页。 工作方式 flowchart LR A[剧本节点一集 · 场景标记] --> B[铺开到场景每场 文本+分镜表] B --> C[每场多镜头视频镜头+参考图一次生成] C --> D[尾帧串联场N尾帧 → 场N+1首帧] A --> E[参考图生成角色 · 场景 · 道具] E --> C D --> F[成片 / FilmCraft转场 · 字幕 · 配音] 核心亮点 角色一致,跨镜跨集 项目级设定集(风格基调 + 角色/场景/道具卡)注入每一次 AI 调用,服装、场景、道具跨镜跨集保持一致。提示词里的 @名称 自动携带该实体的设定描述与参考资产。每次分镜生成后一致性检查会标出未登记实体,Agent 自动补全。 参考图真正绑定 参考图以有序、可见的列表连线([图1] 角色:陈拾、[图2] 场景:褶皱巷),这个顺序就是到达模型的顺序。多角色画面不再含糊;Volcano Seedance 的原生 [图N] 约定端到端支持(首帧、最多 4 张参考图、官方任务 API)。 从分镜到可看成片 一个分镜表 = 一次多镜头视频生成。 全部镜头(顺序 + 每镜时长)合成一条提示词,视频模型一次调用渲染整段——硬切由模型完成,没有逐镜拼接的接缝。每场 ≤ 15 秒,多场之间用尾帧 → 首帧串联。成片节点按顺序拼接片段——交叉溶解或黑场转场、烧录字幕、原声与 TTS 配音混音——即时导出预览版;接 ArtCraft(FilmCraft)则写出 FCP7 XML 时间线 + SRT 渲染真正的 MP4。 编辑器级画布 平移缩放、框选、对齐参考线、可折叠分组、小地图、60 步撤销重做、节点媒体历史(最近 8 次)、蒙版局部重绘、全要素中键——画布应该像剪辑软件,不像聊天侧栏。 模型自带或自配 文本模型直接来自 Harness(无额外 Key)。图片/视频后端采用供应商 + 模型两级结构:供应商配一次(地址、Key、可选的厂商专属扩展参数 JSON),下面挂任意多个模型 ID,点 ★ 星标作为默认路由。视频端点自动适配——OpenAI 风格任务接口、Seedance 原生 content[]、Sora 风格 /v1/videos 由自动降级链覆盖,分辨率/比例/首帧/参考图按厂商惯例映射,超大参考图发送前自动压缩。所有网关调用经本地 Harness 宿主进程转发(无浏览器 CORS 限制)。什么都没配?演示模式本地合成占位图与动画视频,整条流水线离线可测。 便携数据根目录 设置一次数据根目录,所有数据按项目名落盘:节点与设定集在 project.json,资产索引在 assets.json,媒体在 image/ video/ audio/ text/,Craft 后期产物在 craft/。换电脑 = 复制文件夹:新机器把数据根目录指过去,所有项目(资产、设定集、媒体)自动识别——另有「从数据根导入」一键合并。把目录放进网盘同步文件夹,多台机器自动保持一致。 快速开始 1. 安装插件(bundle 目录)并重启一次 Harness。 2. 点侧边栏 Infinite Canvas,在设置里配好数据根目录。 3. 对话:「创建一个项目叫〈你的创意〉,先写世界观和设定集。」 4. 「写第一集。」 → 剧本节点生成带【场N】标记的一集 → 点铺开到场景(或让 Agent 做),得到每场的文本+分镜表组合。 5. 「把所有角色、场景、道具的参考图生成了。」 → 一批命名规范、与设定集一致的资产图。 6. 「生成场1的视频。」 → 分镜镜头 + 参考图合成一次多镜头调用;场与场之间尾帧串联。 7. 打开成片节点导出预览版,或交给 FilmCraft 渲染正式 MP4。 未配置任何生成 API 时,全部步骤以演示模式运行——整条流水线离线可用。 完整的图文教程(含截图、模型配置与数据目录迁移)见中文操作手册。 生成后端 | 类型 | 协议 | 说明 | | 文本 | Harness LLM 服务 | 整集剧本与分镜拆解;可选任意已配置模型,或按节点覆盖 | | 图片 | OpenAI 兼容 /images/generations,多参考走 /images/edits | 供应商+模型列表(星标默认);尺寸(1K/2K/4K)× 比例;扩展参数 JSON;edits+PNG 蒙版局部重绘 | | 视频 | OpenAI 风格任务接口、Seedance 原生 content[]、Sora 风格 /v1/videos——自动降级链 | 每场一集(≤15s)、480P/720P/1080P、比例、首帧、多参考图(自动压缩)、audios[] 声音参考 | | TTS | OpenAI 兼容 /audio/speech | 每镜配音混入成片 | 所有网关调用由本地 Harness 宿主进程转发(无浏览器 CORS 限制)——任何 OpenAI 风格的厂商端点都可用。 ArtCraft 桥接 安装姊妹插件 dsh-artcraft 后,画布可与本地 Craft 家族(PhotoCraft、FilmCraft、EffectCraft、LightCraft、VectorCraft、DesignCraft 等 12 个)经同源 HTTP 协作。把 ArtCraft 的数据根目录指向与画布相同的位置,全部后期产物落在 projects/<项目>/craft/:资产按项目同步、图片支持 PhotoCraft 无头调色(单个/批量)、成片导出 FCP7 XML + SRT 交 FilmCraft 渲染 MP4。设置面板的状态卡为每个 Craft 显示一盏状态灯与 n/n 就绪摘要。 发布(维护者) 维护者手册(红线、分支模型、版本规则)见 RELEASING.md;操作细节见 docs/release.md;已发布变更见 CHANGELOG.md——GitHub Release 正文一律英文,从 changelog 复制。 发布走 npm Trusted Publishing(OIDC)——任何地方都不存在 npm 令牌: - 发布流程:dev 测试通过并获批准 → 合并进 main → 创建 GitHub Release(tag v0.17.11,…)→ Actions 自动发布该版本。 - publish.yml 工作流内置守卫:release 提交必须在 main 上、tag 必须与 package.json 一致,然后带 provenance 徽章发布。 数据与隐私 - 画布文档、项目与设置存于浏览器 localStorage(dsh-ic:*);资产元数据存于 IndexedDB(dsh-infinite-canvas);设置数据根目录后媒体文件落盘(按项目名分目录,插件后端带 HTTP Range 支持视频拖动)。 - AI 文本生成经 Harness 宿主进程(用你已配置的模型,无额外 Key)。 - 图片/视频/TTS 网关调用由本地 Harness 宿主进程转发(规避浏览器 CORS);你的端点与 Key 都留在本地。 - 插件自身不向任何第三方上传数据。 环境与限制 - DeepSeek Harness 0.2.0-rc.2+;演示模式成片导出需要 MediaRecorder(Chromium)。 - 预览成片为实时录制 WebM;多轨剪辑的 MP4 母版请配合 ArtCraft FilmCraft 或任意 NLE。 - 图片 edits/蒙版重绘需要模型支持该端点(如 gpt-image-1)。 - 宿主侧插件更新需重启一次 Harness;Web 半区热加载。 许可证 Apache-2.0
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
NINKCH/dsh-infinite_canvas
在 DeepSeek Harness 里搭一个节点式短剧工作室。从一句话点子出发,直接在无限画布上拿到分镜、配音、字幕齐全的成片。
相关插件 · 其他
模型破甲清洗YuJunZhiXue/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,148已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,266已汉化DSH
70.7
这是你的仓库?认领条目