dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
合并后的版本锁定插件升级技能(0.1.3-alpha.1 → 0.1.5-rc.1,两条闭环腿):证据绑定版本卡 + 零依赖 20 接缝扫描器,以 bundle 技能 + npx CLI 两种形态发布。
npm i -g dsh1024 once, then dsh1024 plugin --profile web add dsh-plugin-upgrade-015 (counts toward the deepseek1024.com install ranking).
🪦 RETIRED — no longer maintained as of 2026-10-05. This package was retired by the maintainer. Every plugin upgrade now goes through
dsh-plugin-upgradeinstead (npmdsh-plugin-upgrade), which carries all corridors and routes a repository by the version the repository pins for itself (engines.dsh/ peer ranges / devDeps) — so a separate version-locked package per host hop is no longer needed. Do not adoptdsh-plugin-upgrade-015for new work; it receives no further fixes, releases, or security updates. Kept public for reference only. The corridor knowledge this package carried is preserved indsh-plugin-upgrade's reference cards.
Merged, version-locked plugin upgrade skill for DeepSeek Harness — 0.1.3-alpha.1 → 0.1.5-rc.1, carried as two closed legs.
Leg A 0.1.3-alpha.1 → 0.1.5-alpha.1, leg B 0.1.5-alpha.1 → 0.1.5-rc.1: one corridor card plus one zero-dependency seam scanner over the merged 20-seam catalog, so a client half that stopped mounting silently is never mistaken for "typecheck is green".
Official repository. This is the only official repository of dsh-plugin-upgrade-015, maintained by PerryLink. It supersedes the two version-locked packages
dsh-plugin-upgrade(leg A) anddsh-plugin-upgrade-rc1(leg B). Same-name repositories under other accounts are not affiliated.
English · 简体中文 · Español · Português · हिन्दी
dsh plugin --profile <name> add dsh-plugin-upgrade-015
dsh plugin --profile web add dsh-plugin-upgrade-015 # from npm
dsh plugin --profile web add "github:PerryLink/dsh-plugin-upgrade-015#main" # from source
dsh plugin --profile web remove dsh-plugin-upgrade-015 # uninstall (reversible)
Installing the bundle only registers a skill; removing the row removes the skill. The CLI is a normal npx target and needs no profile at all.
| Surface | Status |
|---|---|
| Harness | DeepSeek Harness 0.1.5-rc.1 (tag dsh-v0.1.7-rc.1 = 183f08e9c6dd; leg A→B handoff dsh-v0.1.7-rc.1 = 5dda764ed3aa; corridor start 0.1.3-alpha.1). Peer band @deepseek-ai/dsh-skill >=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0, @deepseek-ai/cordis ^4.0.2, @deepseek-ai/schemastery ^3.18.2. |
| Node | ^22.19.0 || >=24.0.0 |
| Platforms | Anywhere Node runs; the scanner is filesystem-only and platform-neutral |
| Model | Text-only models fully supported; the skill is a Markdown body, no tool or vision requirement |
| Scope | Two closed legs, one span: leg A 0.1.3-alpha.1 → 0.1.5-alpha.1 plus leg B 0.1.5-alpha.1 → 0.1.5-rc.1. A corridor never widens: a hop after 0.1.5-rc.1 is a new package. |
| Legs | Both legs live in this package: leg A keeps the S1–S10 + M1 seams, leg B keeps C1, C2, C4, C5, H1–H4, P1 — each with its own evidence, card section, fixtures and rollback path. There is no sibling package to install. |
C3 | Retired: leg B's card spelled the stale-type-line false green C3, which is the same defect as leg A's M1. The fold is recorded on the card; --seams C3 matches nothing. |
| Sibling | Do not mount the retired dsh-plugin-upgrade in the same profile: both register the agent skill plugin-upgrade-015, so the second mount collides on the skill name. That package is deprecated on npm and its repository is retired; this package replaces both of its legs. |
Two halves, one seam catalog:
plugin-upgrade-015) — the merged corridor card and a fix-and-verify loop. The body first routes the caller to the leg that matches its peer band; the model loads it only when a task actually needs it, and the package contributes no system-prompt paragraph and no tool.dsh-plugin-upgrade-015-scan) — reports file:line facts for the merged twenty seams (S3, S8, S9, M1, S4, S5, S6, S7, S2, S1, S10, C1, C2, P1, C4, C5, H1, H2, H4, H3) re-read from the harness tag ranges on 2026-09-09 (leg A) and 2026-09-10 (leg B). Exit 1 on any error-severity hit, so it drops straight into CI.The point is the failure mode this corridor exists to kill: this span's breakage is mostly silent, from both ends. The type line can be stale, so the repo compiles against the old catalog (seam M1), and the bare conversation client slot was deleted with no alias while ctx.slots.inject() only runs its callback when the declaration exists — so a client half that still targets it stops mounting with no error, no log line and no failed build (seam C1). Three classes of breakage survive typecheck + test:
paths alias, or dev/test types pinned at 0.1.5-alpha.* (seam M1);stream field, so the session imports and then refuses to resume (seam S3);C1).Honest sizing: leg B's workspace sweep found that the family's client halves use only 8 slot keys, all of which survive in rc.1 — for them the rc.1 breakage is latent, not actual. Third-party client plugins that targeted the bare conversation key are the ones that break, and they break quietly. Leg A's sweep found the opposite texture: 40 repos, 11 of them hit M1, and fixing the stale path exposed real TypeScript errors in 3 repos that were previously "green".
# 1. install the bundle into your profile
dsh plugin --profile web add dsh-plugin-upgrade-015
# 2. verify the row mounted
dsh --profile web --dump-config | grep -A3 'id: dsh-plugin-upgrade-015'
# 3. scan the plugin you are upgrading
npx dsh-plugin-upgrade-015-scan --repo ../my-plugin
Then ask the agent to use the plugin-upgrade-015 skill, or drive the loop yourself with the card at
skills/plugin-upgrade-015/references/v0.1.3-alpha.1-to-v0.1.5-rc.1.md (leg A is §1, leg B is §2, the merged seam index is §3).
Every key is optional and lives in the profile patch:
| Key | Default | Meaning |
|---|---|---|
enabled | true | Register the packaged skill. Set false to keep the dependency mounted but silent. |
skillName | plugin-upgrade-015 | Directory under skillsRoot to register, and the name shown in the catalog. |
skillsRoot | the package's own ./skills | Where <skillName>/SKILL.md lives. Point it at your own card to reuse the plumbing. |
userInvocable | true | Whether a human can invoke the skill by name in addition to the model. |
- insert:
- id: dsh-plugin-upgrade-015
name: dsh-plugin-upgrade-015
config:
skillName: plugin-upgrade-015
The plugin mounts loud: a missing SKILL.md, an empty body, or a frontmatter without name fails the mount instead of registering an empty skill.
Skill — plugin-upgrade-015 (model- and user-invocable by default). Body: leg routing table, the 8 hard rules and the 6-step loop. References: the merged corridor card. Scripts: the detector, shipped inside the skill directory so relative paths resolve.
CLI — dsh-plugin-upgrade-015-scan:
dsh-plugin-upgrade-015-scan [--repo <path>] [--json <out.json>] [--seams S3,C1,P1] [--quiet]
| Flag | Meaning |
|---|---|
--repo <path> | Repository to scan (default: cwd). |
--json <out.json> | Also write the machine-readable report (repo, scannedAt, files, hits[], bySeam). |
--seams S3,C1,P1 | Restrict to specific seams of the merged catalog. |
--quiet | Suppress the human rendering (pair with --json). |
Exit codes: 0 no error-severity hit · 1 at least one error-severity hit · 2 usage or scan failure. A clean scan is necessary but not sufficient — the exit criterion is a real-host smoke, plus a resume round-trip for log writers (leg A) and a real browser assertion for the client half (leg B).
Order follows the catalog in lib/scan.mjs (leg A first, then leg B), which is also the order test/card.test.mjs pins the card to.
| Id | Severity | What changed on the way to 0.1.5-rc.1 |
|---|---|---|
S3 | error | assistant/message gained a required stream field (session format V3): a log written without it imports successfully and then refuses to resume (Session.fromRestore throws invalid settlement fields). |
S8 | error | SessionHandle.read() returns SessionHandleReadResult ({ eventState, events }) instead of the event array; array operations must unwrap .events. |
S9 | error | SystemPrompt's config renamed persona → personaPrefix / personaSuffix. Substituting includeHarnessIdentity: false is not equivalent — it deletes the harness identity block. |
M1 | error | The local gate compiles a stale type line: dev/test types pinned at 0.1.5-alpha.*, or a tsconfig paths alias resolving to a missing checkout directory, makes TypeScript fall back silently to the published types. Green gate, wrong ruler. |
S4 | error | tool/code-dispatch was renamed tool/ptc-dispatch; the old label is no longer recognized in V3 sessions. |
S5 | error | ctx.agent was removed: the caller must pass the Agent explicitly (e.g. the second parameter of setup(agentCtx, agent)). |
S6 | error | Inbox is a type interface, not a constructable class; fixtures use the official unsupported shape and runtime code reads agent.inbox. |
S7 | warn | SubprocessHandle.pid was removed (only SubprocessTerminalHandle.pid remains); drop the field from test fixtures. |
S2 | warn | EpochHeader.system was removed: the system prompt is surface node 0's system/message now. |
S1 | warn | Session format V3 and generation-suffixed log names — the current generation is session.v3.jsonl.zstd, so scripts that hardcode session.jsonl.zstd fail silently. |
S10 | warn | Plugin-authored session events must go through the host's fail-closed adaptation gate: Session.append has no ignorable write channel, so an unconditional append can make a session unreadable. |
C1 | error | The bare client slot conversation was deleted and replaced by main + main.conversation, with no alias. ctx.slots.inject() only fires when the declaration exists, so a plugin targeting it stops mounting silently. |
C2 | error | @deepseek-ai/dsh-client-ui-sidebar-textpreview was renamed …-sidebar-documentpreview; the old name is gone with no shim package. |
P1 | error | The peer band must keep its second segment: >=0.1.2-rc.1 <0.2.0 alone rejects 0.1.5-rc.1 under npm semver's prerelease-tuple rule (measured false on semver 7.8.5). |
C4 | warn | rc.1 added a global main-panel model (main, sidebar.panellist, ctx.layout.selectPanel(MainPanelId | null)) and appended a usePanelInfo standard prop to almost every slot. |
C5 | warn | Document preview moved to the keyed slot sidebar.right.tab.document (DocumentContent); sidebar.right.pane.tab survives but its parent entry became rightbar.session. |
H1 | warn | KNOWN_SESSION_EVENT_TYPES gained deliverables/presented and subagent/catalog — the fail-closed vocabulary grew. |
H2 | warn | The new present tool's row occupies tool.call.toolview key 'present', which was free in alpha.1. |
H4 | info | The DeepSeek adapter's default advisory catalog now leads with deepseek-flash (DeepSeek-V41-Flash). |
H3 | info | New optional capabilities: ctx.sessionFeedback, ctx.layout.beginNavigation(), ctx.workspaces.openSession() / openWorkspace() / forkSession(). Listed on the card; deliberately not auto-detected. |
S7, S2, S1, S10, C4, C5, H1, H2 and H4 are deliberately advisory: they have legitimate matches (a repo that already uses the new API, a documentation snapshot, a plugin's own model-id table, a Node ChildProcess.pid), so the scanner reports them as leads for manual review rather than failures. M1 and P1 are structured checks — they resolve package.json and tsconfig*.json instead of matching text — and H3 is card-only: documented, id-parity checked, and deliberately without a detector (CARD_ONLY = ['H3']).
0.1.5-rc.1. The merged span ends at rc.1 by construction: the harness hop 0.1.5-rc.1 → 0.1.5-rc.2 added no plugin-facing seam (this package's own dev/test pin now runs on the 0.1.7-rc.1 line so the catalog is verified against the newest published types; the compat workflow's probe still anchors 0.1.6-alpha.2). Anything that adds a seam later is a new package — a card that drifts is worse than no card.0.1.1 → 0.1.2 hop. Use the community convergence skill.assistant/message.stream, SessionHandleReadResult, EpochHeader.system, ctx.agent, Inbox, SystemPrompt.persona, the V3 log generation) and leg B does not restate them — the whole packages/core/session/src diff in leg B's range is two added event-type literals and one comment line. Each leg's card section keeps its own scope statement.docs/web-styling.md has zero changes in leg B's range.DSH_HOME, target CLI, plugin add <tarball>, --dump-config) plus a resume round-trip for session-log writers (leg A) and a real browser assertion for every client-side hit (leg B).--json writes only to the path you pass.mkdtemp DSH_HOME; it never touches your real ~/.dsh.npm install # or: pnpm install (the repo ships a pnpm-lock.yaml)
npm test # node --test: scanner, card<->catalog parity, real Cordis + SkillRegistry
npm run verify:self-contained # every import resolves inside the package
npm run verify:artifacts # the packed tarball carries the skill, CLI and patch, and excludes tests
npm run check:readmes # five-language README consistency
npm pack
The scanner has a synthetic fixture pair per leg: fixtures/leg-a-bad-repo (leg A's session/config seams, every error seam present on purpose) with fixtures/leg-a-good-repo (adapted), and fixtures/bad-repo (leg B's client-slot seams) with fixtures/good-repo (adapted) — plus a live negative on a family repository already pinned to 0.1.5-rc.1, so a regression in the catalog fails the suite rather than a downstream user. test/card.test.mjs asserts that the merged card index and lib/scan.mjs name exactly the same twenty seam ids with the same severities, and that CARD_ONLY is exactly ['H3'] — the evidence-binding rule as a machine gate.
dsh, dsh-plugin, deepseek-harness, deepseek, cordis, plugin-upgrade, migration, skill, version-card, scanner, client-slots (mirror package.json keywords; dsh-plugin is the ecosystem's visibility channel).
This project is one of the 87 actively maintained DeepSeek Harness plugins from PerryLink. The family roster is 95 plugins in total — 5 frozen, 3 retired — and stays collapsed below so every README keeps a short first screen. Expand it to see every row, with the reason in the Status column.
| Plugin | One-liner | Status |
|---|---|---|
| dsh-aqua-input-check | 水产养殖投入品记录核对(按投入品用量、休药期与起捕间隔核对记录自洽,仅提示差异,不作出定性结论) | |
| dsh-archive-check | 档案归档完整性与保管期限核对(依据《档案法》及配套规定,仅提示差异,不作出定性结论) | |
| dsh-auto-review | Second-model auto-review on the approval chain, fail-closed by default | |
| dsh-autotier | Automatic strong/cheap model-tier routing with deterministic risk guards and a /tier command | |
| dsh-background-agents | Durable background child agents with a Web UI sidebar, messaging and interrupt | 🚫 RETIRED — see the repo README |
| dsh-bid-ca-precheck | 投标文件符合性预检(按招标文件逐条核对响应情况,仅提示差异,不作出定性结论) | |
| dsh-bid-qual-check | 投标人资格条件核对(按资格条件与证明材料核对逐条响应,仅提示差异,不作出定性结论) | |
| dsh-budget | Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel. | 🧊 FROZEN — see the repo README |
| dsh-cert-mcp | Read-only MCP server exposing the certification registry: grades, snapshots and five-dimension evidence | |
| dsh-checkpoint-rewind | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | |
| dsh-claude-move | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | 🧊 FROZEN — see the repo README |
| dsh-click | Cross-platform native desktop control for DeepSeek Harness — Windows first. | |
| dsh-composer-history | Terminal-style input history for the web composer: arrows, Ctrl+R search | |
| dsh-contract-stance | 合同条款立场台账核对(按立场、风险等级与退让底线核对台账自洽,仅提示差异,不作出定性结论) | |
| dsh-customs-doc-check | 报关单证一致性核对(按公开的报关单填制规范核对单证间字段一致性,仅提示差异,不作出定性结论) | |
| dsh-data-quality | Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here) | |
| dsh-defend | Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness. | 🧊 FROZEN — see the repo README |
| dsh-demurrage-ledger | 滞箱费台账核对(按免箱期与费率核对超期天数与金额的自洽性,仅提示差异,不作出定性结论) | |
| dsh-doublecheck | Engineering-discipline guard: requirements grill, test gates, adversary review | |
| dsh-draw | Unified static-image generation routing for DeepSeek Harness. | 🧊 FROZEN — see the repo README |
| dsh-drill-script-check | 应急演练脚本核对(按阶段、响应分级、指挥与资源要素核对脚本齐备,仅提示差异,不作出定性结论) | |
| dsh-eia-guide-check | 环评导则适用性核对(按要素、导则名称与执行标准核对台账自洽,仅提示差异,不作出定性结论) | |
| dsh-emergency-plan | 应急预案要素齐备性与条款级页码定位(依据 GB/T 29639-2020 等公开文件,仅提示差异,不作出定性结论) | |
| dsh-essay-rubric-check | 作文量表评分核对(按评分项、原文定位与分值算术核对评分自洽,仅提示差异,不作出定性结论) | |
| dsh-evidence-check | 证据清单齐备性核对(按待证事实与证据要素核对清单自洽,仅提示差异,不作出定性结论) | |
| dsh-export-ctl-check | 出口管制物项核对(按管制清单、最终用途与许可证核对台账齐备,仅提示差异,不作出定性结论) | |
| dsh-fast | Read-only performance diagnostics for DeepSeek Harness. | |
| dsh-fmea-table-check | FMEA 分析表要素齐备性与风险顺序数一致性核对(按公开的 FMEA 方法标准核对表内自洽,仅提示差异,不作出定性结论) | |
| dsh-forecast-penalty | 预测准确率考核核对(按准确率、门槛与考核单价核对考核费用的算术自洽,仅提示差异,不作出定性结论) | |
| dsh-fund-research | Deterministic research reports for Chinese public mutual funds | |
| dsh-github | GitHub PR/issues integration for DSH, every write gated by approval | |
| dsh-gongwen-flow-check | 公文流转与办理时限核对(按公开的公文处理规范核对环节完整性与时限,仅提示差异,不作出定性结论) | |
| dsh-gongwen-word-check | 公文格式要素核对(按公开的党政机关公文格式标准核对版头与主体要素,仅提示差异,不作出定性结论) | |
| dsh-guard-plan-qc | 劳动保护与安全防护用品配置表核对(按公开的配备标准核对品名规格与配置数量,仅提示差异,不作出定性结论) | |
| dsh-hazchem-check | 危险化学品临界量与重大危险源辨识核对(按储存量与临界量核对台账自洽,仅提示差异,不作出定性结论) | |
| dsh-hazplan-check | HAZOP 分析表要素齐备性与偏差推导一致性核对(依据公开的危险与可操作性分析标准,仅提示差异,不作出定性结论) | |
| dsh-hidden-risk-map | 安全隐患台账→《工贸企业重大事故隐患判定标准》(应急管理部令第10号)条款映射提示(仅提示差异,不作出定性结论) | |
| dsh-hs-classify | 商品归类层级一致性核对(按章、品目、子目与商品编号的层级关系核对自洽,仅提示差异,不作出定性结论) | |
| dsh-icd-rule-check | ICD 合并编码与星剑号配对提示(依据 GB/T 14396-2016 与公开的 ICD 使用说明,仅提示差异,不作出定性结论) | |
| dsh-industry-research | Industry research orchestration that seals its deliverables through this plugin's ctx.researchReport.assemble | |
| dsh-lawcite-adapter | 法条引用与文书要素核对(按名称、条号、原文与效力状态核对引用可核验性,仅提示差异,不作出定性结论) | |
| dsh-laya | Laya typed de |