dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
在 DSH 左侧边栏添加原生菜单项,一键打开 chat.deepseek.com 独立窗口(登录态持久化),支持 DSH 与网页端双向划词互传。
在 DSH(DeepSeek Harness) 左侧边栏添加一个原生菜单项, 一键打开 chat.deepseek.com 独立窗口,支持与 DSH 双向划词互传。
node_modules、无编译,装完重启即可用。

环境要求:DSH ≥ 0.1.5-rc.3 · 系统装有 Chrome 或 Edge · Windows
一条命令安装:
dsh plugin --profile <profile> install acdsh4869/dsh-deepseek-web-relay
装完重启 DSH 实例,再按 Ctrl+Shift+R 硬刷新页面。
也提供幂等的
install.ps1安装脚本,详见技术文档。
从旧版(dsh-deepseek-chat / dsh-deepseek-web)升级
v2.0.0 是一次破坏性改名,包名、路由前缀、slot id、浏览器用户数据目录全变了。
必须先卸载旧版,否则 profile 的 bundles 里会同时留着旧包名而两个都不加载:
# 1. 进旧版插件目录跑卸载
powershell -ExecutionPolicy Bypass -File .\uninstall.ps1 -DshHome "<DSH 实例 Home>" -Profile <profile>
# 2. 再装新版
dsh plugin --profile <profile> install acdsh4869/dsh-deepseek-web-relay
登录态想保留,把旧的 profile 目录改个名再重启(否则要重新登录一次):
Rename-Item "<DSH 实例 Home>\deepseek-chat-profile" deepseek-web-relay-profile
旧的诊断文件 %TEMP%\dsh-deepseek-chat-status.json 可以直接删掉,新版写的是
%TEMP%\dsh-deepseek-web-relay-status.json。
打开窗口

双向划词互传
划词怎么都不会出气泡? 这是 v1.6.0 起的预期行为:默认不再「划词即弹」, 因为日常划词多数是为了复制 / 搜索 / 查看,弹气泡反而挡住界面。 三种触发方式任选其一:
方式 操作 按住修饰键划词 Alt + 拖选文字 划完词补按修饰键 正常划词 → 4 秒内按一下 Alt 右键选区 对选区点右键(气泡出现在光标处) 快捷键直发(最省心) 划完词按 Ctrl+Shift+S,不经过气泡 想要「划词就弹」的老行为,把
bubbleTrigger设成select(见下方设置表)。

