🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

VS Code 工作台 tingfeng347/dsh-vscode-workbench

DeepSeek Harnessv0.1.10
tingfeng3471 天前有提交已提供中文文档扫描:含敏感能力

DeepSeek Harness 的 VS Code 风格本地开发工作台:文件管理、Monaco…

40.8/100
综合分
14
GitHub 星标
661
npm 周下载
—/5
用户评分

数据截至 2026/11/7 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-vscode-workbench
npm 源 · dsh-vscode-workbench 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]—
曾在 dsh 0.2.1-rc.5 下真实安装成功,但当前 dsh 已更新至 0.2.2-rc.1,本站尚未在新版下复验
L4 · 真实安装等级说明 →
数据截至 2026/10/31·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 1 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-vscode-workbench @ 0.1.10
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 07:03:01

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 47 处,展示前 35 条)
  • 读取本地文件
    lib/index.js:102
    return realpath(cwd).catch(() => {
  • 读取本地文件
    lib/index.js:113
    if (!inside(root, await realpath(dirname(absolute)).catch(() => {
  • 读取本地文件
    lib/index.js:116
    } else if (!inside(root, await realpath(absolute).catch(() => {
  • 读取本地文件
    lib/index.js:132
    const values = await readdir(absolute, { withFileTypes: true });
  • 读取本地文件
    lib/index.js:140
    const actual = await realpath(full).catch(() => void 0);
  • 读取本地文件
    lib/index.js:142
    const info = await stat(full);
  • 写入本地文件
    lib/index.js:180
    await writeFile(temp, content, {
  • 写入本地文件
    lib/index.js:185
    await rename(temp, absolute);
  • 删除本地文件
    lib/index.js:187
    await rm(temp, { force: true });
  • 写入本地文件
    lib/index.js:194
    if (kind === "directory") await mkdir(absolute);
  • 写入本地文件
    lib/index.js:222
    await rename(source.absolute, target.absolute);
  • 删除本地文件
    lib/index.js:227
    await rm(absolute, {
  • 执行外部命令来自配置/变量
    lib/index.js:266
    const child = spawn(command, args, {
  • 启用终端会话(PTY)
    lib/index.js:738
    const child = pty.spawn(shell, args, {
  • 写入本地文件
    lib/index.js:794
    rename(cwd, id, title) {
  • 发起网络请求
    src/client/api.ts:6
    const response = await fetch(`/dsh-vscode/api/${method}`, {
  • 发起网络请求
    src/client/terminal.ts:24
    const response = await fetch(`/dsh-vscode-terminal/api/${method}`, { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.strin
  • 读取本地文件
    src/host.ts:29
    return realpath(cwd).catch(() => { throw new WorkbenchError('cwd-missing', 'session working directory does not exist', 404) })
  • 读取本地文件
    src/host.ts:39
    const parent = await realpath(dirname(absolute)).catch(() => { throw new WorkbenchError('parent-missing', 'parent directory does not exist', 404) })
  • 读取本地文件
    src/host.ts:42
    const actual = await realpath(absolute).catch(() => { throw new WorkbenchError('not-found', 'path does not exist', 404) })
  • 读取本地文件
    src/host.ts:55
    const values = await readdir(absolute, { withFileTypes: true })
  • 读取本地文件
    src/host.ts:59
    const actual = await realpath(full).catch(() => undefined)
  • 读取本地文件
    src/host.ts:61
    const info = await stat(full)
  • 写入本地文件
    src/host.ts:91
    await writeFile(temp, content, { encoding: 'utf8', flag: 'wx' })
  • 写入本地文件
    src/host.ts:92
    try { await rename(temp, absolute) } catch (error) { await rm(temp, { force: true }); throw error }
  • 删除本地文件
    src/host.ts:92
    try { await rename(temp, absolute) } catch (error) { await rm(temp, { force: true }); throw error }
  • 写入本地文件
    src/host.ts:98
    if (kind === 'directory') await mkdir(absolute)
  • 写入本地文件
    src/host.ts:119
    await rename(source.absolute, target.absolute)
  • 删除本地文件递归
    src/host.ts:125
    await rm(absolute, { recursive: true, force: false })
  • 执行外部命令来自配置/变量
    src/host.ts:143
    const child = spawn(command, args, { cwd, shell: false, windowsHide: true })
  • 读取本地文件
    src/index.ts:44
    res.end(await readFile(asset.path))
  • 读取本地文件
    src/index.ts:55
    res.end(await readFile(asset.path))
  • 读取本地文件
    src/index.ts:88
    kind:'prefix',path:'/dsh-vscode/file',handler:async(req,res)=>{if(!authorize(req,res,ctx.connection))return;try{const url=new URL(req.url??'/','http:/
  • 读取本地文件
    src/index.ts:98
    res.end(await readFile(asset.path))
  • 启用终端会话(PTY)
    src/terminal.ts:46
    const child = pty.spawn(shell, args, { name: 'xterm-256color', cols: 80, rows: 24, cwd: key, env: sanitizedTerminalEnv(process.env) })
扫描于 2026/11/5(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-group@deepseek-ai/cordis-plugin-include@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-app-boot@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-session@deepseek-ai/dsh-client-ui-sidebar@deepseek-ai/dsh-client-ui-slots
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

3 张 · 点击查看大图

功能亮点

  • 文件管理
  • Monaco编辑
  • 分屏终端
展开完整介绍(80 字)↓

DeepSeek Harness 的 VS Code 风格本地开发工作台:文件管理、Monaco 编辑、文档预览、搜索、Git、分屏终端与 DSH 对话一体化。

README

由 DeepSeek 最新模型翻译生成
DSH VS Code Workbench 在 DeepSeek Harness 中叠加 VS Code 风格的本地开发工作台。 中文 · English 亮点 - 一体化本地工作台:资源管理器、Monaco 编辑器、搜索、Git、终端和 DSH 对话集中在一个 VS Code 风格界面。 - 完整文件体验:文本、Markdown、图片、PDF 和 Word 文档均可直接打开;目录支持拖放上传和常用文件操作。 - 可靠且实时:原子保存与版本校验避免静默覆盖,WebSocket 会及时标记工作区的外部变更。 - 可视化 Git 工作流:覆盖状态、暂存、提交、分支、差异、提交文件与泳道式提交图。 - 可持续的工作上下文:按工作区恢复标签、目录、视图、面板与栏宽;终端支持多会话、分屏与重命名。 - 贴合 DSH:右侧直接复用 DSH 对话能力,主题与布局集中在工作台设置中管理。 功能 - 文件与编辑器:懒加载目录树、创建、上传、拖放、重命名、删除和 Git 状态;Monaco 多标签编辑支持脏状态、原子保存与冲突提示。 - 预览:Markdown 支持源码、大纲、相对链接和图片;内置 PDF 翻页缩放与 DOCX 渲染,DOC/ODT 可直接下载打开。
展开完整文档(README 剩余 1 节)
DSH VS Code Workbench

在 DeepSeek Harness 中叠加 VS Code 风格的本地开发工作台。

中文 · English

亮点

- 一体化本地工作台:资源管理器、Monaco 编辑器、搜索、Git、终端和 DSH 对话集中在一个 VS Code 风格界面。
- 完整文件体验:文本、Markdown、图片、PDF 和 Word 文档均可直接打开;目录支持拖放上传和常用文件操作。
- 可靠且实时:原子保存与版本校验避免静默覆盖,WebSocket 会及时标记工作区的外部变更。
- 可视化 Git 工作流:覆盖状态、暂存、提交、分支、差异、提交文件与泳道式提交图。
- 可持续的工作上下文:按工作区恢复标签、目录、视图、面板与栏宽;终端支持多会话、分屏与重命名。
- 贴合 DSH:右侧直接复用 DSH 对话能力,主题与布局集中在工作台设置中管理。

功能

- 文件与编辑器:懒加载目录树、创建、上传、拖放、重命名、删除和 Git 状态;Monaco 多标签编辑支持脏状态、原子保存与冲突提示。
- 预览:Markdown 支持源码、大纲、相对链接和图片;内置 PDF 翻页缩放与 DOCX 渲染,DOC/ODT 可直接下载打开。
- 搜索与 Git:@vscode/ripgrep 支持大小写、全词、正则和路径筛选;Git 提供暂存、撤销、丢弃、提交、分支、差异、提交文件和提交图表。
- 终端:基于 node-pty 与 xterm,支持最多 8 个会话、会话重命名、右侧切换、分屏、ANSI 输出和 Ctrl+C。
- 布局与 DSH:左侧视图、终端面板和右侧 DSH 对话栏可独立显示和调整;设置面板管理主题与各栏宽度。
- 同步与恢复:工作区文件变化实时推送;刷新后恢复活动视图、标签、目录展开、面板和布局。

工作台通过官方 sidebar.footer.action 与 shell.overlay 扩展点挂载,不替换或卸载 ui-layout。

演示

资源管理器与 Monaco 编辑器

源代码管理与提交图表

终端

安装

插件 0.1.11 适配 DeepSeek Harness 0.2.1-rc.5(Cordis 4.0.5)。请先更新 Harness,再安装插件;旧版对应关系见下表。

npm i -g @deepseek-ai/dsh@0.2.1-rc.5

dsh plugin --profile web add dsh-vscode-workbench

首次安装终端支持

终端使用 node-pty。如果安装日志提示其构建脚本被阻止,在 DSH 所在机器的 ~/.dsh/profiles/web/pnpm-workspace.yaml 中合并以下配置,保留已有设置:

allowBuilds:
node-pty: true

新版 Harness 可能回滚失败的安装,配置后应重新执行安装命令。若插件已安装但终端仍提示 node-pty 加载失败,可执行:

cd ~/.dsh/profiles/web
pnpm rebuild node-pty

刚发布不足 24 小时的版本可能被 pnpm 的安全等待期拦截。等待后重试即可;DSH 提供“立即更新”时可直接选择它。

从旧版升级

运行中的插件管理器启用 HMR 时,不允许覆盖安装同名包。先在插件管理器中移除旧版,再安装新版;CLI 可使用:

dsh plugin --profile web remove dsh-vscode-workbench
dsh plugin --profile web add dsh-vscode-workbench

完成后重新打开工作台,必要时重启 dsh web 并刷新页面。

安装失败:Harness 版本不兼容

如果安装只以这一行结束,说明 DSH 在安装前就拒绝了插件,pnpm 没有执行、也没有任何文件被写入:

dsh: plugin command failed; diagnostics: ~/.dsh/profiles/<profile>/.plugin-manager/logs/operation-/pnpm.log

原因是 Harness 的兼容性预检:优先用插件的 engines.dsh 比对当前 Harness 版本;未声明时,检查所有 @deepseek-ai/dsh peerDependencies。预发布版本也参与匹配,不满足就中止安装。诊断日志里能看到真正的结论:

dsh: installation rejected: Plugin dsh-vscode-workbench@<插件版本> is incompatible with dsh <Harness 版本>: peerDependencies {...} dsh: nothing was installed.

插件市场把这类失败归入通用的 plugin-side install failure,所以自动提交的 Issue 里不会带上上面这行,正文只剩 pnpm.log 的路径。

| 插件版本 | 需要的 Harness |
| 0.1.11 | 0.2.1-rc.5(Cordis 4.0.5,默认基线);另验证 0.2.2-rc.1(Cordis 4.1.0,Node.js ≥24.9) |
| 0.1.10 | 0.2.1-rc.4(Cordis 4.0.5,旧版验证基线) |
| 0.1.9 | 0.2.1-alpha.3(Cordis 4.0.5-alpha.2,旧版验证基线) |
| 0.1.8 | 0.1.1-rc.2 |

Harness 0.2.0-rc.2 上没有可用的插件版本:0.1.9 依赖 Harness 0.2.1-alpha.2 才引入的 workingDirectory 服务,0.1.8 又只适配 0.1.1-rc.2。请先把 Harness 升级到 0.2.1-rc.5 再安装 0.1.11,例如 npm 全局安装时:

npm i -g @deepseek-ai/dsh@0.2.1-rc.5

dsh plugin allow-version 只跳过版本闸门,不会补上缺失的宿主服务,在 0.2.0-rc.2 上插件仍然加载不起来;请优先升级 Harness。

新版架构适配

0.1.11 将 DSH 开发依赖与 peerDependencies 同步至 0.2.1-rc.5,Cordis 保持 4.0.5,并显式声明 engines.dsh。同时显式声明 0.2.2-rc.1 的预发布依赖范围。安装版本闸门使用官方 evaluatePluginCompatibility() 验证,无需版本豁免。

两套依赖环境均通过类型检查、52 项测试及构建,覆盖官方版本闸门、真实 Harness cookie 认证与会话目录切换回归;尚未完成完整 DSH 页面端到端验证。next 渠道需 Node.js ≥24.9。

- 客户端通过 ui-renderer 提供的槽位服务注册界面,使用 ui-session 的 mainView 引用选择当前会话;不再依赖已移除的 dsh-client-runtime。
- 文件、搜索、Git 和新建终端通过 workingDirectory.get(session) 使用会话当前目录,跟随工作目录投影切换;失效会话返回 404。
- HTTP 与 WebSocket 接口使用 connection.requestRejection(),共享 Harness 登录认证及 Host/Origin 校验;终端额外保留 loopback 限制。
- 对话栏按官方 data-phase 容器定位,支持新版 conversation.content 布局。

快捷键

| 快捷键 | 操作 |
| Ctrl+Shift+E | 打开资源管理器 |
| Ctrl+Shift+F | 打开搜索 |
| Ctrl+Shift+G | 打开源代码管理 |
| Ctrl+S | 保存当前文件 |
| Ctrl+Alt+B | 显示或隐藏 DSH 对话栏 |
| Ctrl+\ | 显示或隐藏终端 |
| Ctrl+Shift+\ | 新建终端 |

左侧活动栏的终端按钮可切换显示或隐藏终端面板。

安全

所有插件接口要求 Harness 登录认证。Host 只接受当前 DSH 会话工作目录内的相对路径,并阻止目录穿越与符号链接越界。保存使用版本校验与原子替换;Git 与 ripgrep 使用参数数组启动,不拼接 Shell 命令。终端只接受同源 loopback 请求,固定在创建时的会话工作目录启动,并移除 API key、token、secret 等敏感环境变量。

开发

pnpm install
pnpm typecheck
pnpm test
pnpm build

需要 Node.js ^22.19 || >=24、pnpm 11.7、系统 Git,以及 node-pty 所需的本机构建环境(预编译产物不可用时)。

许可证

MIT
预览分享卡片长什么样 ↓tingfeng347/dsh-vscode-workbench
分享 · DeepSeek Harness Hub
tingfeng347/dsh-vscode-workbench

DeepSeek Harness 的 VS Code 风格本地开发工作台:文件管理、Monaco…

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部