Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>DSH Launcher - DeepSeek Harness 启动与内嵌面板New to Visual Studio Code? Get it now.
DSH Launcher - DeepSeek Harness 启动与内嵌面板

DSH Launcher - DeepSeek Harness 启动与内嵌面板

young1839

|
188 installs
| (1) | Free
DeepSeek Harness integration for VS Code: one-click start/stop/update DSH, embed the full Web GUI (chat, sessions, settings, plugins) in an editor tab, file two-way sync, status bar. 已适配 DSH 0.1.5+ 的浏览器会话认证。支持 WSL2 / Remote-WSL。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

DSH Launcher(启动 + 内嵌面板)

DeepSeek Harness 的 VS Code 集成:侧边栏一键下载、检查更新并启动 DSH,把完整 Web GUI 内嵌进 VS Code,支持文件双向联动。提供完整性检查与自动修复、保留会话记录的安全卸载与彻底卸载(连数据一起删)。不修改 DSH 的 profile(package.json / cordis.patch.yml),卸载即无痕。

功能

🚀 启动器面板(活动栏 ▶ 图标)

  • 显示 DSH 最新版本 / 本地缓存版本 / 运行状态
  • ▶ 启动 DSH(当前版本):只用本地缓存的版本启动,不联网、不检查、不下载(秒开);完全没有缓存(首次安装)时自动回退到 npx 现下载并启动,等待时间自动延长到 10 分钟
  • ⬇️ 下载 / 🔄 检查更新:智能两段式逻辑——本地没有 DSH 时自动下载安装(首次安装);本地已有 DSH 时检查 npm 最新版,有新版才下载,已是最新则提示。下载后不会自动重启,提示"先 ⏹ 终止,再 ▶ 启动"才生效
  • 🩺 检查完整性:检查每个缓存版本的结构(package.json、包自己声明的入口、lib 目录、node_modules/.bin/dsh 链接)、依赖完整性(对照 package.json 的 dependencies 逐一核对)与入口可运行性(真实执行 dsh --version)。发现问题时询问是否自动修复:删除损坏的缓存并重新下载同版本(会话记录不受影响)
  • 🗑 卸载 DSH(保留会话记录):删除 npx 缓存中的 DSH 程序文件(运行中会先终止服务),完整保留 ~/.dsh 下的全部会话记录、配置与凭据(sessions / profiles / storages / settings.yaml / .credentials.yaml),重新安装后一键恢复
  • 🔥 彻底卸载(删全部数据):在卸载弹窗中选择「彻底卸载」并二次确认,除程序文件外连 ~/.dsh 全部数据(会话/配置/凭据)一起删除,不可恢复,适合完全清除 DSH 痕迹
  • 点击 ⏹ 终止 DSH 服务:按端口(默认 3080)精确定位并终止该实例,不会误杀其它端口上的 dsh(带确认弹窗;已持久化的会话重启后可恢复)
  • 端口守卫:配置的端口已有实例时不重复启动
  • 后台进程独立运行(nohup),关闭 VS Code 不影响 DSH

