dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Use the Codex skill 多画风打戏导演 / fight-scene-director inside DeepSeek Harness.
It turns your characters, weapons, abilities, scene, references, story goal, duration, and trajectory controls into an executable AI-video fight prompt — action causality and spatial movement first, shots second. Output is structured Chinese prompts aimed at Seedance 2.0, Seedance 2.5, and MiniMax H3.
Original skill by AIZAO Aloong — ZzzAloong/fight-scene-director (MIT). This repository is the DeepSeek Harness port. See NOTICE and the port report for exactly what changed.
dsh plugin --profile web add github:hatsuyuki0103/dsh-fight-scene-director
dsh plugin add forwards to pnpm add, and pnpm understands the
github:user/repo spec — no npm account or published package is required.
Append #<tag> to pin a revision for reproducibility:
dsh plugin --profile web add github:hatsuyuki0103/dsh-fight-scene-director#v1.1.3
Then restart the harness so the new profile layer is composed.
Every release attaches the packed artifact, which pnpm installs directly:
dsh plugin --profile web add https://github.com/hatsuyuki0103/dsh-fight-scene-director/releases/download/v1.1.3/dsh-fight-scene-director-1.1.3.tgz
Use this when git-over-HTTPS is blocked on your network, or when you want a byte-pinned artifact rather than a branch.
git clone https://github.com/hatsuyuki0103/dsh-fight-scene-director.git
dsh plugin --profile web add /absolute/path/to/dsh-fight-scene-director
Add the checkout to your profile dependencies and bundle list yourself
(~/.dsh/profiles/web/package.json):
{
"dependencies": {
"dsh-fight-scene-director": "link:/absolute/path/to/dsh-fight-scene-director"
},
"dsh": {
"profile": {
"bundles": ["…existing bundles…", "dsh-fight-scene-director"]
}
}
}
After restarting, confirm the plugin joined the profile's bundle layers — this is the check that actually distinguishes "installed" from "installed and mounted":
# 1. the dependency is present
dsh plugin --profile web list
# 2. the composed profile tree carries the plugin's row
dsh --profile web --dump-config > tree.yml
grep -B1 -A2 'id: dsh-fight-scene-director' tree.yml # macOS / Linux
Select-String 'id: dsh-fight-scene-director' tree.yml -Context 1,2 # Windows PowerShell
Step 2 must print the row with id: dsh-fight-scene-director and
name: dsh-fight-scene-director. A dependency without a composed row is
installed but never mounted. (The skill provider's own internal name is
fsd-skills; that appears in logger output, never as a patch row id.)
Inside a session, ask for a fight scene in plain words — the skill is
model-invocable, so 帮我设计一段 30 秒的剑客对决打戏 is enough. To invoke it
explicitly, type the skill as its own word:
/fight-scene-director
If the skill does not appear:
dsh.bundle is installed but never mounted;package.json → dsh.bundle.patch resolves to cordis.patch.yml;dsh-fight-scene-director: skipped … warnings in the harness log —
a skill file that fails the frontmatter contract is skipped with a reason
rather than silently dropped.The skill registry caches the collected catalogue, and the provider can only ask for a re-collection from inside a call the registry has already made. So:
extraSkillDirs) does not
appear until you restart the harness. There is no filesystem watcher in this
provider; it reads the directory only when the registry asks it to.The plugin accepts inline config in your profile's cordis.patch.yml / agent
preset. The row id is the package name:
- id: dsh-fight-scene-director
name: dsh-fight-scene-director
config:
enableSkills: true # set false to unmount this package's skill
extraSkillDirs: [] # additional skill roots served by this provider
maxSkills: 100 # catalog entry cap, integer >= 1
Invalid values are rejected loudly rather than ignored: maxSkills must be an
integer >= 1 (0 would silently empty the catalog), extraSkillDirs must be
an array of non-empty strings, and enableSkills must be a boolean. null or a
missing config means "use defaults".
dsh plugin --profile web remove dsh-fight-scene-director
Then restart. Removing the dependency drops the bundle layer on the next boot; no files are written outside the installed package.
Two caveats worth knowing:
link:) then moving or deleting that
directory leaves the profile unable to boot (cannot resolve profile bundle). Remove the profile entry first, or install from GitHub instead.dsh plugin remove removes the dependency and the bundle layer but can leave
the node_modules link behind; it is inert once the bundle layer is gone.index.mjs host plugin entry (name / inject / apply)
lib/skills-provider.mjs embedded, lazy skill provider
skills/fight-scene-director/ the skill itself (SKILL.md + references/)
cordis.patch.yml profile bundle patch
test/ contract + knowledge-fidelity gates
docs/ port report, upstream copies, repro recipe
node --test "test/*.test.mjs"
No dependencies to install — the tests use Node built-ins only. The suite enforces two things worth knowing about:
references/*.md must stay byte-identical to the pinned upstream commit
(gate T3.4, hashes in test/fixtures/upstream-hashes.json). Changing them on
purpose means updating that fixture and saying so in CHANGELOG.md.MIT. The port is © 2026 hatsuyuki0103; the original skill is
© 2026 AIZAO Aloong, also MIT. Both license texts ship in this repository
(LICENSE, LICENSE.upstream).