4869acdsh-a11y/dsh-DeepSeek-chat ↗★ 0

dsh-deepseek-chat

在 DSH 左侧边栏加一个原生菜单项「DeepSeek chat」:点它在独立浏览器窗口里打开 chat.deepseek.com(登录态持久化,窗口已存在时切回前台);支持双向划词互传(DSH 划词一键传给网页端输入框 / 网页端划词浮现气泡一键接力回 DSH 输入框)。 适合需要频繁在DSH和DeepSeek网页端同步上下文、传递划词内容的用户。

パッケージ
dsh-deepseek-chat
互換性
未検証
バージョン
1.0.0
最終更新
2026/09/29

同名パッケージの別リポジトリ

インストール

$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 被安全软件挡住或查询超时, 就会被误判成「没开」而重复开窗。现在改成多信号:

  1. 调试端口还应答(最快最可靠,不依赖 PowerShell)—— 有端口就直接认定「已存在」;
  2. 没有端口时再按命令行特征查进程;
  3. 两者都没有、但 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
配置项类型默认值说明
urlstringhttps://chat.deepseek.com要打开的地址,必须 http(s) 开头
browserPreferenceauto|chrome|edgeautoauto = Chrome 优先、Edge 兜底。想固定用 Edge 就写 edge
placementover-dsh|centerover-dshover-dsh 贴着 DSH 窗口内容区摆;center 交给系统随便放
sidebarInsetnumber268over-dsh 时给左侧边栏留的宽度(px)。窗口压住侧边栏就调大
gapnumber10四周留白(px)
minWidth / minHeightnumber520 / 460窗口最小尺寸(px)
relayAppendModereplace|appendreplace接力写入方式。v1.6.0 起默认覆盖;append = 追加(带上限)
relayMaxCharsnumber2000单次互传的字符上限(超出硬截断)。两端一致
draftMaxCharsnumber6000输入框草稿总长上限。仅 append 模式生效,超出裁掉最老的内容
ackTimeoutMsnumber15000网页端等 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             # 网页端等回执的上限(毫秒)
配置默认说明
relaytrue关掉之后 不给 Chrome 加调试端口、不注入脚本 —— 更安全,但也没有划词接力
relayPrefix见上注入到输入框的前缀。必须与网页端脚本一致(两处都改了才不会重复叠加)
relayMaxChars2000单次内容上限,两端都会截断。改大请同步注意卡顿风险
relayAppendModereplace覆盖(默认)或追加。追加会自动带上限与"读回归一",但仍比覆盖慢
draftMaxChars6000追加模式下草稿的总长上限,超出裁掉最老内容
ackTimeoutMs15000网页端等回执上限。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 注入时加的前缀;填 '' 就不要