🖥 内嵌 DSH 面板(完整 Web GUI)

  • 在编辑器标签页打开(像打开文件一样),不是侧边栏
  • iframe 嵌入真实 dsh web 前端:聊天、会话、设置、模型、agent preset、全部 DSH 插件原样可用
  • 与浏览器 WebUI 共享同一个运行中的实例(默认 127.0.0.1:3080)
  • 未运行时打开面板会自动启动(可关)
  • 自动完成 DSH 0.1.5+ 的浏览器会话认证:新版 Web GUI 的 / 与 /api/** 需要 dsh-auth-* 会话 cookie(由 dsh web 启动时打印的 ?token= 换取)。插件在本地反向代理的上游请求上注入该 cookie,webview 侧完全无感,不会再看到 dsh web authentication required 的 401 页面。认证材料有两路:① 读本机 ~/.dsh 里的持久签名密钥离线签发(重启/换实例都有效);② 从启动日志取本次进程的 ?token= 交给代理换取(官方路径)。前者被拒绝时自动改用后者
  • 启动统一使用 dsh web --no-open --port <port>:不再抢占系统浏览器,端口显式指定,启动输出留在日志里供插件取令牌
  • 通过本地反向代理加载:代理在 HTML 中注入桥接脚本,实现文件联动(见下)
  • 面板底部显示当前宿主平台、代理端口与认证来源,便于排查
  • 状态栏显示 DSH:3080,点击直接在编辑器打开面板
  • 认证/连接异常时面板给出可操作按钮:↻ 重试 / ⟳ 重启 DSH 并重试(让插件接管启动以取得令牌)/ 🔗 直连模式

📂 文件双向联动

行为 说明
点击交付文件 chip / 工具文件链接 直接在 VS Code 编辑器打开(Windows 宿主自动经 wslpath 转换路径)
agent 新建文件 按策略自动在编辑器打开(autoOpenCreated)
agent 修改文件 已打开且无未保存修改的文档自动同步;有未保存修改的绝不覆盖(syncChangedOpen)
agent 删除文件 自动关闭对应标签,有未保存修改的保留(closeOnDeleted)
监听目录 可配置(watchDirs,默认跟随 workspace 设置),自动忽略 node_modules/.git/.dsh/.npm

安装

  1. 命令面板(Ctrl+Shift+P)→ Extensions: Install from VSIX...
  2. 选择 dsh-launcher-1.2.0.vsix
  3. 活动栏出现 ▶ DSH 图标(DSH 启动器视图);内嵌面板通过状态栏或启动器里的按钮打开

使用

  • 下载 / 更新:DSH 启动器 → "⬇️ 下载 / 🔄 检查更新"(首次会自动下载安装)
  • 启动:DSH 启动器 → "▶ 启动 DSH(当前版本)"
  • 完整性检查:DSH 启动器 → "🩺 检查完整性";发现问题时确认后自动修复
  • 卸载:DSH 启动器 → "🗑 卸载 DSH(保留会话记录)"→ 弹窗选「卸载(保留会话)」或「彻底卸载(删全部数据)」(后者需二次确认,点右上角 × 取消)
  • 内嵌:状态栏 DSH:3080 或启动器里"🖥 打开内嵌 DSH 面板"→ 在编辑器标签页打开完整 Web GUI
  • 浏览器:启动器面板 → "🌐 在浏览器打开"(0.1.5+ 会带上本次启动的 ?token=,因此不会出现 401 页面;若 DSH 不是插件启动的,会提示先重启 DSH 以取得令牌)
  • 日志:WSL 内 /tmp/dsh-launcher.log(含 dsh web: http://127.0.0.1:3080/?token=…,插件据此登录)

配置(设置 → 搜索 dshLauncher)

设置 默认值 说明
dshLauncher.port 3080 DSH Web GUI 端口
dshLauncher.workspace /home/young1839/test 启动时工作目录(新会话默认工作区)
dshLauncher.wslDistro Ubuntu WSL 发行版(仅 Windows 扩展宿主)
dshLauncher.autoStartOnOpen true 打开面板时自动启动
dshLauncher.watchDirs [] 文件联动监听目录(留空=workspace)
dshLauncher.autoOpenCreated true 新建文件自动打开
dshLauncher.syncChangedOpen true 无未保存修改的文档自动同步
dshLauncher.closeOnDeleted true 删除文件关闭标签

工作原理

  • 启动(v1.2.0 起):优先 npx 缓存 dsh → 其次 npm 全局安装的 dsh(真实部署)→ 最后才 npx --yes @deepseek-ai/dsh@latest web 兜底下载;统一追加 --no-open --port <port>(0.1.5+ 默认会打开系统浏览器,插件改为自己决定何时打开)。工作目录不存在时不再 cd 短路;端口守卫 + nohup;启动成功或已在运行都会自动打开内嵌面板
  • 下载/更新(v1.1.4 起识别全局安装):存在 npm 全局安装 → npm install -g @deepseek-ai/dsh@latest 更新真正在跑的那份;无全局安装 → 本地无缓存时 npx 直接下载,有缓存时先查 npm 最新版、有新版才下载(多版本并存,启动始终取最新);全程有进度心跳提示
  • 完整性检查(v1.2.0 起版本无关):逐个检查 npx 缓存版本——① 结构:package.json / 入口(取包自己声明的 bin)/ lib 目录 / .bin/dsh 链接;② 依赖:对照 dependencies 逐一核对平铺 node_modules;③ 运行:真实执行 dsh --version。修复:删除损坏的 npx 缓存根并重新下载同版本
  • 卸载:删除 ~/.npm/_npx/* 中含 DSH 的缓存目录(先按端口精确终止运行中的服务);~/.dsh(会话/配置/凭据)原样保留,重装后立即可恢复历史会话;彻底卸载则额外删除 ~/.dsh 全部数据(不可恢复)
  • 内嵌(v1.2.0 起自动登录):本地反向代理(动态端口)转发到 DSH 实例,HTML 响应注入桥接脚本;代理把 Host/Origin 改写成上游 authority 以通过 DSH 的信任栅栏,并注入 dsh-auth-* 会话 cookie(同时剥掉浏览器里的同名旧 cookie,避免抢先命中 401);HTTP 与 WebSocket 升级(/api/events.mux、/api/events.host 实时事件通道)均透明转发;chip 点击 → postMessage → VS Code 打开文件
  • 认证材料:① ~/.dsh/.credentials.yaml 的 client-connection/browser-session.secret → 本地按 v1.<payload>.<hmac> 离线签发会话 cookie(30 天有效,重启不变);② 日志里的 ?token= → 代理向上游 GET /?token=… 换取 Set-Cookie。两条都用不上时(例如换过凭据目录),面板会引导「⟳ 重启 DSH 并重试」
  • 文件联动:监听 DSH 工作区目录的创建/修改/删除事件
  • 扩展宿主在 Windows 时经 wsl.exe 进入 WSL 操作;在 Remote-WSL 时直接执行

数据安全

数据 位置 卸载(保留会话) 彻底卸载
会话记录 ~/.dsh/sessions/ ✅ 保留 🗑 删除
配置(settings.yaml) ~/.dsh/ ✅ 保留 🗑 删除
凭据(.credentials.yaml) ~/.dsh/ ✅ 保留 🗑 删除
存储(storages/) ~/.dsh/ ✅ 保留 🗑 删除
程序文件(可再生的缓存) ~/.npm/_npx/*/ 🗑 删除 🗑 删除

默认卸载只动 npx 缓存(程序文件),~/.dsh 数据完整保留;只有「彻底卸载」才会删除 ~/.dsh(有二次确认,且不可恢复)。完整性修复也只动缓存,任何情况下不删数据。

环境要求

  • VS Code >= 1.90
  • WSL Ubuntu 内 Node.js >= 20 与 npm
  • Windows 宿主需要 WSL(wsl.exe)

已知限制

  • 聊天正文里以纯文本形式出现的文件路径(非 chip)暂不自动联动
  • 内嵌 iframe 需要 DSH 实例允许被框住(当前版本不发送 X-Frame-Options,已实测可用)
  • DSH 0.1.5+ 的会话认证是进程级随机的:若 DSH 不是由插件启动、且 ~/.dsh/.credentials.yaml 也不可读/已更换,需要点面板里的「⟳ 重启 DSH 并重试」让插件接管一次
  • 完整性修复需要能访问 npm 仓库(重新下载同版本)

离线自测

仓库内附带两个不需要打开 VS Code 的验收脚本(已从 vsix 中排除):

node test-proxy-auth.js        # 纯代理:验证认证注入 / Bridge 脚本 / 资源与 /api 转发
node test-extension-auth.js    # 验证扩展侧认证解析(密钥签名 + 日志令牌)
node test-start-flow.js 3099   # 端到端:start() → 取令牌 → 代理 → 打开首页(用备用端口,不动 3080)

