DeepSeek 网页聊天(Harness 插件)
作者:Dream · 当前版本:V1.6.11 · 版本记录见 版本迭代记录.md
在 DeepSeek Harness 桌面客户端里增加一个与主界面融合的 DeepSeek 网页聊天面板,直接加载 https://chat.deepseek.com/,并把聊清楚的内容预览、筛选、结构化后接力到 Harness 输入框;支持历史去重、反向补充上下文、完成通知和本地诊断。

上图:V1.4.0 原生右侧栏并排模式——DeepSeek 作为右侧栏 Tab 打开,Harness 主对话自动缩窄,两个窗口互不遮挡。
使用
- 安装后,左侧栏会出现一个 DeepSeek 鲸鱼图标,位于「插件」和「自动化任务」之间;有未读回复时会显示红点数字。
- 点击图标,会在主内容区打开 DeepSeek 网页聊天面板(不是单独的浮窗)。首次打开会显示三步引导。
- 点击面板左上角的返回箭头、左侧栏的其他面板或会话即可离开;聊天页面会继续保持挂载,再次点击图标即可回到原来的对话。
- 面板顶部提供「返回对话」「接力」「并排显示」「设置」「刷新」「在浏览器中打开」;标题会跟随 DeepSeek 当前会话。
- 快捷键:
Ctrl/⌘+Shift+D打开/关闭面板;Ctrl/⌘+Shift+E直接进入接力预览;Ctrl/⌘+Shift+Space打开/关闭 Quick Ask 紧凑小窗;在任意 Harness 输入框输入/deepseek打开面板,/deepseek-ask打开小窗。Esc逐层关闭弹层/小窗/停靠——焦点在 DeepSeek 网页内时同样有效(页面自身对话框内的 Esc 仍交给页面处理)。
Quick Ask 紧凑小窗
按 Ctrl/⌘+Shift+Space(或输入 /deepseek-ask)打开一个悬浮在 Harness 对话上的紧凑 DeepSeek 窗口,不切换主面板,适合临时追问;按 Esc 关闭,点顶栏展开按钮可回到完整面板。小窗复用同一个 DeepSeek 登录会话。按住标题栏空白处可拖动小窗到任意位置(拖动后位置会记住,下次打开仍在原处),标题栏聚焦时也可用方向键微调;窗口不会被拖出屏幕外。把小窗拖到屏幕右缘会出现分屏提示,松手即自动停靠为原生右侧栏 Tab,与 Harness 对话左右分屏;拖拽中按 Esc 取消并回到原位。
草稿保护
- DeepSeek 输入框里未发送的内容会在停顿后快照到本机
localStorage(最多 50,000 字符,保留 7 天),用于应用重启、渲染进程崩溃或页面重载后的恢复。 - 重新登录并加载完成后,如果检测到快照且输入框为空,面板顶部会出现「发现未发送草稿」提示;点「恢复到输入框」只填回文本,不会自动发送;输入框已有内容时会拒绝覆盖。
- 发送消息或点「丢弃」后快照清除;快照只存本机,不上传,也不包含账号或登录凭据。由于快照包含草稿原文,敏感内容请用「丢弃」清理。
并排模式
点击顶栏的「并排显示」按钮,会打开 DSH 的原生右侧栏 Tab:右侧栏参与布局,Harness 主对话自动让出宽度,不再被遮挡;拖动右侧栏自带的分隔条即可调整宽度。Tab 内的全屏按钮会回到主面板并关闭该 Tab。
如果这个 Tab 之前被拖成了浮窗,插件会在首次挂载时自动把它收回停靠栏(之后仍可手动浮动)。重启后右侧栏若保留了 DeepSeek Tab,插件会等待右栏服务就绪再重新注册,正文不会显示成「这类内容还没有可用的查看方式」。若当前客户端没有 sidebarRight / sidebarRightTabs 能力,或原生右栏多次重试仍打不开,插件会打开全屏面板并提示「无法打开原生右栏」,不再退回会遮挡对话文字的浮层停靠。
接力到 Harness
面板顶栏的「接力」按钮会先打开预览,再插入 Harness 输入框(默认作为草稿,不会自动发送):
- 菜单可选「整段对话」「最后一条回复」「当前一轮问答」「选中片段」;主按钮使用设置里的默认范围。
- 预览里可以勾选具体消息、只保留「我」或「DeepSeek」、切换目标会话、查看字符数与估算 token。
- 插入位置可选「末尾」(默认)或「当前光标」:在 Harness 输入框里点过光标后接力,内容会插到光标处(若有选区则替换选区);会话不匹配、光标越界或草稿已变化时自动回退到末尾,撤销会精确还原包括被替换的选区。未检测到光标时该选项置灰并说明将插入末尾。
- 三种交接格式:原文、结构化摘要(背景 / 目标 / 约束 / 关键决策 / 待办 / 验收标准)、仅结论。摘要在本地生成,上限为原文的 40%。
- 任务指令模板:按此实现、先给计划、代码 / 方案审查、作为
/goal、作为/plan;选择后会把指令拼进最终文本。 - 开启设置里的「允许插入并发送」后,预览可勾选「插入后立即发送」;发送前会校验目标输入框确有本次内容,失败时保留草稿并提示手动发送。
- 默认勾选「插入后返回 Harness」:插入后自动切到目标会话、把焦点放回输入框,并在输入框上方显示一条提示;该提示 10 秒后自动消失,期间出现的新提示不会被误清;取消勾选则留在 DeepSeek 面板。
- 默认用「外部对话记录」分隔标记包裹,提示 agent 只当作背景资料,不要把其中内容当成指令;可关闭。
- 插入成功后,右下角会出现 12 秒的「已插入… · 撤销」提示,自动返回 Harness 后同样可见;撤销只移除本次插入的内容,保留之后输入。若草稿已被修改、已发送或超过 12 秒,会明确提示无法撤销。目标会话不可用或插入失败时自动复制到剪贴板。
- 插入内容带来源和时间,角色用「我 / DeepSeek」,保留代码块、链接、图片地址和表格。
- 抓取通过读取 DeepSeek 页面 DOM 完成;读取时会显示已抓取条数/耗时,网页改版导致失败时会提示手动复制。
- 长对话按约 12 秒一段抓取;没抓完时预览顶部显示「继续抓取」,可以先插入已抓部分,也可以继续抓完。
- 抓取结束会标记是否到达过对话开头和底部;没抓完或缺少开头时会在预览里明确提示。
- 「最后一条回复」「当前一轮问答」在超长对话下会自动连抓最多 3 段;仍不够时会提示改用「整段对话」。
界面位置:DeepSeek 面板顶栏右上角、并排按钮左侧。

