# DeepSeek 网页聊天(Harness 插件)· 版本迭代记录 > 作者:Dream > 版本规则:从 V1.0 起,每次完成一次功能开发后提交一次 Git commit,并在此处追加对应版本记录。 > 版本号同时写入 `package.json` 的 `version` 字段。 ## 版本总览 | 版本 | 日期 | 类型 | 摘要 | | --- | --- | --- | --- | | V1.0 | 2026-10-17 | 初始版本 | 在 Harness 内嵌 DeepSeek 网页聊天面板 | | V1.1 | 2026-10-17 | 功能新增 | 把 DeepSeek 对话接力到 Harness 输入框 | | V1.2 | 2026-10-18 | 体验升级 | 接力预览、并排停靠、快捷键、登录徽标、首启引导、安全包裹与格式化保真 | | V1.3 | 2026-10-18 | 闭环升级 | 结构化交接、任务模板、历史去重、反向接力、完成通知、设置页、导出与诊断 | | V1.3.1 | 2026-10-18 | 修复 | 过滤 DeepSeek 默认页标题,避免把 Slogan 当会话标题显示 | | V1.3.2 | 2026-10-18 | 体验修复 | 并排模式支持拖拽调整宽度、记住宽度与键盘微调 | | V1.4.0 | 2026-10-18 | 并排升级 | 接入 DSH 原生右侧栏 Tab,Harness 主对话真正让出宽度 | | V1.5.0 | 2026-10-18 | 效率与分发 | Quick Ask 小窗、历史搜索、问题反馈入口与 GitHub Actions CI | | V1.5.1 | 2026-10-18 | 修复 | 窄宽度下接力菜单不再被面板裁切,支持夹紧、换行与上翻 | | V1.6.0 | 2026-10-18 | 可靠性 | 草稿快照:重启/崩溃/重载后可恢复未发送内容 | | V1.6.1 | 2026-10-18 | 可靠性 | 长对话分段抓取、检查点续抓与首尾覆盖标记 | | V1.6.2 | 2026-10-18 | 修复 | 接力完成提示 10 秒后自动消失,不误清后续提示 | | V1.6.3 | 2026-10-18 | 修复 | 并排优先原生右栏并自动取消浮窗;失败退回全屏;未登录说明重启需重登 | | V1.6.4 | 2026-10-18 | 修复 | 重启后右侧 DeepSeek Tab 空白:等待右栏服务就绪后再注册 Tab 类型 | | V1.6.5 | 2026-10-18 | 可靠性 | 撤销一致性:全局 12 秒撤销条,只移除插入块并保留后续输入 | | V1.6.6 | 2026-10-18 | 修复 | DeepSeek 聊天中的链接可正常在系统浏览器打开 | | V1.6.7 | 2026-10-18 | 修复 | 链接打开双通道:guest 侧点击拦截 + onOpenRequested,确保外部链接可达系统浏览器 | | V1.6.8 | 2026-10-18 | 修复 | 原生右栏并排时,聊天面板头部下边线与左侧会话窗口头部下边线对齐 | | V1.6.9 | 2026-10-18 | 可靠性与效率 | 远程选择器兜底、网页内 Esc 桥、接力插入位置(末尾/当前光标) | | V1.6.10 | 2026-10-18 | 体验修复 | Quick Ask 小窗支持按住标题栏拖动、位置记忆与视口夹紧,不再固定遮挡内容 | | V1.6.11 | 2026-10-18 | 体验新增 | 拖拽小窗靠近屏幕右缘出现分屏提示,松手自动停靠原生右侧栏与对话分屏 | ## 详细记录 ### V1.6.11 — 2026-10-18 **新增:拖拽 Quick Ask 小窗到屏幕右缘时出现分屏停靠提示,松手即分屏** - 拖拽过程中指针进入屏幕右缘 56px 区域(视口宽度 ≥720px 才启用)时,右侧滑出半透明分屏提示条:「松开停靠到右侧栏 · 与 Harness 对话分屏」;离开区域提示即消失。 - 在提示区内松手:关闭小窗并直接打开 DSH 原生右侧栏 Tab(复用既有 `openDock` 链路,与「并排显示」按钮同路径;原生右栏不可用时仍回退全屏面板并提示),此次不记录悬浮位置。 - 该路径把 `toggleDock` 的原生停靠分支抽取为 `openNativeDock` 复用,行为与按钮点击完全一致。 - 拖拽中按 `Esc` 取消本次拖拽:提示消失、小窗回到拖拽起点,不关闭任何浮层。 - 埋点新增 `dsc_quick_snap`(分屏停靠使用率)。 - 新增 `quickSnapZoneActive` 纯函数与单测(阈值边界、窄视口禁用、非法值),总用例 55。 ### V1.6.10 — 2026-10-18 **修复:Quick Ask 紧凑小窗固定遮挡 Harness 内容且无法拖拽** - 现象:`/deepseek-ask` 打开的小窗位置固定,正好压在 Harness 对话内容上,用户只能关闭它。 - 修复 1(拖拽):按住小窗标题栏空白处即可拖动,Pointer Capture 跟踪拖拽,拖动期间 webview 设为 `pointer-events: none` 防止 iframe 吞掉移动事件;标题栏上的按钮(返回/接力/并排/设置/刷新/浏览器打开)不受影响,仍是点击行为。 - 修复 2(位置记忆):拖动结束把位置写入本机 `localStorage`(只存 left/top 两个数字),下次打开恢复;未保存过或数据损坏时使用默认几何位置。 - 修复 3(视口夹紧):窗口尺寸/位置变化时只做夹紧(保持完整可见且标题栏可达),不再重置回默认位置;越界保存值也会被夹回。 - 附加:标题栏聚焦(如刚点过其中按钮)时可用方向键按 20px 微调位置。 - 新增 `clampQuickRect` / `restoreQuickRect` / `loadQuickRect` / `saveQuickRect` 纯函数与 4 个单测,总用例 54。 ### V1.6.9 — 2026-10-18 **三项交付:R1 远程选择器兜底 · R5 网页内 Esc 桥 · E2 接力插入位置** **1. 远程选择器兜底(R1)** - DeepSeek 改版导致内置 CSS 选择器失效时,自动拉取远程 `selectors.json`(默认本仓库 GitHub Raw,可在设置里改为自托管地址),本地候选始终保留在链路末尾兜底。 - 安全校验:版本号不得低于本地(防降级);每条选择器做字符集与长度白名单(≤120 字符、≤8 条/组,拒绝反斜杠/尖括号等),`keyAttribute` 仅接受 `data-*` 形态;全部 `querySelector` 调用包裹 try/catch,畸形选择器只会失配、不可能执行代码。 - 命中验证后才缓存:拉取成功后在 guest 里探测,`messages`/`composer`/`assistant` 任一命中才写入 localStorage 并启用;未命中、格式无效、网络失败均回退本地且不破坏旧缓存(旧缓存标记为 stale 沿用)。 - 节流:常规 6 小时内不重复拉取;接力失败/健康检查未命中触发的补救刷新 30 分钟内最多一次;设置页可关闭与手动「立即刷新」。 - 完成通知观察器支持热更新:选择器集合存放于 guest 的 `window.__DSH_DSC_SELECTORS__`,刷新成功后重注入安装器即可更新运行中的观察器,不会重复注册。 - 诊断信息新增 `selectorSource`(messages 首个命中选择器的真实来源)与 `selectorFallback`(开关/地址/缓存版本/获取时间)。 - 仓库新增 `selectors.json` 作为远程配置的规范样例;请求为纯 GET,不携带任何用户数据。 **2. 网页内 Esc 桥(R5)** - 焦点在 DeepSeek 网页内时按 Esc 也能逐层关闭插件浮层:guest 注入 keydown 监听,通过 console 桥(`__DSH_DSC_ESC__`)回传宿主,走与宿主按键完全相同的 Esc 级联(菜单 → 预览 → 确认框 → 引导 → 设置 → 历史 → 反向 → 提示 → Quick → 停靠 → Tab → 返回)。 - 克制策略:页面自身消费过的 Esc(`defaultPrevented`)与页面内对话框(`role=dialog` / `aria-modal`)内的 Esc 不转发,先让 DeepSeek 自己处理;工具栏关闭按钮保留为最终兜底。 - 宿主与 guest 双向各 250ms/400ms 防抖,杜绝同一次按键被处理两层的可能。 **3. 接力插入位置(E2)** - 接力预览新增「插入位置:末尾 / 当前光标」:通过 `selectionchange` 持续记录 Harness 输入框的最后光标(含选区),预览时快照为插入点;未检测到光标时该选项禁用并提示将插入末尾。 - 校验链:目标会话必须与光标所属会话一致;插入偏移不得超出草稿长度;光标前 32 字符锚文本必须与提交时草稿吻合——任一不满足自动回退「末尾」模式,不会把内容插错位置。 - 撤销一致性:光标模式记录插入偏移与被替换的选区文本,撤销时精确还原原始草稿(含被替换内容);末尾模式同样带偏移,撤销不再依赖文本搜索定位。 - 埋点 `dsc_handoff_commit` 新增 `position` 字段(end/cursor,按实际生效模式统计)。 **其他** - `undoInsertedDraft` 支持 `offset`/`replaced` 精确回滚,保留旧文本匹配兜底。 - 新增 13 个单测(Esc 桥、插入位置/撤销/回退链、选择器清洗/合并/缓存/探测/guest 前向兼容),总用例 51。 ### V1.6.8 — 2026-10-18 **修复:原生右栏并排模式下,右侧聊天面板头部下边线与左侧会话窗口头部下边线相差 6px** - 现象:会话窗口(对话/轨迹 Tab 行)的头部下边线在 76.5px 处,而右侧栏「DeepSeek 网页聊天」头部下边线在 82.5px 处,两条横线错位。 - 根因:DSH 原生右侧栏的面板挂在 dockkit 标签条(28px 行 + 10px 上内边距 = 38px)之下,插件头部栏硬编码 44px,38 + 44 = 82px;而主栏会话头部(ConversationRoot)为 `min-height:76px` + 0.5px 边线。 - 修复:嵌入模式头部栏高度改为 `var(--dsh-dsc-embedded-bar-height, 38px)`;挂载后实时测量主栏会话头部的下边缘与面板顶部边缘之差并写入该变量(`data-conversation-header-leading` 定位、`ResizeObserver` 跟踪头部与主体尺寸变化、120/400ms 延迟重试),保证两条下边线始终重合。 - 兜底:测量不到头部(如主栏非会话页、未来 DOM 变化)时回落到 38px 常量——与当前外壳默认 76px 头部对齐;空白会话(无对齐目标)钳制到最小 38px,保证 28px 控件可用。 - 不受影响:Quick 小窗、并排浮窗、主面板全屏模式的头部仍为 44px。 - 新增 `embeddedBarHeight` 单测与 CSS 契约测试,总用例 38。 ### V1.6.7 — 2026-10-18 **修复:链接点击仍无反应(V1.6.6 补充)** - V1.6.6 的 `bridge.onOpenRequested` 订阅依赖主进程 IPC 链路(guest → `setWindowOpenHandler` → `browserOpenRequested` IPC → preload 分发),该链路在部分场景下可能未触达。 - 本版增加 **guest 侧链接拦截器**:在 DeepSeek 页面注入 capture 阶段的 `click` / `auxclick`(中键)监听,检测到跨域 `http/https` 链接时 `preventDefault()` 并通过已有的 console 桥(`__DSH_DSC_LINK__`)回传 URL;宿主收到后用 `window.open(url, '_blank', 'noopener,noreferrer')` 打开系统浏览器。 - 已验证 DSH 主窗口的 `setWindowOpenHandler` 对 `http:/https:` 一律调 `shell.openExternal`,所以 `window.open` 在任何上下文(含非用户手势)都能到达系统浏览器。 - 同源链接(chat.deepseek.com 内部路由)不拦截,SPA 导航不受影响;`#hash`、`javascript:` 协议不拦截。 - 保留 V1.6.6 的 `onOpenRequested` 订阅作为第二通道,两条路径互为兜底。 - 新增 `installLinkInterceptorInGuest` 单测(验证 capture 注册 + 幂等),总用例 36。 ### V1.6.6 — 2026-10-18 **修复:DeepSeek 聊天中的链接点击无反应** - 根因:DSH 桌面端主进程对所有 guest webview 内的 `window.open` / `target=_blank` 一律 `deny` 弹窗,同时把 URL 通过 IPC `browserOpenRequested` 转发给渲染进程。内置 Browser 标签订阅了 `bridge.onOpenRequested(lease, cb)` 处理;本插件此前从未订阅,所以点链接没反应。 - 修复:webview 获取 lease 后订阅 `bridge.onOpenRequested`,回调用 `window.open(url, '_blank', 'noopener,noreferrer')` 在系统默认浏览器打开;释放 lease 前取消订阅。 - 全屏面板、原生右栏 Tab、Quick Ask 小窗共用同一个 webview 生命周期,三处均生效。 - 无新增单测(订阅与回调是平台接线,无纯逻辑可测);现有 35 个用例全部通过。 ### V1.6.5 — 2026-10-18 **撤销一致性(R4)** - `delivery.deliver` 现在返回精确的 `{ before, inserted, at }`;新增 `delivery.undo` 用「插入块」做精确移除,不再把整个草稿替换回插入前状态。 - 撤销时如果用户在插入后又输入了内容,会保留这些新输入(`before + 后续输入`);如果草稿被修改、已发送或超过 12 秒,会返回失败并提示「无法撤销:草稿已修改或已发送」。 - 新增全局 `shell.overlay` 撤销条:自动返回 Harness 后也能在右下角看到「已插入 n 条 · m 字」+「撤销」,12 秒后自动消失;不再只依赖 `Ctrl/⌘+Z`。 - 面板内的完成 toast 保留统计与返回入口,撤销统一由全局撤销条提供,避免两套不一致的行为。 - 「插入并立即发送」路径会先清掉旧的撤销条,避免撤销条指向已被发送覆盖的草稿。 - 新增 `undoInsertedDraft` 与 `delivery.undo` 单测,总用例 35。 ### V1.6.4 — 2026-10-18 **修复:重启后右侧 DeepSeek Tab 显示「这类内容还没有可用的查看方式」** - 根因是加载顺序:重启后右侧栏会先恢复上次的 Tab,而 DeepSeek 插件执行 `apply` 时 `sidebarRightTabs` 服务可能尚未就绪,旧的 `ctx.get` 判断直接跳过了 Tab 类型注册;正文按 Tab kind 查找时没有注册项,于是显示 DSH 的 `tab.unavailable` 兜底。 - Tab 类型注册改为 `ctx.inject(['sidebarRightTabs'], ...)`:服务就绪后自动注册,服务不存在时继续等待;保留无 `ctx.inject` 时旧的 `ctx.get` 路径。 - 不额外注册 `tab.kind` 别名:类型迟到时先显示 DSH 兜底,类型就绪后正文按 `TAB_ID` 挂载一次即可,避免别名与正式 key 之间切换导致 webview 重建、登录页重载。 - 无新增单测(依赖 DSH 插件加载顺序);现有 34 个用例全部通过。 ### V1.6.3 — 2026-10-18 **修复:并排时遮挡对话、未登录无说明** - 并排改为优先打开原生右侧栏:先 `openTab`,失败时先回到会话、展开右栏并在 80/120ms 后重试;成功后再在 Tab 首次挂载时把可能处于浮窗状态的 DeepSeek tab 通过 `dock(paneId)` 收回停靠栏,避免浮窗覆盖 Harness 对话文字;之后用户仍可手动浮动。 - 原生右栏仍无法打开时,不再退回会遮挡文字的浮层停靠,而是打开全屏面板并提示「无法打开原生右栏」;全屏面板占用主内容区,不会覆盖对话。 - 未登录时面板顶部新增说明条:「DSH 的浏览器分区不持久:重启应用后需要重新登录」,并提供「在浏览器中打开」和「去登录」两个入口。 - 登录持久化仍受平台限制:桌面端 browser lease 的分区名是进程内随机 UUID(`dsh-sidebar-browser-`,无 `persist:`),插件不读取或保存 Cookie/登录凭据;需要持久登录时请用系统浏览器,或等平台提供持久分区。 - 新增 `dockPaneById` 单测,总用例 34。 ### V1.6.2 — 2026-10-18 **修复:接力完成提示常驻不消失** - 自动返回 Harness 后,输入框上方的「已插入 n 条…」提示现在会在 10 秒后自动清除,不再一直占住输入框上方。 - `delivery.notify` 返回本次通知对象(含 `seq`);新增 `delivery.dismissNotify`,只清理由自己创建的那条提示,若期间出现了新的提示则保持不变。 - 单测覆盖通知创建、按 `seq` 清除,以及旧计时器不误清后续提示。 ### V1.6.1 — 2026-10-18 **长对话分段抓取(V1.6「可靠」第二增量)** - 抓取改为 12 秒一段、最多 120 步;预算用完时返回检查点(滚动位置 + 是否到顶),不再因一次超时丢掉全部已抓内容。 - 预览顶部新增「继续抓取」:从检查点继续向下抓,按虚拟列表 key 去重合并,保留已勾选状态;没抓完时可以先插入部分内容。 - 抓取结果增加 `done` / `atStart`:到达底部才标记完成;未到达顶部时提示「可能缺少对话开头」,预览文案明确未完整。 - 「最后一条 / 当前一轮」在超长对话下自动连抓最多 3 段;仍不完整时提示改用「整段对话」,避免把上段内容误当成最新回复。 - `requestAnimationFrame` 增加 160ms 兜底,页面在后台被节流时仍能推进;单段执行超时由 45 秒改为 20 秒。 - 新增 `mergeCapturedMessages` / `mergePreviewMessages` / `captureSegment` 与检查点续抓单测,总用例 33。 - README 补充分段抓取与继续抓取说明。 **下一版预留** - R1 选择器远程兜底、R4 撤销一致性、R5 网页内 Esc 桥、E2 插入位置。 ### V1.6.0 — 2026-10-18 **草稿保护(V1.6「可靠」第一增量)** - guest 输入观察器在停顿约 1.2 秒后回传输入框草稿;宿主保存到本机 `localStorage`,上限 50,000 字符,保留 7 天。 - 重启、重新登录或崩溃重载后,面板顶部提示「发现未发送草稿」,可恢复到输入框或丢弃;恢复只填文本,不自动发送。 - 恢复前双重检查输入框为空(宿主探针 + guest `overwrite=false`),避免覆盖用户已经输入的内容;快照带会话标题与时间。 - 发送消息或点「丢弃」后清除快照;快照仅存本机,不上传,不包含账号或登录凭据。 - 新增 4 个单测,覆盖草稿校验/过期/截断、console 桥消息、guest 观察器回传与禁止覆盖;总用例 29。 - README 增加草稿保护说明;`待开发需求.md` 标记 R2 完成。 **下一版预留** - R3 分段抓取与首尾校验、R1 选择器远程兜底、R4 撤销一致性、R5 网页内 Esc 桥、E2 插入位置。 ### V1.5.1 — 2026-10-18 - 接力菜单改为按视口夹紧的 fixed 弹层:窄面板/Quick Ask 小窗下不再被 `overflow: hidden` 裁切。 - 菜单宽度按面板宽度限制,长菜单项自动换行;菜单高度超过可用空间时纵向滚动,靠近底部时自动向上展开。 - 新增 `menuLayout` 纯函数与单测,覆盖窄面板夹紧和上翻场景。 ### V1.5.0 — 2026-10-18 - 新增 Quick Ask 紧凑小窗:`Ctrl/⌘+Shift+Space` 或 `/deepseek-ask` 打开,悬浮在当前 Harness 对话上,不切换主面板;`Esc` 关闭,顶栏按钮可展开为完整面板;复用同一 DeepSeek 登录分区。 - 接力历史支持按目标会话、正文、格式、模板搜索;无匹配时显示空状态。 - 设置页新增「报告问题」:预填版本、选择器命中、登录状态与本地计数,打开 GitHub Issue 草稿;popup 被拦截时自动复制诊断信息。 - 本地单测扩展到 24 个用例;新增 `.github/workflows/test.yml`,在 Node 24 上运行 `npm test`,README 增加 CI 徽标。 - 新增 `待开发需求.md`,整理 V1.6「可靠」与 V2.0「增长」的剩余需求、优先级和估算。 ### V1.4.0 — 2026-10-18 - 注册原生 `sidebarRightTabs` 类型与 `sidebar.right.pane.tab` 内容:并排不再用浮层覆盖 Harness,而是作为右侧栏 Tab 参与布局,主对话自动让出宽度。 - 复用同一 workspace 浏览器分区,原生右栏与主面板共享 DeepSeek 登录态;切换并排时保留主面板页面状态,避免丢失未发送的草稿。 - Tab 内提供全屏按钮:回到主面板并关闭 Tab;没有 `sidebarRight` 能力的旧客户端自动回退到浮层停靠与拖拽调宽。 - 原生右栏宽度使用 DSH 自带的分隔条调整。 ### V1.3.2 — 2026-10-18 - 并排模式新增左侧分隔条:拖动可自由调整 DeepSeek 面板宽度,双击恢复默认,聚焦后按左右方向键微调;宽度写入设置并记住。 - 面板宽度限制在可用窗口内,避免把 Harness 对话挤到不可用。 ### V1.3.1 — 2026-10-18 - 面板标题跟随会话时,过滤 `DeepSeek`、`DeepSeek Web Chat`、`DeepSeek - Into the Unknown` 等默认页标题;回到新会话时回退为「DeepSeek 网页聊天」,不再把品牌 Slogan 显示成会话标题。 ### V1.3 — 2026-10-18 **从「搬运原文」升级为「可选择的交接」** - 预览新增三种交接格式:原文、结构化摘要(背景 / 目标 / 约束 / 关键决策 / 待办 / 验收标准)、仅结论。摘要由本地启发式规则生成,不调用额外模型,并限制在原文的 40% 以内。 - 新增任务指令模板:按此实现、先给计划、代码 / 方案审查、作为 `/goal`、作为 `/plan`。选择 `/goal` 或 `/plan` 时命令 token 放在内容最前面,避免被安全包裹挡住。 - 新增「插入并发送」能力:需要在设置中开启,并在预览中显式勾选;发送前校验目标输入框里确实有本次内容,失败时保留草稿并提示手动发送。 - 新增接力历史:记录格式、模板、目标会话、字符数与估算 token、来源和时间;支持再次接力、复制、删除、清空。历史上限 20 条,只存在本地。 - 新增重复接力提醒:按「消息内容 + 格式 + 模板」计算 hash,命中历史时在预览顶部提示上次接力时间,仍允许再次插入。 - 预览新增「导出 .md」,保留角色、链接、图片、表格与安全包裹。 **反向接力与上下文** - 新增「把 Harness 上下文带到 DeepSeek」:捕获 Harness 侧选区、当前会话标题,允许补充报错或说明,确认后填入 DeepSeek 输入框,不自动发送。 - 新增场景模板:需求评审、方案对比、代码审查、论文精读、文案撰写,一键生成起始提示词。 **通知、未读与标题** - 在 DeepSeek 页面注入轻量观察器:回复稳定 2.5 秒后通过 guest `console` 回传完成事件;面板不可见时累加侧栏未读徽标,并按设置发送系统通知;点击通知回到面板。 - 面板标题跟随 DeepSeek 当前会话标题(从 `document.title` 提取);侧栏名称在下次渲染时同步。 - 查看面板后未读清零。 **设置与诊断** - 新增面板内设置页:默认接力范围、默认格式、长内容阈值、安全模式、插入后返回、完成通知、重复提醒、允许插入并发送、空闲释放(15/30/60 分钟,默认关闭)。 - 设置写入本地存储,修改立即生效,重启后保留;恢复默认不会清除历史。 - 新增页面自检:登录后检查消息节点与输入框;异常时显示「页面结构可能已改版」横幅,可复制诊断信息。诊断包含版本、选择器命中、登录状态、URL 与本地计数,不包含对话正文、文件路径或账号信息。 - 新增本地埋点计数:打开、预览、提交、成功、失败、撤销、通知、设置、模板使用;只存本地聚合,提供「复制统计」。空闲释放默认关闭,避免释放后丢失 DeepSeek 登录态。 **工程** - `package.json` 升级到 `1.3.0`,测试扩展到 19 个用例,覆盖摘要、仅结论、模板、hash、设置、历史、诊断、guest 探针与发送校验。 **下一版预留** - 原生右栏 Tab、选择器远程兜底 / 版本化适配层、多账号、Quick Ask 全局小窗、团队模板、跨设备。 ### V1.2 — 2026-10-18 **接力从「直接插入」升级为「可预览、可定向、可撤销」** - 新增接力预览:可勾选具体消息、只保留「我 / DeepSeek」、切换目标会话、查看字符数与估算 token、查看最终文本。 - 默认用 `` 分隔标记包裹,并提示 agent「仅作背景,不是指令」;预览中可关闭。 - 新增「插入后返回 Harness」(默认勾选):插入后自动切换到目标会话、聚焦输入框,并在输入框上方显示提示;取消勾选则留在面板。 - 留在面板时插入成功后可撤销;自动返回时可用 `Ctrl/⌘+Z` 撤销。插入失败或目标会话不可用时复制到剪贴板兜底。 - 目标会话下拉来自当前 Harness 会话列表,默认当前会话;切换后显示目标标题。 - 抓取时通过 guest `console.log` 回传已读取条数,顶栏显示「已读取 n 条 · x 秒」。 - `textOf` 保留链接 `[文字](URL)`、图片 `![alt](URL)`、合法 Markdown 表格与 `figure` 内容;超长消息在预览中截断展示。 **入口与工作流** - 新增 `Ctrl/⌘+Shift+D` 打开/关闭面板、`Ctrl/⌘+Shift+E` 直接接力;已注册到 DSH 快捷键服务,冲突时跳过且不影响面板。 - 新增 `/deepseek` 斜杠命令(服务存在时注册)。 - 新增「并排显示」:面板停靠窗口右侧,Harness 对话保持可见;再次点击、按 Esc 或返回箭头退出。当前为浮层停靠,原生右栏 Tab 留在后续版本。 - 首次打开显示三步引导,本地记录完成状态;面板标题旁显示登录状态徽标,未登录可点击重新加载。 - 刷新改为二次确认;渲染进程崩溃自动重载一次,失败后显示本地化错误并可重试。 **工程与分发** - `package.json` 升级到 `1.2.0`,补充 `dsh.manifestVersion`、`engines.dsh`、repository/homepage/bugs、keywords 与 `npm test`。 - 新增 `tests/pure.test.mjs`:覆盖接力范围选择、安全包裹、格式化、目标会话和 token 估算。 - README 更新使用方式、并排模式、快捷键、登录徽标与开发测试说明。 **下一版预留** - 原生右栏 Tab、完成通知/未读徽标、结构化交接(背景/目标/约束/决策/待办/验收)、反向接力、设置页。 ### V1.1 — 2026-10-17 **接力到 Harness** - 面板顶栏新增「接力」按钮,默认把 DeepSeek 网页聊天的整段对话插入 Harness 当前会话的输入框;右侧菜单可切「最后一条回复」「当前一轮问答」「选中片段」。 - 读取走 `webview.executeJavaScript`:滚动收集虚拟列表里的消息,按 DOM 结构区分 user / assistant,保留代码块,自动恢复原滚动位置。 - 写入走 DSH 的 `conversation.input.shell(sessionId).actions`,插入为可撤销的草稿,不自动发送;失败时退回 `setDraft`,再失败则复制到剪贴板。 - 插入内容带来源、时间、范围与角色标注;超过 2 万字符先确认。 - 找不到当前会话或输入框时给出明确提示,不影响插件原有功能。 ### V1.0 — 2026-10-17 **初始版本发布** - 左侧栏新增 DeepSeek 鲸鱼图标入口,位于「插件」与「定时任务」之间。 - 点击图标在主内容区打开 DeepSeek 网页聊天面板(`https://chat.deepseek.com/`),以嵌入式浏览器租约加载,不是独立浮窗。 - 面板顶部提供「返回对话」「刷新」「在浏览器中打开」三个操作;离开面板后聊天页面继续挂载,再次点击图标可回到原对话。 - 应用运行期间保持登录会话;完全重启应用后需重新登录,可改用系统浏览器打开以获得持久登录。 - 兼容性处理:当桌面端未暴露 `dshDesktop.browser` 租约接口时,显示「当前环境不支持内嵌网页」,并保留「在浏览器中打开」兜底。 - 以外部 Cordis bundle 形式安装在当前 profile,不修改客户端安装目录,客户端更新不会被覆盖。