DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

alaxrpg /

alaxrpg/dsh-chatgpt-pip

Verified

DSH 插件:ChatGPT 画中画小窗 + 把 ChatGPT 定稿计划回流到新 DSH 对话执行

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@c573bddb

dsh-chatgpt-pip

DSH(DeepSeek Harness)插件:在会话输入区左侧打开 ChatGPT 普通聊天小窗,并把已复制的 ChatGPT 计划回流到新 DSH 对话执行。

安装

0.4.0 支持 DSH Lite 原生小窗(外壳 WKUIDelegate 承接 window.open)。安装经插件市场「更新」流程;或选择本插件目录手动 file: 安装后重启 DSH。重启并刷新 GUI 后,可在 boot 清单确认 dsh-chatgpt-pip,并确认 /plugins/dsh-chatgpt-pip/client.js 返回 200;资源 URL 的 rev 应等于当前 client.js sha1 前 12 位。

双按钮位置

进入任一 DSH 会话后,两个动作显示在 conversation.input.left(会话输入区左侧):

  1. 「打开 ChatGPT 小窗」在前;
  2. 「执行已复制计划」在后。

两个按钮均使用纯线性 SVG,并提供 tooltip 与 aria-label;不使用 ChatGPT 商标图标。该槽位是 session scope,因此没有会话时不会显示,属于预期行为。

ChatGPT 小窗

点击「打开 ChatGPT 小窗」会以命名 popup 打开 https://chatgpt.com/:

  • 首次打开和需要重开时固定请求 520×760;不自动读取或记忆用户拖动后的尺寸。
  • 当插件持有的 WindowProxy 可访问且未关闭时,只聚焦已有窗口,不导航,因而保留当前聊天页面。
  • 5 秒防误开:小窗成功打开后 5 秒内重复点击只会提示「小窗已打开,请切换到该窗口」,不会再次打开新窗口;超过 5 秒后再次点击走同名重开逻辑。
  • chatgpt.com 的 COOP 隔离可能让插件无法区分「窗口仍在但被隔离」与「窗口真的关闭」。此时插件用相同窗口名调用 window.open 尽力复用或重开,但不承诺绝对只有一个窗口。
  • 在 DSH Lite(macOS 原生外壳)中,window.open 由外壳的 WKUIDelegate 承接为原生小窗(与 DSH 主窗共享登录态)。窗口已存在时外壳只聚焦并返回 nil,插件据此视为「已复用成功」而非拦截;仅在没有任何历史窗口时才提示弹窗被拦截。

登录、个性化、历史与隐私

这里打开的是普通 ChatGPT 聊天,不是临时聊天。登录由浏览器 profile cookie 保存,因此小窗会使用该账户的 Memory、Custom Instructions 和人格设置;对话会进入账户历史,并可能按 ChatGPT 自身规则更新 Memory。

插件不读取、存储或传输 ChatGPT 凭据、Cookie、Memory、Custom Instructions、人格设置或页面 DOM,也不会通过 API 操作 ChatGPT。

执行已复制计划

  1. 在 ChatGPT 回复中复制定稿计划。
  2. 回到已有 DSH 会话,点击输入区左侧的「执行已复制计划」。
  3. 弹层会尝试读取剪贴板;读取失败时可直接在文本框手动粘贴。
  4. 查看或编辑全文,核对字符数,并在「目标工作区」下拉中确认或切换到目标 workspace(选项显示工作区标题与路径,超出 48 字符的路径中间省略);空文本无法执行。
  5. 按需切换来源说明开关。关闭时原文发送,不截断、不改写。
  6. 点击「在新对话中执行」,插件创建或复用 blank DSH 会话,并把最终文本作为首条消息发送。

任何内容都只会在用户于弹层中显式确认后发送;不存在定时或后台自动注入路径。

为什么不是 iframe?

chatgpt.com 使用 x-frame-options: SAMEORIGIN,不能跨站 iframe 嵌入;其 cross-origin-opener-policy: same-origin 也会限制 opener 对 popup 状态的观察。因此插件采用命名 popup。在 DSH Lite 中该 popup 由原生外壳落地为独立小窗;在其他浏览器(Chrome/Safari)中则是普通命名标签页/窗口,并把窗口复用描述为尽力行为,而不是绝对保证。

浏览器建议

推荐 Chrome。Safari 或权限拒绝可能导致自动读取剪贴板失败,此时手动粘贴通道仍可使用。

故障排查

症状 处理
看不到两个按钮 先进入任一 DSH 会话;无会话时 session scope 动作不会显示。再强制刷新并核对 boot 清单与 client.js 200。
点击小窗按钮提示弹窗被拦截 在普通浏览器地址栏允许当前 DSH 地址弹出窗口后重试。在 DSH Lite 中则需确认外壳已升级到带 WKUIDelegate 原生小窗的版本(0.x+);无任何历史窗口时才会提示拦截。
再次点击后出现多个窗口 5 秒内重复点击只提示不重开;超过 5 秒后的同名重开是尽力行为,COOP 隔离下仍无法承诺绝对单窗。DSH Lite 原生小窗为单例,重复点击只聚焦。
弹层显示工作区 UUID 0.3.0 起下拉按工作区标题+路径展示;仍显示 UUID 说明该工作区没有标题且路径不可读,或列表快照未就绪。
重开后尺寸不是上次拖动值 这是预期行为;首次和重开固定为 520×760,不自动记忆拖动尺寸。
读不到剪贴板 直接在预览文本框手动粘贴。
提示未找到 workspace 先在 DSH 中打开或创建一个工作区。
执行失败 根据弹层中的具体错误重试;仍失败时重启 DSH 后再试。

开发验证

node --check lib/index.js
node --check lib/client.js
node --test
openspec validate native-popup-support --strict

License

MIT © 2026 alaxrpg

—/ 5

No ratings yet

Verified DSH bundle

Commit c573bddbe3b1

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout