4869acdsh-a11y/dsh-DeepSeek-chat ↗★ 0
dsh-deepseek-chat
在 DSH 左侧边栏加一个原生菜单项「DeepSeek chat」:点它在独立浏览器窗口里打开 chat.deepseek.com(登录态持久化,窗口已存在时切回前台);支持双向划词互传(DSH 划词一键传给网页端输入框 / 网页端划词浮现气泡一键接力回 DSH 输入框)。 适合需要频繁在DSH和DeepSeek网页端同步上下文、传递划词内容的用户。
同名パッケージの別リポジトリ
インストール
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:4869acdsh-a11y/dsh-DeepSeek-chatドキュメント
README 全文を読む ↗四、使用
| 操作 | 结果 |
|---|---|
| 点左侧边栏的 DeepSeek chat | 打开 DeepSeek 窗口;右下角依次提示 正在打开 DeepSeek chat 窗口… → DeepSeek chat 窗口已就绪(over-dsh / center / focused) |
| 窗口已存在时再点 | 不再新开:切回并聚焦已有窗口(多信号判活,见下) |
| 手动关掉 DeepSeek 窗口 | 下次点会重新打开,登录态还在 |
| 打开失败(找不到 Chrome/Edge、宿主报错…) | 右下角提示 打开失败:,不会静默 |
| 在网页端点每条回复下面的 ↪ 转到 DSH 继续 | 把那条回复接力回 DSH 的输入框 → 见 附录 B |
菜单项没有「选中状态」要记:它就是一个按钮,点一次开(或唤起)那个窗口,不存在模式切换,
所以也没有旧版那套 localStorage 打勾记忆。
💡 上下文接力(把网页端的回复一键送回 DSH 输入框)是 v1.1.0 新增的能力, 完整说明、配置项和已知限制都在文末的 附录 B。默认已开启。
「窗口已存在」是怎么判定的(v1.2.0 加固)
以前只靠「查进程命令行」判断窗口在不在,一旦 PowerShell 被安全软件挡住或查询超时, 就会被误判成「没开」而重复开窗。现在改成多信号:
- 调试端口还应答(最快最可靠,不依赖 PowerShell)—— 有端口就直接认定「已存在」;
- 没有端口时再按命令行特征查进程;
- 两者都没有、但 15 秒内刚开过 → 等 2.5 秒复查一次(躲开 Chrome 冷启动竞态)。
判定「已存在」之后,/open 不再新建窗口,而是:
把已有窗口 ShowWindow(RESTORE) + 合成一次 Alt 解前台锁 + SetForegroundWindow
(与接力唤起 DSH 用的是同一招,实测 True)。
窗口靠进程归属认(pid 落在本插件专用 profile 的进程集合里),不靠标题,所以网页改标题也认不错。
万一前台锁没解开(极少见),DSH 右下角会弹一条提示让你去任务栏点一下 —— 这是唯一 「点完像没反应」的情况,不会静默。
五、配置:改哪一行
所有配置都写在插件自己的 cordis.patch.yml 里。这个文件同时也是插件的启用开关:
- insert:
- id: dsh-deepseek-chat
name: dsh-deepseek-chat
# ↓↓↓ 从这里开始加配置,不加就是全默认 ↓↓↓
config:
placement: over-dsh
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
url | string | https://chat.deepseek.com | 要打开的地址,必须 http(s) 开头 |
browserPreference | auto|chrome|edge | auto | auto = Chrome 优先、Edge 兜底。想固定用 Edge 就写 edge |
placement | over-dsh|center | over-dsh | over-dsh 贴着 DSH 窗口内容区摆;center 交给系统随便放 |
sidebarInset | number | 268 | over-dsh 时给左侧边栏留的宽度(px)。窗口压住侧边栏就调大 |
gap | number | 10 | 四周留白(px) |
minWidth / minHeight | number | 520 / 460 | 窗口最小尺寸(px) |
relayAppendMode | replace|append | replace | 接力写入方式。v1.6.0 起默认覆盖;append = 追加(带上限) |
relayMaxChars | number | 2000 | 单次互传的字符上限(超出硬截断)。两端一致 |
draftMaxChars | number | 6000 | 输入框草稿总长上限。仅 append 模式生效,超出裁掉最老的内容 |
ackTimeoutMs | number | 15000 | 网页端等 DSH 回执的上限(毫秒)。太小会把成功误判为失败 |
改完 要重启实例(宿主半边改动不热更新)。
只改
client.js(纯 UI)不用重启,硬刷新页面即可 —— 客户端半边按mtime + size参与 revision 计算,浏览器会重新取。
B.4 配置项
都在 cordis.patch.yml 的 config: 下面(改完要重启实例):
- insert:
- id: dsh-deepseek-chat
name: dsh-deepseek-chat
config:
relay: true # 总开关
relayPrefix: '【来自 DeepSeek 网页端上下文,请基于此继续完成后续任务】'
relayMaxChars: 2000 # 单次互传字符上限(超出硬截断)
relayAppendMode: replace # replace=覆盖(默认)/ append=追加
draftMaxChars: 6000 # 输入框草稿总长上限(仅 append 生效)
ackTimeoutMs: 15000 # 网页端等回执的上限(毫秒)
| 配置 | 默认 | 说明 |
|---|---|---|
relay | true | 关掉之后 不给 Chrome 加调试端口、不注入脚本 —— 更安全,但也没有划词接力 |
relayPrefix | 见上 | 注入到输入框的前缀。必须与网页端脚本一致(两处都改了才不会重复叠加) |
relayMaxChars | 2000 | 单次内容上限,两端都会截断。改大请同步注意卡顿风险 |
relayAppendMode | replace | 覆盖(默认)或追加。追加会自动带上限与"读回归一",但仍比覆盖慢 |
draftMaxChars | 6000 | 追加模式下草稿的总长上限,超出裁掉最老内容 |
ackTimeoutMs | 15000 | 网页端等回执上限。DSH 侧轮询 800ms,留足余量避免误报失败 |
已移除的旧配置:
relayButtonText/relayBodySelector/relayIncludeThread—— v1.4.1 起改为「划词即传」,不再给每条回复挂按钮,也不再抓整段对话。
D.5 配置项
- insert:
- id: dsh-deepseek-chat
name: dsh-deepseek-chat
config:
transferPrefix: '【来自 DSH 上下文】\n\n' # A→B 注入时加的前缀;填 '' 就不要