哪些地方不会出气泡(v1.6.0 起)
输入框 / 搜索框 / 代码块 / 按钮与链接 / 菜单与弹窗 / 侧栏会话列表 / 表格 / 筛选标签 —— 这些位置划词一律不弹,不会再挡住界面。
已知限制:插件市场里插件卡片的「描述文字」拦不住(它是普通段落, 语义上与对话正文无法区分)。这类场景由「必须按住 Alt 才弹」兜住 —— 普通划词依然完全不弹。想要更严可设
bubbleScope: conversation。
一键分支新对话
User: / Assistant: 逐轮)填进输入框。配置写在插件自身的 cordis.patch.yml 的 config: 下,改完需重启 DSH 实例生效。
| 配置项 | 默认值 | 说明 |
|---|---|---|
relayAppendMode | replace | 接力写入方式;append 为追加 |
branchIncludeHistory | true | 分支带全部历史;false 只带点击的那条回复 |
branchMaxChars | 5000 | 分支上下文的字符上限,超出截断 |
placement | over-dsh | 窗口位置;center 交给系统放置 |
browserPreference | auto | 浏览器选择;可强制 chrome 或 edge |
sidebarInset | 268 | 窗口给侧边栏留的宽度;挡住侧边栏就调大 |
relay | true | 划词互传总开关;设 false 彻底关闭 |
bubbleTrigger | modifier | 气泡触发方式(v1.6.0 默认由 select 改为 modifier)。modifier=按住 Alt 划词 / 划完词补按 Alt / 右键选区;contextmenu=仅右键;select=旧行为,划词即弹(仍不会在输入框、代码块、菜单等处弹);off=关闭气泡 |
bubbleModifier | alt | modifier 模式用哪个修饰键:alt / ctrl / shift / meta |
bubbleAutoHideMs | 6000 | 气泡无操作自动消失时间(毫秒);0 = 不自动消失 |
bubbleArmWindow | 4000 | 「先划词再按修饰键」的待命窗口(毫秒),超时后按修饰键不弹 |
bubbleScope | input-excluded | 准入范围。默认只排除语义上明确不是正文的区域(输入框/搜索框/代码块/按钮/菜单/侧栏/表格/筛选标签);conversation 更严,额外要求选区落在「像对话正文」的容器里 |
hotkeySend | ctrl+shift+s | A→B 快捷键直发:划词后按此组合键直接发送,绕开点气泡的指针链路;空字符串 = 禁用 |
例如切换为追加模式:
config:
relayAppendMode: append
想恢复「划词就弹」的老行为:
config:
bubbleTrigger: select
⚠️ 改完
bubbleTrigger等配置后,必须重启 DSH 实例才生效 —— 这些值由宿主进程(index.js)下发,改磁盘文件不会影响正在运行的实例。
完整配置表见技术文档。
为什么是独立窗口,不直接嵌进 DSH?
chat.deepseek.com 的站点安全策略(禁止 iframe 嵌入、WAF 机器人挑战、Cookie 限制)让「内嵌」技术上不可行。独立窗口是当前最接近的方案,详细分析见技术文档。
为什么接力默认是覆盖,不是追加?
追加会让草稿越攒越长,DSH 输入框变卡、内容重复出现;覆盖每次写入规模恒定,从机制上杜绝累积。确实要攒多条,就开 append 模式。
菜单项点不动或找不到?
划词怎么不出气泡了?(v1.6.0 起的预期行为)
默认改成「按住 Alt 划词」才弹,或划完词 4 秒内补按 Alt, 或直接右键选区。这是刻意改的 —— 划词多数是为了复制 / 搜索 / 查看, 弹气泡反而挡住输入框和界面。四种触发方式见上方「📖 使用指南 → 双向划词互传」一节。
怎么确认装的是新版、配置有没有生效?
读 %TEMP%\dsh-deepseek-web-relay-status.json,找 overlay-rendered 这一项:
{ "trigger": "modifier", "modifier": "alt", "scope": "input-excluded" }
看到 modifier 就是新版。若显示 select,说明宿主还在跑旧代码 —— 重启 DSH 实例。
另外这个文件里的 bubble-none / why: "zone:xxx" 能告诉你某处区域是被哪条规则拦下的。
版本序列连续(v1.0.0 → v1.1.0 → v1.2.0 → … → v1.6.0 → v2.0.0),只有 v2.0.0 是破坏性变更。 每条的根因分析、修法与验证清单见 CHANGELOG.md。
dsh-deepseek-chat → dsh-deepseek-web-relay(菜单项显示名 DeepSeek Relay),并补上插件图标与双语元数据。这是一次破坏性改名:包名、路由前缀、slot id、浏览器用户数据目录全部变化,旧版必须先卸载(见下方「从旧版升级」)。bubbleAutoHideMs 自动消失兜底;快捷键直发不再走选区缓存兜底。详见改动说明。tools/selftest-bubble.cjs(三项全部 PASS);埋点补齐来源标记与「气泡遮挡自检」。Ctrl+Shift+S),物理绕开壳层吞指针事件导致的「点好几下没反应」;气泡改在鼠标光标处冒出(不再锚选区顶部);注入后把真正收到内容的那一页精确拉到前台;成功提示带内容预览。bubbleTrigger:contextmenu 模式下划词不再冒气泡,对选区右键时「🐋 传给Chat」才出现在光标处(更安静,适合常驻第二实例);发送失败时气泡变为「✗ 失败,点击重试」留在原地可立即重试;窗口没开时点气泡会自动打开窗口再注入。branchButtonText / branchMaxChars / branchIncludeHistory。