dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Oh Story DSH
小说、短剧、互动游戏与视频解说创作工作台,装进 DeepSeek Harness。
项目主页 · 安装 · 看看它的输出 · English
oh-story-dsh 是 DeepSeek Harness(DSH)的社区插件,与 DeepSeek 无隶属关系。装上它,DSH Web 里多出四个创作工作台:小说、短剧、游戏、视频解说。Agent、会话、模型、权限审批和 Chat 仍然全是 DSH 原生的,插件只添加创作 Skills、专业 Roles、项目文件协议和工作台界面,不带第二套 Agent 运行时或项目数据库。
以下清单对应当前源码;已发布安装包的上游提交固定在该版本的 manifest 中,未发布更新见 Unreleased。
工作台 · 上游能力(固定版本,随插件打包) · 主要入口 小说 · Oh Story 0.9.0 · 13 Skills · 7 Roles · /story、/story-long-write、/story-review 短剧 · Drama Skills 0.9.0 · 11 Skills · /short-drama、/short-drama-write、/short-drama-storyboard、/short-drama-edit 游戏 · NovelToGame 0.6.0 · 7 Skills · 《金瓶梅》ADV 可玩示例(18+) · /novel-to-game quick、/game-build、/game-qa 视频 · video-recap-skills 0.6.2 · 7 Skills(3 个用户入口) · /video-recap、/video-script、/video-reference
最新版本 v0.1.18(2026-10-19)。默认安装固定使用 DeepSeek Harness0.2.1-rc.2;仍支持更早的0.2.0-rc.2。变更见 CHANGELOG.md 与 Releases;升级步骤见常见问题「升级到新版本后要做什么」。
下面四段动图都是打包后的插件装进官方 DSH Web 的真实画面,取自原生集成测试的录制;右侧 Chat、模型、用量和耗时都是 DSH 自己的。
文件树、编辑器、Chat 三栏。Agent 写文件时编辑器跟着它走,点 Chat 里的文件名就能在编辑器打开。覆盖长篇、短篇、选题、扫榜、拆文、导入、审稿、去 AI 味与封面。
每集按需维护最多五份核心创作 Markdown:剧本.md、视觉设定.md、分镜.md、图片提示词.md、视频提示词.md。「生产」视图把它们投影成镜头板、素材板、任务/版本、成片顺序和可平移缩放的无限关系画布,并就地指出重复 ID、悬空引用与格式错误。生图、生视频、配音、生音乐的任务先预览、你确认后才调用供应商 API;成片由 /short-drama-edit 按《剪辑单.md》渲染到 剧集//制作成果/成片/。
左侧实时试玩、右侧 Chat。/novel-to-game quick 的产物写进 game-adaptations//,build/app/index.html 就绪后自动进入项目列表,可刷新、全屏、切换项目。游戏在独立 origin 与 iframe sandbox 里运行。随包的《金瓶梅 · 风月总账》ADV 示例不用 API Key 也能玩:还没有作品时点欢迎卡上的「先玩内置示例」,之后在「游戏项目」下拉的「内置示例」里选择。示例改编自古典小说,含成人内容(18+),进入前会确认年龄。
左侧预览、右侧 Chat。项目放在 video-recaps//:原片在 sources/,工作产物在 work/,交付在 outputs/。可在原片、剪后片、成片之间切换,查看阶段提示、运行清单与质检产物;视频经 HTTP Range 流式预览。还没有视频项目时,空状态先列出运行环境:Python 3.10+、ffmpeg/ffprobe 与 MIMO_API_KEY 是否就绪。
各工作台的边界与协议见架构说明。
需要 Node.js 24+。安装命令会临时提供 pnpm,只装了 Node.js 的机器也能执行:
npx -y --package pnpm@11.7.0 --package @deepseek-ai/dsh@0.2.1-rc.2 dsh plugin --profile web add @oh-story/dsh@0.1.18 &&
npx -y @deepseek-ai/dsh@0.2.1-rc.2 web保持终端运行,浏览器默认自动打开;没有自动打开就复制终端打印的完整 http://127.0.0.1:3080/?token=... 链接访问,首次认证需要链接里的 token。关闭终端会停止服务。安装与启动请使用同一个 dsh 版本。本页默认命令固定使用 npm latest 的 0.2.1-rc.2;本插件接受 >=0.2.0-rc.2 =0.2.1-alpha.1 <0.2.2-0。仍在用 0.2.0-rc.2 时,安装与启动两条命令都要换成 @deepseek-ai/dsh@0.2.0-rc.2;不要把两个宿主版本混用。DSH 会在安装与加载时检查版本,不匹配时给出明确提示(dsh plugin allow-version 可自担风险放行)。
开始 AI 创作前,在 DSH 的「设置 → 模型」中添加 Provider 并填入 API Key,或在启动前设置环境变量 DEEPSEEK_API_KEY。只查看已有作品可在首次引导中选择「稍后配置 / Configure later」。
从 GitHub Release 安装预构建包
GitHub Release 中的预构建包经过同一套测试:
npx -y --package pnpm@11.7.0 --package @deepseek-ai/dsh@0.2.1-rc.2 dsh plugin --profile web add https://github.com/zenstory-ai/oh-story-dsh/releases/download/v0.1.18/oh-story-dsh-0.1.18.tgz &&
npx -y @deepseek-ai/dsh@0.2.1-rc.2 web视频工作台的宿主机依赖
视频流水线还需要宿主机安装 Python 3.10+ 与 ffmpeg/ffprobe(Debian/Ubuntu sudo apt install ffmpeg)。带 libass subtitles 滤镜时会烧录字幕;未提供该滤镜的构建交付外部 SRT,也可另装带 libass 的构建。视频解说另用 MIMO_API_KEY(Fish Audio TTS 另需 FISH_API_KEY)。Key 与 PATH 在启动 DSH 的终端里设置,重启 DSH 后生效。
配置媒体生成 API(短剧生产需要)
DeepSeek 负责写剧本、分镜和提示词;生图、生视频、配音、生音乐由短剧「生产」交给 short-drama-produce Skill,再调用下面的供应商 API 完成。生产与检查脚本需要宿主机上的 Python 3.9+。Key 在启动 DSH 之前写入宿主机环境变量:
能力 · 供应商 · 必需环境变量 · 可选 图片 · GPT Image 2 · OPENAI_API_KEY · OPENAI_BASE_URL 视频 · Seedance(火山方舟) · ARK_API_KEY、SEEDANCE_MODEL · SEEDANCE_BASE_URL、SEEDANCE_ALLOWED_RATIOS、SEEDANCE_MIN_DURATION/SEEDANCE_MAX_DURATION 视频 · MiniMax H3 · MINIMAX_API_KEY、MINIMAX_VIDEO_MODEL、MINIMAX_VIDEO_RESOLUTIONS、MINIMAX_VIDEO_MIN_DURATION/MINIMAX_VIDEO_MAX_DURATION · MINIMAX_VIDEO_BASE_URL、MINIMAX_VIDEO_RATIOS 语音 · MiniMax Speech · MINIMAX_API_KEY · MINIMAX_BASE_URL 音乐 · MiniMax Music · MINIMAX_API_KEY · MINIMAX_BASE_URL
export OPENAI_API_KEY=... # 图片
export ARK_API_KEY=... SEEDANCE_MODEL=... # 视频,模型/Endpoint ID 以账号开通的为准
npx -y @deepseek-ai/dsh@0.2.1-rc.2 web只配置用得到的那几个即可:没有视频 Key 仍然可以写分镜、生成关键帧图片。「生产」视图顶部会显示每个供应商是否已配置、缺哪个变量。插件启动时会把这五个内置 adapter 登记到一份不含凭据的配置文件(默认在系统临时目录下仅当前用户可读写的 oh-story-dsh-/ 里,「生成环境」条会显示完整路径),Agent 运行 production_tool.py run 时直接引用它;自己写 adapter 或改超时,就把文件路径写进 OH_STORY_DRAMA_ADAPTER_CONFIG。每个供应商的参数、分辨率与时长约束见随包的 short-drama-produce/references/providers/。小说封面使用当前 Preset 里可见的图片生成工具。
声音参考需要额外显式配置:自动生成的通用 profile 不声明 reference_audio,因为环境变量里的具体模型未必支持声音输入;只有确认所选模型支持后,才在项目外的自定义 adapter 配置里为该 profile 声明 reference_roles(包含 reference_audio),并用 OH_STORY_DRAMA_ADAPTER_CONFIG 指向它。未声明时会在付费提交前拒绝,不会静默丢掉声音。
装进独立 profile,按需启动
插件装进哪个 profile,那个 profile 的每个 Session 就都会加载创作 Skills。想让原版 web 保持干净,就把插件装进独立 profile:
npx -y --package pnpm@11.7.0 --package @deepseek-ai/dsh@0.2.1-rc.2 dsh plugin --profile story add @oh-story/dsh@0.1.18新 profile 默认没有界面。编辑 ~/.dsh/profiles/story/package.json,把 dsh.profile.bundles 改成:
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"@oh-story/dsh"
]@deepseek-ai/dsh-web-app 是 DSH 自带的 Web 界面包,需要在创作插件之前加载。之后两个 profile 用不同端口可以同时运行,模型、凭据、workspace 与历史会话由 DSH 统一保存:
npx -y @deepseek-ai/dsh@0.2.1-rc.2 web # 原版 DSH
npx -y @deepseek-ai/dsh@0.2.1-rc.2 --profile story --port 3081 # 创作工作台首次启动时,DSH 会在「文稿」目录下自动建一个 默认工作区 / Default workspace(deepseek-harness/default-workspace),并直接打开其中的空白会话,Oh Story 的使用引导显示在会话首页。要在自己的作品目录里创作,点击左侧 Workspaces 旁的 添加工作区 / Add workspace,选择存放作品的文件夹,再在下方 选择工作区 / Choose workspace 中选中该目录;创作文件会写进当前会话所属的工作区。目录里已有创作项目时,会显示「小说 / 短剧 / 游戏 / 视频」四个工作台标签;空目录保留 DSH 原生 Chat,输入 /story、/short-drama、/novel-to-game quick 或 /video-recap 开始,Agent 写出第一个创作文件后工作台自动出现。
下面的请求复制改一改就能用,替换方括号内容后发送。
开一本新书:
我想开一部 [类型/题材] 新书。先从我提供的材料中分开已确定事实与待决问题;只规划一个有边界的开篇,交付核心冲突、视角限制、前三章变化和待决项。不要自动写正文;题材取舍、角色动机和长期方向留给我确认。
已有稿件,第一轮只讨论续写方案:
我想规划这部自有或已获授权小说的下一场戏。只阅读当前 workspace 中我点名的 [章节文件] 和 [设定文件];[末尾片段] 尚未写完,不要把它算成完整章节。先列出与下一场戏有关的已知事实、视角人物目前知道的事,以及尚缺或冲突的信息。再给两个续写方向,分别说明人物要什么、阻力是什么、行动造成什么可见变化;不要提前揭示 [秘密],停在 [场景边界]。本轮只在 Chat 回复,不创建、移动或改写任何文件。
短剧、游戏、视频解说,直接说目标:
用 /short-drama 初始化一个都市打脸题材的短剧项目,竖屏 9:16,只写第 1 集,先不生成任何媒体。
用 /novel-to-game quick 把 [小说文件] 改编成可玩游戏,平台、类型和引擎由你推荐,首个构建控制在 15 分钟以内。
给 /path/to/video.mp4 做一个 3 分钟中文解说成片,保留关键原声,字幕烧进画面。节选自随包示例工程(同步自 oh-story-claudecode 的 demo 与 drama-skills 的公开样例),省略处以「……」标出。
写第 21 章之前,追踪/上下文.md 记录了当前位置与风险;继续前先用它定位,再按写作流程读取本章细纲、相关设定与必要原文:
## 当前位置
- 当前章:第20章
- 场景:火箭军文工团,钟嘉嘉送来老兵书法礼后
……
## 活跃伏笔
- F016|钟嘉嘉并非普通军报实习生,她的军方家庭背景仍未完全公开|埋第7章|回收章未定|高
……
## 连贯性风险
- 第21章尚无细纲,不能直接写正文。最后一行是硬门禁。没有细纲就写正文,写入会被 DSH 的 tools/pre-execute 钩子拒绝:
Oh Story 阻止写入第 21 章:未找到对应的 大纲/细纲_第021章*.md。先按 story-long-write 单章流程补建细纲再写正文。视觉设定.md 给跨镜不变的造型上锁,锁面能原样贴进提示词;分镜.md 只写起点、唯一动作、终点和依据;视频提示词.md 把两点之间的动作写成模型能执行的英文:
- 连续性锁:LOCK-JIANGCHEN-DRESS《江晨松枝绿常服》(镜头:SHOT-EP001-002、SHOT-EP001-003、SHOT-EP001-007……;图片提示词项:IMG-JIANGCHEN-SHEET)· 锁面:pine-green lapel service jacket## SHOT-EP001-002 · 四个号,四个粉
- 来源:EP001-SC001
- 时长:4s
- 起点:周薄森面对笔记本坐得笔直,右手搭在茶杯旁;江晨双手掌心朝下撑在玻璃桌沿,眼神涣散。
- 唯一动作:哄笑声滚过来,周薄森下颌收紧、腰背又挺直一分;江晨眨了一下眼,眼神猛地聚拢。
- 终点:画面停在周薄森绷紧的脸与屏幕冷光;江晨仍撑着桌沿,留在画右边缘。
- 视觉依据:《视觉设定.md》·人物「江晨」……;道具「玻璃泡茶杯」(控制:双层玻璃杯身、沉底茶叶)。## MOTION-EP001-002 · 四个号,四个粉
> …… The seated officer's jaw tightens and his back straightens a little more.
> The young man blinks once and his eyes snap into focus. ……原文:剧本.md · 视觉设定.md · 分镜.md · 图片提示词.md · 视频提示词.md。
把这集样例故意改坏三处(来源指向不存在的场景、视频提示词指向不存在的镜头、图片提示词 ID 重复),「生产」视图报的是原因和行号:
SHOT-EP001-002 的来源 EP001-SC009 在剧本中不存在。 分镜.md:25
MOTION-EP001-003 指向不存在的 SHOT-EP001-030。 视频提示词.md:33
IMG-JIANGCHEN-SHEET 在当前集内重复,后出现的条目会遮蔽前一条。 图片提示词.md:3《金瓶梅 · 风月总账》的完整结果见 qa/verification.json。下面保留六项状态与体验限制的简化示意,限制文字并非当前记录的逐字引用:
"checks": { "launch": "PASS", "render": "PASS", "input": "PASS", "coreLoop": "PASS", "outcome": "PASS", "restart": "PASS" },
"limitations": [ ……
{ "scope": "体验判断", "reason": "自动化只证明当前候选可启动、渲染、输入、走到结果并重开,不判断主观吸引力、长期平衡或其他浏览器。" }
]只讨论一个梗概或修改一段自带文本,用普通模型聊天就够,自己把结果放回稿件即可;要围绕本地作品目录持续创作、在工作台里看文件,再装 DSH 加本插件。想用账户化的网页项目,可选 ZenStory 托管工作台,具体区别见写作环境对比。
不用。四条流水线各自是独立的 skill 仓库,直接装进你在用的编程 Agent:oh-story-claudecode、drama-skills、novel-to-game、video-recap-skills。本插件是这四套 Skills 在 DeepSeek Harness 里的打包版,外加只有 DSH Web 才有的四个工作台。
不需要。首次引导选择「稍后配置」,打开作品目录就能浏览文件;开始 AI 创作时再配置模型。