@starplume/dsh-chat-mode

browsernpmMIT

Adds a Chat/Work switch in the DSH Desktop titlebar: Chat embeds the DeepSeek web chat (chat.deepseek.com) in a native webview with no DSH API calls from the plugin and is the default on first launch, Work keeps the native agent UI, the page stays mounted across switches, and a confirm-first dialog

下载量 / Downloads
233

Install

dsh plugin --profile web add @starplume/dsh-chat-mode

Sandbox test

This plugin has not been tested yet. Submit a test →

README

@starplume/dsh-chat-mode — npm 分发包

与 Starp1ume/dsh-chat-mode 的 GitHub 源码分发并行,使用相同功能代码。

安装:dsh plugin --profile desktop add @starplume/dsh-chat-mode。已有 GitHub / @local 安装可继续使用原渠道;切换渠道前先移除旧安装,避免重复加载。

DSH 聊天 / 工作双模式插件(非官方)

一个给 DeepSeek Harness(DSH)桌面端 用的第三方插件:在同一个界面里提供「聊天」和「工作」两种模式,一键切换。

非官方说明:本项目是个人开发的第三方插件,与 DeepSeek 官方无关。
使用本插件前请自行确认符合 DeepSeek 的服务条款;因使用本插件产生的账号或数据风险由使用者自行承担。
测试范围:Windows + DSH 0.2.1-rc.5 已验证插件加载、模式切换与已有登录恢复;新增自动保存通过 13 项假凭据回归。首次手动登录后的自动保存尚未真人重新登录验收,其他系统未经验证。

界面预览

聊天模式:在 DSH 中使用 DeepSeek 官方网页版。

工作模式:切换回 DSH 原生 Agent 界面。

功能

  • 聊天 / 工作模式切换:标题栏「编辑」菜单右侧有一个分段按钮(聊天 / 工作),两种模式下都可见;默认启动在聊天模式。聊天模式下,插件会用一条受控样式隐藏左上角与侧栏开关相关的标题栏按钮(聊天层覆盖了整个侧栏,点它们没有效果):侧栏展开时隐藏「收起侧边栏」,侧栏收起时隐藏「打开侧边栏」以及标题栏里只在该状态出现的「新建会话」图标;请使用网页自带的侧边栏按钮。
  • 聊天模式不消耗 token:聊天模式内嵌 DSH 桌面端自带的 Electron webview,加载 DeepSeek 官方网页版(默认 https://chat.deepseek.com),由你在页面里自行登录使用。DSH 不会为聊天模式调用 API、不触发 Agent 循环、不产生 token 消耗。
  • 工作模式 = DSH 原生界面:工作模式就是原来的 Agent / Code 界面,行为不变,只有这个模式会调用 API。
  • 带入工作模式(只填不发):在聊天网页里选中文字后,点标题栏「带入工作」:插件用固定脚本只读取当前选中文字(仅在你点击时、且页面为官方站点时执行),然后切到工作模式并显示顶部提示条,不会自动发送,发不发由你决定;每次带入都需要你选择目标会话。带入了哪个会话:切换到另一个会话或新建会话后会自动填入一次(不覆盖输入框已有内容);带入时的当前会话不会自动填入,可点「填入当前会话」手动填入,或点「取消」丢弃。草稿只在内存里(最多 10 分钟,不写任何存储)。「填入当前会话」按钮在任何状态都可点:已有会话时在光标处插入;在新会话窗口点它会新建一个空白会话并填入;新建失败时会提示你先点 DSH 的「新会话」或选择一个会话。模板可在「设置 → 聊天模式 → 带入工作」里修改。没有选中文字或读取失败时,会回退到原来的粘贴对话框;选中文字超过 20000 字会截断并提示。
  • 自动记住登录(实验性):默认开启;在官方聊天页登录后自动保存 localStorage.userToken,网页加载完成或站内跳转时检查更新,值未变化不重复写入,无需手动点保存。下次启动时自动写回并重新加载;仍可用「立即保存登录」手动保存。已有的关闭设置会保留;关闭开关或点「关闭并清除登录」会停止自动保存并删除副本。只处理 userToken 这一项,不碰 cookie、其它存储项或页面内容。

安装

前置条件:Windows 上的 DSH 桌面端(当前基础验证版本为 0.2.1-rc.5),并且当前会话可以执行工具(plugin_manager)。

1. 克隆本仓库(git clone https://github.com/Starp1ume/dsh-chat-mode.git dsh-chat-mode)。

2. 保持该目录在原位。安装时 DSH 会把它以 Junction(目录链接) 的方式链到 profile 的 node_modules/@local/dsh-chat-mode,之后不要移动、重命名或删除该目录,否则插件会失效。

3. 在 DSH 的对话里让 agent 安装,例如:

> 用 plugin_manager 的 install_bundle 安装插件,target 为 D:\path\to\dsh-chat-mode(填本目录的绝对路径)。

如果不熟悉,可以在 DSH 的创造模式里发送这条指令。

安装需要你审批。完成后确认返回 enabled: true、application: applied,且没有额外 warnings。

4. 完全退出 DSH(托盘图标 → 退出,确保进程结束;只关闭窗口只是隐藏到托盘),再重新启动。

说明:因为安装是 Junction 形态,之后修改 client.js 等文件不需要重新安装,完全退出并重启 DSH 即会生效。

首次使用

1. 启动后默认在聊天模式,主区域显示 DeepSeek 官方网页版;如果未登录,按页面提示登录自己的账号。

2. 「自动记住登录」默认开启:正常登录后会自动保存,状态显示「已保存」,下次启动时尝试恢复。旧设置中明确关闭的值会保留,可到「设置 → 聊天模式」重新开启;如果网页已经登录,开启时会立即检查并保存。

保存的登录信息以明文存在本机插件 localStorage 中,同源脚本理论上可读;不希望保留时,关闭开关或点「关闭并清除登录」。

3. 想回到原生 Agent 界面时,点标题栏的「工作」;工作模式按钮会用警示色标出,并带提示「工作模式会消耗 token」。

卸载

1. 打开「设置 → 聊天模式」,先点「关闭并清除登录」(如果存在已保存的登录)。如果跳过这一步,登录信息会留在本机,卸载后无法再通过插件清除。

2. 在 DSH 对话里让 agent 执行 plugin_manager → remove_bundle,target: @local/dsh-chat-mode。

3. 完全退出 DSH 后,检查 C:\Users\<你的用户名>\.dsh\profiles\desktop\node_modules\@local\ 下是否还残留 dsh-chat-mode 目录链接。若残留,用 cmd 删除(不要带 /s,不要用 Remove-Item -Recurse):

   cmd /c rmdir "C:\Users\<你的用户名>\.dsh\profiles\desktop\node_modules\@local\dsh-chat-mode"

4. 重新启动 DSH。

注意:remove_bundle 不一定会自动删除指向仓库目录的 Junction,残留链接需要按上面第 3 步手动清理;清理前请先确认目标目录确实是 node_modules\@local\dsh-chat-mode。

隐私说明

本插件只在本机读写以下数据:插件不会把这些数据发送给除你设置的聊天网站之外的任何服务;写回登录信息时,只写入该聊天网站的页面存储。

存储键(DSH 桌面窗口的 localStorage) · 内容 · 何时写入

dsh-chat-mode:prefs:v1 · 模式偏好:默认模式、网页地址、是否记住上次模式、上次模式、是否记住登录、诊断面板开关、带入工作模板 · 修改设置 / 切换模式时

dsh-chat-mode:login:v1 · 聊天网页 localStorage.userToken 的副本与保存时间 · 自动记住登录开启时:已登录页面加载完成、主框架站内跳转、开启开关、恢复成功后或手动立即保存;令牌未变化时不重复写入

  • 以上内容均为明文,保存在 DSH 桌面端自身的 localStorage(窗口 origin 为 dsh-app://app/),其他同源脚本理论上可以读取。
  • 插件不写入独立文件,也不会读取 document.cookie、其他 localStorage 项、IndexedDB 或页面内容,不分析你输入的文字。
  • 「带入工作」只在你点击时、且页面为官方站点(https://chat.deepseek.com,origin 完全相等)时,用固定脚本读取 window.getSelection().toString()(当前选中文字);读到的文字只放内存,填入后即丢弃,不写入任何存储,不读取聊天记录或输入框里已有内容,也不会自动发送。每次带入都会先在内存中暂存为「待带入草稿」(最多 10 分钟),切到工作模式后由你选择目标会话再填入;带入时的当前会话不会自动填入。不写入 localStorage 或任何其它存储;切回聊天模式、点「取消」或超时会清除。
  • 插件自身唯一的网络行为是让 webview 加载你在设置里填写的聊天网页地址(默认 https://chat.deepseek.com)。页面内部的具体请求由 DeepSeek 官方网页自己发起,与本插件无关。
  • 聊天页面本身可能有自己的 cookie / 本地存储;那些由官方页面管理,插件不读取。

请仅在你自己的电脑上使用「记住登录」。如果怀疑凭据泄露,请到 DeepSeek 的账号设置里处理。

已知限制

  • 位置常量按作者机器测量:标题栏切换按钮的左偏移 TITLEBAR_LEFT_OFFSET = 154、聊天层顶部下移 CHAT_LAYER_TOP = 34 是在特定分辨率 / 屏幕缩放下量出来的,在你的机器上可能出现偏移。

调整方法:编辑 chat-mode/client.js 顶部附近的这些常量 → 完全退出并重启 DSH 生效(不需要重新安装)。

  • 标题栏侧栏按钮的隐藏依赖 DSH 的按钮标识:聊天模式下,插件通过一条受控样式隐藏这些按钮(在 <html> 上设置 data-chat-mode-hide-toggle="1" 并注入一条只作用于它们的 <style>):侧栏展开时的「收起侧边栏 / Collapse sidebar」、侧栏收起时的「打开侧边栏 / Open sidebar」,以及收起状态下才出现在标题栏的「新建会话 / New session」图标(用 [data-sidebar-collapsed="true"] 限定,避免误隐藏展开态侧栏里的同名按钮)。DSH 改版后按钮文案或属性可能变化,失效时表现为按钮重新显示(不影响其它功能,也不会误隐藏其它元素)。如需关闭该行为,把 client.js 里的 HIDE_DSH_SIDEBAR_BUTTON 设为 false,完全退出重启生效。
  • 聊天模式下会把标题栏菜单左移:为消除被隐藏按钮左侧的空白,受控样式把 DSH 的菜单左偏移变量 --dsh-windows-menu-start 覆盖为 12px(只在聊天模式、html[data-chat-mode-hide-toggle="1"] 期间生效;撤销属性后自动恢复 DSH 原值:展开 48px、收起 84px)。切换条仍按「菜单右边界 + 8px」动态测量,并监听 <html> 属性变化重新测量,因此两者一起移动、不会重叠。该方案依赖 DSH 的菜单变量与 preload 菜单宿主,DSH 改版后可能失效——失效时通常表现为左侧空白重新出现(菜单回到原位),不会造成控件重叠或点击异常。
  • 平台与版本:当前版已在 Windows + DSH 0.2.1-rc.5 验证基础加载、模式切换和已有登录恢复;首次手动登录后的自动保存目前通过假凭据回归,尚未真人重新登录验收。DSH 升级后(尤其是桌面端 webview 租约接口变化时)仍需重新验证。
  • 记住登录有边界:只恢复 userToken 一项;如果 token 过期或站点改版,仍需重新登录。在网页里主动退出登录后,插件会清除已保存的登录副本(该检测依赖页面跳转,未必每次都能识别;如果退出后仍被自动登录,请到设置里点「关闭并清除登录」)。恢复时登录页会闪一下再进入已登录状态;恢复失败会自动清除已保存副本并停留在登录页,不会报错。
  • 标题栏是桌面端原生区域:不同缩放比例下若按钮与系统按钮重叠,请通过上面的常量微调。

开发与发布自查

并行 npm 分发包名为 @starplume/dsh-chat-mode。运行 npm run pack:npm,会在系统临时目录生成 .tgz;仅在打包副本里同步转换包名、bundle 引用和客户端模块 id,并添加指向本仓库的 repository 元数据。仓库本身继续使用 @local/dsh-chat-mode,不会修改现有安装。脚本只打包,不自动发布。npm 安装命令为 `dsh plugin --profile desktop

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::2,最后更新 2026-11-02

Links

GitHub · Homepage · npm

Same category