dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
简体中文 | English
DeepSeek Harness 插件集合(pnpm monorepo)。
插件 · 说明 dsh-vertical-layout · 竖屏布局优化:电脑竖屏时把右侧文件 / 终端面板移到对话区上方,高度可拖拽调整 dsh-ask-highlight · 提问块高亮:已答复的「提问 n/n 已回答」工具块用柔和卡片凸显;可让提问块默认展开,设置页可配 dsh-pwa-icon · 已由 `dsh-enhancement` 取代:PWA 图标/安装能力已并入增强套件;源码保留作参考 dsh-enhancement · 远程安全访问网关(密码/HTTPS)+ PWA 安装/图标 + 桌面通知 + PWA Web Push;与 3081 入口共存 dsh-enter-plan-mode · 进入计划模式工具:给模型一个可调用的 dsh_enter_plan_mode_enter_plan_mode,配合内置的 exit_plan_mode 构成"先规划、后评审"的闭环 dsh-font-settings · 已废弃:DSH 0.2.x 起内置字体设置,源码仅作参考实现
每个插件的用法见各自 README(中英双语)。
dsh plugin --profile web add dsh-vertical-layout
dsh plugin --profile web add dsh-ask-highlight
# dsh-pwa-icon 已由 dsh-enhancement 取代;新增强套件本机开发时先用 link: 依赖
# (见 packages/dsh-enhancement/README.md)
dsh plugin --profile web add dsh-enhancement
dsh plugin --profile web add dsh-enter-plan-mode插件从 npm 安装;本机 link 的插件用本地目录。需要持久配置的插件在 profile 的 cordis.patch.yml 里写 config(例如 dsh-enhancement 的网关/PWA 运行状态存它自己的 state.json,不在 profile 里放密码),具体字段见各插件 README。
改配置会自动热重载;升级插件版本后界面如果没变化,重启 dsh web;纯客户端样式类的插件刷新浏览器即可。
pnpm install
pnpm run build # 构建全部包
pnpm run verify # 类型检查
pnpm compat # 用本机 dsh 检查插件兼容性
# 真实 dsh 起一次性 profile 做冒烟(需 node 直接调用,勿经 pnpm 转发)
node scripts/smoke-plugin.mjs --package dsh-ask-highlight --expect-html dsh-ask-highlight发布由 GitHub Actions 自动完成(OIDC 可信发布 + provenance,见 .github/workflows/npm-publish.yml):
pnpm --filter dsh-vertical-layout version x.y.z # 1. 升版本
git commit -am "chore: 版本号提升" && git push # 提交推送
git tag dsh-vertical-layout@x.y.z # 2. 打 tag:包名@版本,须与 package.json 的 version 一致
git push origin dsh-vertical-layout@x.y.z # 推送即触发发布工作流会构建并以 --provenance --access public 发布该包;也可在 Actions 页用 workflow_dispatch 手动补发。dsh-font-settings 已废弃,不在发布列表里。
DSH 在组合 profile 前做兼容性预检,规则有三条,优先级不能搞反:
engines.dsh → 只由这个范围决定,peerDependencies 被完全忽略;@deepseek-ai/dsh 与每个 @deepseek-ai/dsh-* 的 peer 范围都必须匹配;这个门禁的后果是硬的:范围不满足时 DSH 在安装阶段就拒绝(installation rejected),插件根本装不上,不是"装上但不生效"。
本仓库在维护的插件都有意不声明 DSH 版本要求。理由不是省事:
webserver/index-inject(dsh-host-webserver 的公开事件)、webServer.register / tapIndex、ctx.tools、ctx.get('planMode')——以及少量 DOM 数据属性约定(data-tool、data-disclosure-*)。给它们写一个版本范围等于声称"只在这些版本上验证过",是虚假精度。dsh-font-settings 是唯一的反例,也是反面教材:它声明了 peers,范围一路钉死,最终因 DSH 内置该能力而废弃。plan mode is not available to this call: …),而不是崩溃或静默错乱。而版本门禁是"装上之前就拒绝",还要求用户用 allow-version --accept-risk 接受"可能崩溃或数据丢失"的风险声明——这种说法比实际情况严重得多。verify(tsc)+ 真机 smoke。如果你确实要给某个包声明范围,用 `engines.dsh` 而不是 peers:它是单一真源(声明后 peers 被忽略,避免双轨),并且 scripts/update-peer-ranges.mjs 会按优先级自动放宽正确的那一层。
每周(及手动、或 DSH 发版 repository_dispatch)由 .github/workflows/dsh-compat.yml 在 latest / alpha 渠道上:
pnpm install + build + verify(类型检查,抓 API 断裂);check-compat 预检;范围过期就 update-peer-ranges --write 自动放宽(按上面的优先级改 engines.dsh 或 peers);index.html 标记;packages/*/package.json 开 PR;任何硬失败开/更新 issue,不自动改插件代码。两个辅助脚本可直接用:
node scripts/check-compat.mjs # 用本机 dsh 版本预检
node scripts/check-compat.mjs --runtime 0.3.0 --json
node scripts/update-peer-ranges.mjs --runtime 0.3.0 # 只打印计划
node scripts/update-peer-ranges.mjs --runtime 0.3.0 --write # 落盘dsh-font-settings 已废弃,不参与适配(DEPRECATED.md 即标记,两个脚本都会跳过)。