dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
自研 DeepSeek Harness (dsh) 插件集合 — 目前收录 dsh-auto-upgrade:Web UI 自动检测升级 + 兼容性预检 + 一键备份/安装/校验/重启
自研 / 自维护 / fork 来的 DeepSeek Harness(dsh)插件集合。 每个子目录是一个独立插件,通过 profile 的 link: 依赖挂到本机 DSH 上使用;不走 npm 发布流程。
目录 · 包名 · 作用 · 状态 dsh-auto-upgrade/ · dsh-plugin-auto-upgrade · dsh Web UI 自升级:检测 → 兼容性预检 → 非阻塞浮层 → 一键备份 / 安装 / 校验 / 重启 · 可用(真机升级链路待验证) dsh-external-discuss/ · dsh-plugin-external-discuss · 把 DSH 会话一键送到外部模型(清言网页版)继续讨论 · 可用(需配套 Chrome 扩展;仅清言接通) dsh-im-bridge-workspaces/ · @mhfire/dsh-im-bridge · 企业微信智能机器人 ⇄ DSH Agent 桥接,本地 fork 增加多工作区 /ws 切换 · 可用(本机已接入 profile) dsh-plugin-product-subagents/ · dsh-plugin-product-subagents · 把 Claude Code / Codex / 任意 ACP CLI 变成基于角色的 subagent(0.2.0 线可续接;0.2.1+ 外部子代理为一次性) · 可用(DSH 0.2.0-rc.2 / 0.2.1-alpha.5 / 0.2.1-rc.1 均通过一次性 profile 验收) dsh-prompt-optimizer/ · @y1x1n/dsh-prompt-optimizer · 发送栏纯图标按钮:一键优化提示词,完成后直接写回输入框(fork:线性图标 / 去文案 / 内联 loading,无弹出面板) · 可用(0.6.1-fork.1,门禁全绿;真机 GUI 手点未做)
来源:纯原创(package.json 的 repository 已指向本仓库 directory: dsh-auto-upgrade)。 改动:—(没有上游)。
给 dsh 的 Web UI 加一个自升级入口:当天首次打开页面时自动检测 dsh 新版本与已装插件的兼容性, 用一个不打断当前工作的浮层提示;用户点「升级」后才走完整链路。
evaluatePluginCompatibility,不是自己写范围匹配)。~/.dsh → 停服 → npm install -g → 对版 + 组合冒烟 → 重启交接。lib/index.js 用 cordis 注册 /api/dsh-auto-upgrade/* 路由族;浏览器半边 lib/client.js 手写并包在 window.__ModuleLoader__.load({id, factory}) 里,注册 shell.overlay 浮层与 settings.section 设置页。
npm install -g 覆盖的正是宿主此刻在运行的那棵树,而「停服」就是杀掉宿主自己。所以宿主只做「门禁 → 备份 → 落 payload → fork detached helper → exit 0」,停服 / 安装 / 对版 / 冒烟 / 拉起 都在生成的 POSIX sh helper 里。
@deepseek-ai/dsh* peerDependencies**:否则升级之后,平台闸门会把「负责升级 dsh 的插件」自己判成不兼容(自锁)。本包只声明 react(浏览器半边需要)。
~/.dsh、结束本进程,所以一律 loopback-only(以 socket 地址为准,不信任 X-Forwarded-For),并且有副作用的一律 POST。
--dsw-font-*、圆角 --dsw-radius-*、语义色 --dsw-alias-state-*,数值逐条对齐官方实现。详见包内 README 的「UI 风格契约」。
情况 · 行为 有会话正在执行 · 409,前端弹警告;用户确认后可带 force 继续(仅警告) 目标版本与已装插件不兼容 · 409,拒绝升级且不可绕过——先升级 / 移除那个插件,或为它写精确版本豁免
豁免是按「插件@版本 → dsh 版本」精确匹配的:为 0.2.0-rc.2 写的豁免,升级到别的版本时自动失效,那个插件会立刻出现在「不兼容」里。这正是本插件要提前告诉你的信息。
POST /plugins/action(写豁免 / 禁用插件)尚未接线,如实返回 501;GET /notes 已实现。policy.mode 只接受 notify。docs/plugins/dsh-auto-upgrade.md来源:纯原创。改动:—(没有上游)。
在助手消息操作栏(复制 / 反馈 / 新对话分支 / 用量 / 时间那一条)多出一个图标按钮,点开弹层选择投递目标:
目标 · 状态 · 行为 清言(chatglm.cn) · ✅ 可用 · 在已登录的清言页新建对话 → 按 DSH 会话标题重命名 → 粘贴正文 → 发送 千问 / DeepSeek · ⏸ 占位 · 显示「即将支持」,不可点
链路:页面按钮 → GET /api/dsh-external-discuss/payload?sessionId=…(宿主取正文与标题, 取自 session.deriveMessages() 的会话投影,不是抓页面 DOM)→ window.postMessage → 配套 Chrome 扩展转发到清言标签页 → 回执逐级回投 → 按钮下方显示结果。
安装分两步:插件(dsh plugin --profile web add,装完重启 dsh web)+ Chrome 扩展 (chrome://extensions → 开发者模式 → 加载已解压的扩展程序 → 选 extension/,装完刷新 DSH 页面)。 清言是第三方页面,改版会让选择器失效——候选文本集中在 extension/qingyan-content.js 顶部的 CONFIG 里。 详见 包内 README 与 docs/plugins/dsh-external-discuss.md。
来源:fork 自 npm 包 @mhfire/dsh-im-bridge@0.4.4(本地 fork 版本 0.4.4-ws.1), 上游原版说明见 README.upstream.md。
改了什么: 新增工作区列表与 `/ws` 切换(/ws、/ws 、/ws reset、 /ws add 、/ws help,以及 workspaceSwitch / workspaceAllowFrom / workspaceAdd 三个配置项 与 $DSH_HOME/dsh-im-bridge/workspace-bindings.json 持久化);其余行为与上游一致——按企微窗口建 Agent、 单聊一人一条、群聊共用一条、Settings 配置卡片、wecom-cli 办公层均未改。
包名与目录名不同(目录 dsh-im-bridge-workspaces/ → 包名 @mhfire/dsh-im-bridge),fork 保持同名, 所以接入 profile 时 bundle 列表与 cordis.patch.yml 都不用改。 这是本仓库唯一需要构建的插件(src/ → lib/,pnpm run build)。 详见 包内 README 与 docs/plugins/dsh-im-bridge-workspaces.md。
来源:fork 自 GitHub shaokeyibb/dsh-plugin-product-subagents v0.4.0, commit e5a002db3b8d6df984fdb5e704e9321dca1723cd,MIT。
改了什么(适配 DSH `0.2.x`,业务代码未改):
peerDependencies / dsh.compatibility.dsh 的 DSH 版本范围,补 dshReleases verdict(0.2.0-rc.2、0.2.1-rc.1,均有一次性 profile 验收背书:install · compose · start · uninstall);
0.4.0 → 0.4.1,同步 CHANGELOG.md / docs/COMPATIBILITY.md / README.md + README.zh.md;为什么只改声明:0.4.0 在 0.2.x 上其实已能正常运行,缺的只是声明——DSH 启动时按插件自己声明的 peer 范围判兼容,没覆盖就跳过该 bundle(表现为「插件莫名其妙没加载」)。
⚠️ prerelease 陷阱:^0.2.0-rc.2不覆盖0.2.1-rc.1,每条0.2.x线都要单独写一个锚点。
它把 Claude Code / Codex / 任意 ACP CLI 变成基于角色的可续接 subagent:一次性同步或异步可续接、 持久会话恢复、每角色 product 权限、受权限天花板约束的委派、声明式角色库(roles/*.json)。 详见 英文 README / 中文 README / docs/plugins/dsh-plugin-product-subagents.md。
项 · 要求 DSH · 0.2.0-rc.2(本机实测版本);插件各自声明兼容范围,见上 Node · v24.21.0(各插件 engines 不一,dsh-auto-upgrade / dsh-external-discuss 要求 ^22.19.0 \ · \ · >=24.0.0,dsh-plugin-product-subagents 要求 >=18) 包管理器 · pnpm(本仓库与全局约定一律 pnpm,禁 npm / yarn / bun / npx;详见 AGENTS.md 强制规定 2) 产品 CLI · dsh-plugin-product-subagents 至少需要 claude / codex / 任一 ACP CLI 之一(如本机的 opencode) shell · macOS 自带 bash 3.2(脚本已按 3.2 写)
# 安装(<目录> 用仓库内的目录名,路径按实际 clone 位置调整)
dsh plugin --profile web add /Users/gubin/workspace/self-dsh-plugins/<目录>
# 卸载
dsh plugin --profile web remove <包名>add 时若插件 package.json 声明了 dsh.bundle.patch,会自动挂上 patch 层,无需手改~/.dsh/profiles/web/cordis.patch.yml。
patchReload: live:装完 / 改完通常不用重启,刷新页面即可。(dsh-external-discuss 与 dsh-im-bridge-workspaces 的宿主半边在冷启动装配,按各自 README 的说明处理。)
dsh plugin 的 profile 目录在 ~/.dsh/profiles/web;dependencies 用 link: 指向本仓库子目录。插件加载失败。
# 跑 4 个插件的测试 / check / typecheck(缺 node_modules 的插件会明确跳过,不算失败)
scripts/pipeline/check-all.sh
scripts/pipeline/check-all.sh dsh-auto-upgrade dsh-plugin-product-subagents # 只跑指定插件
# 在一次性 $DSH_HOME 里验证插件能被 profile 正确安装 + 组合(绝不触碰真实 ~/.dsh)
scripts/pipeline/install-check.sh
scripts/pipeline/install-check.sh dsh-plugin-product-subagentsinstall-check.sh,它每个插件新建一个 mktemp -d 的 DSH_HOME,pnpm dlx @deepseek-ai/dsh@ plugin --profile headless add 后用 --dump-config 校验,装完即删。
issue #3:其 peerDependencies 用 * 会解析到陈旧的 @deepseek-ai/dsh-session@0.0.1-rc.1,后者依赖未发布的内部包 @deepseek-ai/dsh-type-meta)。 所以它不进 `check-all.sh` 的常规测试路径,CI 里也只做 `node --check` 语法门禁并打印跳过原因; 完整校验走 scripts/pipeline/install-check.sh dsh-im-bridge-workspaces(一次性 DSH profile 里装配)。
scripts/pipeline/status.sh。.github/workflows/ci.yml)只跑测试 + node --check,零部署步骤;dsh-im-bridge-workspaces那一项 install: false,即跳过安装 / 测试 / typecheck,只跑语法门禁。
每个任务走 issue → worktree → PR → review → squash 合并(没有部署):
scripts/pipeline/new-task.sh <issue号> # 建分支 task/<号>-<slug> + worktree
cd .worktrees/<号>-<slug> # 在 worktree 里开发
scripts/pipeline/check-all.sh # 本地自测
scripts/pipeline/open-pr.sh # 自动推送 + 开 PR
# 拿到用户对 review 的明确同意后:
scripts/pipeline/merge-pr.sh完整手册见 docs/pipeline/README.md(进度台账: docs/pipeline/PROGRESS.md);给 agent 的强制规定见 AGENTS.md, 插件级说明见 docs/plugins/。
各插件来源不同:
dsh-auto-upgrade、dsh-external-discuss)为 MIT。dsh-plugin-product-subagents/ 内含上游的 MITLICENSE;dsh-im-bridge-workspaces/ 为 MIT, 上游授权见其 package.json 的 license 字段与上游仓库。
第三方来源的授权一律见各自目录内的 LICENSE。