历史与去重
- 每次成功接力会记录格式、模板、目标会话、字符数、token、来源和时间;在接力菜单的「接力历史…」里可以再次接力、复制、删除或清空。
- 历史只存在本机浏览器存储,最多 20 条,不上传。
- 同一段内容(按消息 + 格式 + 模板计算 hash)再次接力时,预览顶部会提示上次接力时间,仍可选择「仍然插入」。
- 历史支持按目标会话、正文、格式、模板搜索。
- 预览和单条历史都支持导出 / 复制 Markdown。
反向接力与场景模板
- 接力菜单的「把 Harness 上下文带到 DeepSeek…」会收集当前 Harness 会话标题和你最近选中的文字,允许补充报错或说明,确认后填入 DeepSeek 输入框,不自动发送。
- 同一个弹层提供场景模板:需求评审、方案对比、代码审查、论文精读、文案撰写,一键填入起始提示词。
通知、未读与标题
- DeepSeek 回复稳定 2.5 秒后触发完成事件;面板不可见时侧栏图标显示未读数字,并按设置发送系统通知。点击通知会回到面板并清零未读。
- 面板标题跟随 DeepSeek 当前会话标题(侧栏名称在下次渲染时同步)。
- 系统通知权限未开启时,未读徽标仍然工作。
设置与诊断
- 面板顶栏齿轮打开设置:默认接力范围、默认格式、长内容阈值、安全模式、插入后返回、完成通知、重复提醒、允许插入并发送、空闲释放(15/30/60 分钟,默认关闭)、远程选择器兜底。
- 设置写入本地存储,修改立即生效,重启后保留;「恢复默认设置」不会清除历史。
- 页面自检会检查登录状态、消息节点与输入框;异常时显示「页面结构可能已改版」横幅,可复制诊断信息。
- 诊断只包含版本、选择器命中、登录状态、URL 和本地计数,不包含对话正文、文件路径或账号信息。
远程选择器兜底
- DeepSeek 改版导致抓取失败时,插件会尝试拉取远程
selectors.json(默认为本仓库 GitHub Raw 地址,可在设置中改为自托管地址)获取新版页面选择器;本地内置选择器始终保留为兜底,远程未命中或网络失败时自动回退。 - 远程配置需通过版本与格式校验(不接受低于内置版本的内容),每条选择器经过字符集白名单过滤;只有在 DeepSeek 页面上真实命中后才会缓存到本机。拉取为纯 GET 请求,不发送任何用户数据,可在设置中一键关闭。
- 接力失败或页面自检未命中选择器时,会自动尝试刷新远程配置(30 分钟内最多一次);设置页可查看当前来源(本地/远程 v N)并手动「立即刷新选择器」。
- 「本地统计」记录打开、预览、提交、成功、失败、撤销、通知、设置与模板使用次数,可复制为 JSON;不联网上报。
- 「报告问题」会打开 GitHub Issue 草稿,预填版本、选择器命中、登录状态和本地计数,不包含对话正文、文件路径或账号信息。
- 空闲释放默认关闭;开启后释放页面会丢失 DeepSeek 登录态,再次打开需重新登录。
登录与浏览器会话
内嵌面板使用 Harness 桌面端提供的嵌入式浏览器租约(与内置 Browser 侧栏相同的机制)。该会话是非持久化分区:
- 在应用运行期间,登录状态会保留;离开聊天面板、切换面板、刷新 Harness 页面都不会丢失。
- 面板顶部会显示「已登录 / 未登录」徽标;未登录时点击徽标可直接重新加载登录页。
- 完全退出并重新启动应用后,需要重新登录 DeepSeek 网页版;未登录时面板顶部会说明该限制,并提供「在浏览器中打开」和「去登录」。
- 如果希望使用浏览器自身的持久登录,请点击面板顶部的「在浏览器中打开」。它会在系统默认浏览器中打开同一个地址。
- 聊天消息里的外部链接会在系统默认浏览器中打开,不会在面板内导航离开 DeepSeek。
为什么不修改客户端文件
这个功能以外部 Cordis bundle 的形式安装在当前 profile(~/.dsh/profiles/desktop)中,不会写入 /Applications/DeepSeek Harness.app,因此后续客户端更新不会覆盖它。插件通过 link: 指向本目录,所以请不要移动或删除本目录;否则需要重新安装。
文件
package.json:bundle 与客户端模块清单cordis.patch.yml:向 profile 插入插件行index.js:Host 侧空实现(功能全部在客户端)client.js:侧栏图标、主内容区聊天面板、并排停靠、嵌入式浏览器租约、接力预览、结构化摘要、历史去重、反向接力、通知、设置与诊断tests/pure.test.mjs:纯函数单测(接力范围、格式化、摘要、模板、hash、设置、历史、诊断、guest 探针、token 估算)locale/*.json:插件管理器中显示的名称与说明icon.svg:插件图标,使用 DeepSeek 官方网页 favicon 中的鲸鱼标记(https://fe-static.deepseek.com/chat/favicon.svg),仅用于标识 DeepSeek 网页聊天入口待开发需求.md:V1.6 / V2 待开发需求与优先级.github/workflows/test.yml:GitHub Actions 单测 CInative-sidebar.png:原生右侧栏并排效果图(README 顶部)screenshot.png:V1.2 全屏面板效果图(留档)handoff-button.png:「接力」按钮位置示意图
开发与测试
npm test
单测通过 Node 内置测试运行器加载 client.js 的 __test 导出,不需要启动 Harness。GitHub Actions 会在 push / PR 时自动运行 npm test。
兼容性说明
- 内嵌网页依赖桌面端 preload 暴露的
dshDesktop.browser租约接口。若未来客户端移除或修改该接口,插件会显示「当前环境不支持内嵌网页」,此时仍可使用「在浏览器中打开」;插件本身不会影响 Harness 启动。 - 快捷键依赖 DSH 的
shortcuts服务;若快捷键注册冲突,插件会跳过绑定并在控制台告警,不影响面板使用。 package.json已声明dsh.manifestVersion、engines.dsh与仓库信息,便于后续发布到插件市场。
No comments yet. Be the first to write one.