Back to home@alaxrpg

dsh-chatgpt-pip

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

Stars
0
Language
JavaScript
Created
Aug 28, 2026
Updated
Aug 28, 2026
GitHub repo

Introduction

dsh-chatgpt-pip

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

动机

ChatGPT Plus 会员的 Agent/API 类用法受 5 小时限额约束,而 web 聊天不限量。理想的日常工作流是:

  1. 在 ChatGPT web 里无限制地讨论、打磨执行计划;
  2. 把定稿计划交给本地 DSH agent 立即执行。

本插件把两个割裂的环境桥接起来:侧栏一键打开 ChatGPT 画中画小窗,会话头部一键把剪贴板中的计划文本注入新建的 DSH 对话——不再需要手动缩放浏览器标签、手动复制粘贴长文本。

安装

市场安装(推荐)

  1. 打开 DSH Web GUI 的插件市场;
  2. 搜索 dsh-chatgpt-pip 并安装;
  3. 重启 DSH 生效。

验证安装

  • 强制刷新页面(macOS:⌘⇧R)后,在浏览器 DevTools 的 Network 面板过滤 plugins,boot 清单应出现 dsh-chatgpt-pip 行,且 /plugins/dsh-chatgpt-pip/client.js 请求返回 200;
  • DSH 侧栏底部出现「ChatGPT 画中画」入口即安装成功。

用法

入口一:ChatGPT 画中画小窗(侧栏底部)

  1. 点击 DSH 侧栏底部的「⊞ ChatGPT 画中画」入口(宽栏显示文字,窄栏仅显示图标);
  2. 浏览器打开(或聚焦已打开的)命名为 dsh-chatgpt-pip 的 popup 小窗,加载 https://chatgpt.com/
  3. 再次点击入口会复用并聚焦同一个窗口(不会重复开窗),并导航回 https://chatgpt.com/
  4. 小窗默认约 480×720、靠屏幕右侧;调整过的尺寸会被记忆(存于 localStorage),下次按记忆尺寸打开。

ChatGPT 登录态由你的浏览器自带;小窗内会话过期时按 ChatGPT 正常流程重新登录即可,本插件不接触任何凭据。

入口二:执行 ChatGPT 计划(会话头部)

  1. 在 ChatGPT 回复上点「Copy」复制计划文本;
  2. 点击 DSH 会话头部的「⇥ 执行 ChatGPT 计划」按钮,打开预览弹层;
  3. 弹层会尝试自动读取剪贴板(来源徽标显示「剪贴板」+ 前 80 字符预览);读不到时直接在文本框里 ⌘V 粘贴(徽标显示「手动粘贴」);
  4. 在文本框中完整查看/编辑计划(实时字符计数;空文本时执行按钮禁用);
  5. 核对「目标工作区」名称正确;
  6. 按需切换「附加来源说明」开关(默认开启:在计划正文前附加一行说明,让 agent 明确文本性质;关闭则原文直发,均不截断);
  7. 点击「在新对话中执行」:插件在目标 workspace 创建新对话并把最终文本作为首条消息自动发送,本地 agent 立即开始执行,弹层自动关闭。

任何内容都只在点击「在新对话中执行」之后才发送——没有定时/后台自动注入路径。

为什么是 popup 小窗而不是 iframe?

chatgpt.com 的响应头实测返回:

  • x-frame-options: SAMEORIGIN(禁止一切跨站 iframe 嵌入)
  • cross-origin-opener-policy: same-origin + CORP

因此唯一可行的小窗形态是 window.open 命名 popup:复用浏览器登录态、不受嵌入限制。插件也不会以编程方式读取或操纵小窗内的页面内容(跨域隔离,技术上不可行也不必要)。

浏览器建议

推荐使用 Chrome:DSH GUI 是 secure context,Chrome 下弹层可自动读取剪贴板。Safari 不授予网页剪贴板读权限,弹层的「手动粘贴」通道仍可正常工作(直接 ⌘V)。

命名窗口复用说明:再次点击侧栏入口时,Chrome 会复用同一小窗并导航回 chatgpt.com 首页;个别浏览器(如部分 Firefox 版本)在携带窗口特性参数时可能只聚焦而不重新导航——此时小窗停留在你最后浏览的位置,手动回到首页即可,功能不受影响。

故障排查

症状处理
安装后看不到入口强制刷新页面(⌘⇧R)清掉旧 boot 清单;确认 Network 面板中 /plugins/dsh-chatgpt-pip/client.js 返回 200
点击侧栏入口没反应/提示「弹窗被拦截」浏览器拦截了 popup:在地址栏弹窗图标中选择「始终允许 127.0.0.1(或你的 DSH 地址)的弹出式窗口」,然后重试
弹层读不到剪贴板Safari 或权限拒绝属预期降级:直接在文本框 ⌘V 粘贴即可
弹窗能开但提示「未找到可用工作区」先在 DSH 中打开或创建一个工作区,再执行计划
执行后弹层报错错误信息会原样显示在弹层内(连接失败/会话不可用/注入失败),可点击重试;仍失败请重启 DSH 后重试
小窗尺寸没被记住尺寸记忆存于 localStorage;隐私模式或存储被清理时按默认尺寸打开,属预期降级

开发

node --check lib/index.js   # 语法检查(host 空实现)
node --check lib/client.js  # 语法检查(client bundle)
node --test                 # 全量测试(node:vm 沙箱加载 client.js,无第三方依赖)

纯函数逻辑(窗口 features 拼装、尺寸记忆降级、计划文本规整、执行编排)全部内联在 lib/client.js 的 factory 内并经 exports.__internals 暴露,测试经 test/helpers/load-client.js 在 mock 沙箱中直接执行同一份源码(单一代码真源,无双份漂移)。

License

MIT © 2026 alaxrpg