前提:DSH 正在运行。test-start-flow.js 会在指定端口启停一个临时实例,并备份/还原 /tmp/dsh-launcher.log。

卸载扩展(插件本身)

扩展管理 → DSH Launcher → 卸载。已启动的 DSH 实例与 profile 均不受影响。

变更记录

v1.2.0

  • 🐛 修复「内嵌面板打不开」:DSH 0.1.5+ 的 Web GUI 新增浏览器会话认证(/ 与 /api/** 需要 dsh-auth-* cookie,未认证返回 401 dsh web authentication required),旧版插件直接把 iframe 指向 http://127.0.0.1:3080,于是面板里只剩一行 401 文本。现在由本地代理在上游请求上注入会话 cookie,webview 侧无感登录
  • 🔐 两条认证路径 + 自动降级:① 读 ~/.dsh/.credentials.yaml 的持久签名密钥离线签发 cookie(重启/换实例都有效);② 从启动日志取本次进程的 ?token= 交给代理换取 Set-Cookie(官方路径)。前者被拒绝时自动改用后者;都不可用时面板给出「⟳ 重启 DSH 并重试」引导
  • 🚀 启动参数适配 0.1.5+:统一 dsh web --no-open --port <port>——不再发生 DSH 自己弹出系统浏览器;端口显式指定;?token= 落到日志供插件取用
  • 🧹 代理健壮性:Host/Origin 改写成上游 authority 以通过新的信任栅栏;剥掉浏览器自带的同名旧 cookie(避免抢先命中 401);HTTP 与 WebSocket 升级都注入认证
  • 🔧 完整性检查版本无关化:入口改为读包自己声明的 bin(不再硬编码 config/agent-presets,该目录在 0.1.5+ 已不存在,会误报"缺少文件")
  • 🔧 终止更安全:ss → lsof → fuser → pgrep --port 逐级按端口定位,不再无差别 pgrep -f "dsh web"(多实例并存时不误杀)
  • 🌐 「在浏览器打开」带令牌:不再是必然 401 的裸地址;DSH 非插件启动时会提示先重启以取得令牌
  • 🧩 文件 chip 桥接兼容新版标记:同时识别新版 P4kPIW_file 与旧版 fileLink
  • 🧪 新增 3 个离线验收脚本(test-proxy-auth.js / test-extension-auth.js / test-start-flow.js)

v1.1.3

  • 🔧 原生对话框兼容修复:VS Code webview 沙箱不带 allow-modals,内嵌面板里 window.confirm / alert / prompt 会被浏览器静默忽略(confirm 恒返回 false,表现为按钮"点了无效"——如设置 → 对话管理 → 删除对话)。代理桥接脚本现以 <dialog>.showModal() 实现同语义的同步对话框兜底(页面内 DOM 渲染,不受沙箱 modals 限制),任何插件里的 confirm/alert/prompt 在内嵌面板都能正常工作
  • 🧹 清理桥接脚本冗余代码

v1.1.2

  • 🎨 更换活动栏按钮图标与市场图标为定制角色图(深/浅主题自适应)

v1.1.1

  • 🆕 卸载弹窗新增彻底卸载(删全部数据):连 ~/.dsh 会话/配置/凭据一起删除(二次确认,不可恢复);弹窗右上角 × 为取消
  • 🎨 内嵌面板底部代理信息栏改为右下角悬浮标签,不再占整行
  • 🔧 内嵌 iframe 权限增强(modals / popups / downloads)+ 新窗口桥接:插件设置确认弹窗、插件市场、外部链接可正常打开

v1.1.0

  • ➕ 新增完整性检查:结构 / 依赖 / 入口运行三层检查,发现问题可一键自动修复(删损坏缓存 + 重下同版本)
  • ➕ 新增安全卸载:删除 DSH 程序文件但保留全部会话记录与配置(~/.dsh)
  • 🔄 改进下载/更新:本地无 DSH 时自动下载安装;已有缓存时才检查更新,已是最新则提示

v1.0.1

  • 首个发布版本:启动 / 停止 / 更新 / 内嵌面板 / 文件双向联动
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft