Skills Plugins MCP Prompt Model 导航 博客 资讯 我的中心
开发与运行时 #dsh#dsh-plugin

dsh-code-ide

DeepSeek Harness 的 IDE 插件,以最小破坏性的方式增加代码审阅能力。

sakaliolabs @sakaliolabs ⬇ 3 ★ 12 main

安装

dsh plugin --profile web add github:sakaliolabs/dsh-code-ide
下载安装清单

需要可复现安装时,可在仓库后追加 #commit 固定提交。

DeepSeek Harness 的 IDE 插件,以最小破坏性的方式增加代码审阅能力。

该插件未提供要点说明,请参考仓库 README。

dshdsh-plugin
  1. 安装并启动 DeepSeek Harness:npx @deepseek-ai/dsh web
  2. 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
  3. 用 dsh plugins list 确认已安装,必要时重启 Harness 生效

插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。

代码仓库github.com/sakaliolabs/dsh-code-ide
许可证MIT
主要语言main
下载量3
GitHub 星标12
最近推送2026-08-17
收录日期2026-09-19
分类开发与运行时

事实信息来自公开插件目录快照(2026-10-03),介绍文案由本站再加工。

以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。

# dsh-code-ide

**简体中文** · [English](README_en.md) · [日本語](README_ja.md) · [Deutsch](README_de.md)

  [图片: dsh-code-ide 演示:在 DeepSeek Harness 会话中显示资源管理器、代码编辑器和终端的浏览器 IDE 工作台]

`dsh-code-ide` 以可选插件的方式,为 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 增加一个浏览器 IDE 工作台。它不会替换 Harness 首页、对话、会话、设置或工具界面。

> [!IMPORTANT]
> `v0.1.0-alpha.0` 是 GitHub **预发布版**,提供预构建插件包,但不发布到 npm。兼容基线仍是 DeepSeek Harness 源码提交 `47f943859bef60e4160492346772ded9b24f765a`;其他提交或 npm RC 尚不属于兼容承诺。

## 快速安装(推荐)

已安装 `dsh` 的用户只需运行:

~~~sh
dsh plugin --profile web add github:SakalioLabs/dsh-code-ide
~~~

如果你从 Harness 源码 checkout 运行,则在该目录中把上面的 `dsh` 替换为 `pnpm dsh`。本仓库已提交与源码同步的预构建 `dist/`,并且不包含安装时构建脚本;Git 安装不会在用户环境重新构建本插件,因此不需要为 `dsh-code-ide` 配置 `allowBuilds`,也不需要 clone 本插件或手工复制 patch。

### 交给 Harness 安装

把下面一句直接发给 Harness 即可:

~~~text
请将 github:SakalioLabs/dsh-code-ide 安装到当前 DeepSeek Harness 的 Web profile,并在完成后核对 plugin list 与 --dump-config 中只有一个 dsh-code-ide。
~~~

> [!CAUTION]
> 上面的 GitHub 简写会跟随仓库 `main`。需要固定到已发布版本、校验下载内容或离线留档时,请使用下方的 GitHub Release 流程。

## 它如何融入 Harness

安装后,Harness 会话顶部会新增一个原生、可选的 **IDE** 页签;默认页仍然是 **对话**。只有用户打开 IDE 页签时,工作台才会挂载。该会话的普通消息输入栏会暂时隐藏;切回对话后会原样恢复。等待用户回答的问题或审批仍具有更高优先级,不会被 IDE 隐藏。

~~~text
DeepSeek Harness /
├─ 对话(官方,默认)
├─ 轨迹(官方)
└─ IDE(本插件,可选)
   └─ /dsh-code-ide/?embedded=1&workspaceId=…
~~~

IDE 由同源路由 `/dsh-code-ide/` 提供,并嵌入官方会话区域。父级 Harness 会把当前会话的工作区、浅色/深色主题以及 `zh`/`en` 语言同步给 IDE。整个集成是增量式的,不 fork Harness 客户端,也不接管 `/`。

界面借鉴 VS Code 的工作台习惯,但它不是 Code - OSS,也没有 VS Code Extension Host 或 Marketplace 兼容层。

## 主要功能

- **资源管理器**:有界懒加载、Seti 风格文件图标、键盘导航、展开状态保留、工作区相对路径校验。
- **文件操作**:Windows x64 的本地 NTFS 工作区支持新建文件/目录、拖放移动、重命名和永久删除。通过运行时 `openat2` 探针的 Linux x64 Host,以及通过运行时 `libSystem` 探针的 macOS x64/arm64 本地 APFS 工作区,支持新建文件和目录;移动、重命名和删除仍保持禁用。
- **编辑器**:CodeMirror 6、多标签、拖拽/键盘排序、最多 4 个编辑器分组、每文档独立撤销/选择/滚动状态、自动换行、缩进、行尾和语言模式。
- **语法高亮**:内置并按需加载 Plain Text、JavaScript、JSX、TypeScript、TSX、JSON、CSS/SCSS/Less、HTML、Markdown、Python、C、C++、Java、Go、Rust、Shell、PowerShell、YAML、XML 和 SQL。
- **Markdown 预览**:`.md`、`.markdown`、`.mdx` 可在源码与安全预览间切换;预览直接反映当前未保存的编辑缓冲区。
- **媒体预览**:只读展示常见图片(PNG、JPEG、GIF、WebP、AVIF)、音频(MP3、WAV、OGG、FLAC)和视频(MP4、WebM、MOV),音视频使用浏览器原生控件和 Range 流式读取,且不会自动播放。
- **保存与恢复**:版本感知保存、外部变化检测、冲突处理、删除文件重建、脏标签关闭确认,以及浏览器本地的有界 hot-exit 恢复。
- **查找与替换**:Quick Open、工作区搜索、正则/大小写/全词/include/exclude、结果导航和先预览后应用的替换。替换只修改编辑缓冲区,不会自动保存到磁盘。
- **命令与快捷键**:命令面板、可编辑的一段或两段快捷键、冲突检测和浏览器本地持久化。
- **终端**:多个命名 xterm.js 会话,工作目录为当前工作区,支持查找、清屏、重命名、重启、中断、终止、折叠和最大化。
- **布局与语言**:桌面/紧凑布局、可调整面板;IDE UI 支持简体中文和英语,并跟随 Harness 热切换。

## 环境要求

| 项目 | 要求 |
|---|---|
| DeepSeek Harness | 源码提交 `47f943859bef60e4160492346772ded9b24f765a` |
| Node.js | `^22.19.0` 或 `>=24.0.0` |
| pnpm | 本仓库固定 `10.17.0`;Harness 固定 `11.7.0` |
| 浏览器 | 现代同源浏览器,支持 WebSocket、`localStorage`、Web Locks |
| 搜索 | `@vscode/ripgrep@1.18.0` 对应平台二进制 |
| 终端 | 必须复用 Harness 提供的精确 peer `node-pty@1.1.0` |

npm 当前提供 `@deepseek-ai/dsh@0.1.0-rc.6`,但本 alpha 尚未完成对该发布版的端到端兼容验证;因此它不是本项目承诺的安装基线。不要另外编译第二份 `node-pty`。

## 手动安装(可审计的后备方案)

安装、启动、更新和卸载必须使用同一个 `DSH_HOME`。下面的 `pnpm dsh` 命令都在 Harness checkout 中运行;如果你的环境已有全局 `dsh`,可将其替换为 `dsh`。

### 1. 准备受支持的 Harness

~~~sh
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
git checkout 47f943859bef60e4160492346772ded9b24f765a
pnpm install --frozen-lockfile
pnpm build
~~~

### 2A. 下载并校验固定版本

Linux/macOS:

~~~sh
curl -fLO https://github.com/SakalioLabs/dsh-code-ide/releases/download/v0.1.0-alpha.0/dsh-code-ide-0.1.0-alpha.0.tgz
curl -fLO https://github.com/SakalioLabs/dsh-code-ide/releases/download/v0.1.0-alpha.0/dsh-code-ide-0.1.0-alpha.0.tgz.sha256
sha256sum -c dsh-code-ide-0.1.0-alpha.0.tgz.sha256
~~~

Windows PowerShell:

~~~powershell
$asset = "dsh-code-ide-0.1.0-alpha.0.tgz"
Invoke-WebRequest "https://github.com/SakalioLabs/dsh-code-ide/releases/download/v0.1.0-alpha.0/$asset" -OutFile $asset
Invoke-WebRequest "https://github.com/SakalioLabs/dsh-code-ide/releases/download/v0.1.0-alpha.0/$asset.sha256" -OutFile "$asset.sha256"
$expected = (Get-Content "$asset.sha256").Split()[0].ToUpperInvariant()
$actual = (Get-FileHash $asset -Algorithm SHA256).Hash
if ($actual -ne $expected) { throw "SHA-256 mismatch" }
~~~

校验通过后,从 Harness checkout 安装本地文件:

~~~sh
pnpm dsh plugin --profile web add /absolute/path/to/dsh-code-ide-0.1.0-alpha.0.tgz
~~~

这是固定版本、可校验和可离线留档的安装方式;日常快速安装使用顶部的 GitHub 简写。

### 2B. 从本地源码或本地打包安装

先在本插件仓库中构建;需要本地归档时再执行 `pnpm pack`:

~~~sh
pnpm install --frozen-lockfile
pnpm build
pnpm pack  # 可选
~~~

然后回到 Harness checkout,安装源码目录或刚生成的 `.tgz`,二选一:

~~~sh
pnpm dsh plugin --profile web add /absolute/path/to/dsh-code-ide
# 或:pnpm dsh plugin --profile web add /absolute/path/to/dsh-code-ide-0.1.0-alpha.0.tgz
~~~

本地目录是开发工作流;修改 Host 或注入客户端后需要重新构建、重新 `add` 并重启 Harness。

### 2C. Git 快捷安装

使用与快速安装相同的 GitHub 简写:

~~~sh
pnpm dsh plugin --profile web add github:SakalioLabs/dsh-code-ide
~~~

仓库中的预构建 `dist/` 由 CI 校验,Git 安装不会执行本插件的构建脚本,也不需要 `allowBuilds`。该命令跟随滚动的 `main`;若需要可复现且带校验和的安装,请使用上面的固定 Release。

### 3. 核对并启动

~~~sh
pnpm dsh plugin --profile web list --depth 0
pnpm dsh --profile web --dump-config
pnpm dsh web
~~~

访问 `http://127.0.0.1:3080/`,进入一个已关联工作区的会话,然后选择顶部的 **IDE** 页签。`/dsh-code-ide/` 是同源诊断/工作台路由,不是对 Harness 首页的替代。

插件包会自动应用自己的 `dsh.bundle.patch`。不要再手工复制 `examples/dsh-code-ide.bundle.patch.yml`,否则会得到重复条目。`--dump-config` 中应保留全部官方 Web 条目,并且只有一个启用的 `dsh-code-ide`。

## 更新与卸载

更新前先停止 `dsh web`。GitHub 简写安装可重新运行下面的 `add`;固定版本用户改用新 Release 的 URL 或已校验本地包;本地源码安装则先重新构建。随后重启 Harness。

~~~sh
# 更新滚动 main
pnpm dsh plugin --profile web add github:SakalioLabs/dsh-code-ide

# 卸载
pnpm dsh plugin --profile web remove dsh-code-ide
~~~

卸载会从 profile 的依赖与 bundle 列表中移除插件,不会删除 Harness 会话、工作区文件,也不会自动清除浏览器 `localStorage` 中的 IDE 偏好和恢复数据。

## 使用提示

1. 在 Harness 中打开或创建一个已关联工作区的会话。
2. 选择 **IDE** 页签;工作区尚未就绪时会显示明确状态,不会静默切到另一个工作区。
3. 从资源管理器或 Quick Open 打开文本、Markdown 或受支持的媒体文件;Markdown 可在源码和预览间切换。
4. 编辑文本并显式保存;预览会反映 Markdown 当前未保存的缓冲区,搜索替换产生的修改同样需要保存。
5. 需要 Harness 输入框时切回 **对话**。

常用快捷键:

| 操作 | Windows/Linux | macOS |
|---|---|---|
| Quick Open | `Ctrl+P` | `Cmd+P` |
| 命令面板 | `Ctrl+Shift+P` / `F1` | `Cmd+Shift+P` / `F1` |
| 保存 | `Ctrl+S` | `Cmd+S` |
| 资源管理器 / 搜索 | `Ctrl+Shift+E` / `Ctrl+Shift+F` | `Cmd+Shift+E` / `Cmd+Shift+F` |
| 跳转到行 | `Ctrl+G` | `Cmd+G` |
| 快捷键设置 | `Ctrl+K`,再 `Ctrl+S` | `Cmd+K`,再 `Cmd+S` |
| 显示/隐藏终端 | `Ctrl+反引号` | `Cmd+反引号` |
| 自动换行 | `Alt+Z` | `Option+Z` |

## 配置

默认 bundle 配置:

~~~yaml
- insert:
    - id: dsh-code-ide
      name: dsh-code-ide
      config:
        maxFileBytes: 4194304
        maxMediaBytes: 536870912
        terminalShell: auto
~~~

| 选项 | 默认值 | 说明 |
|---|---:|---|
| `maxFileBytes` | 4 MiB | 可读写 UTF-8 文本文件上限 |
| `maxMediaBytes` | 512 MiB | 单个只读媒体预览上限;可配置,硬上限 8 GiB |
| `maxDirectoryEntries` | 5,000 | 单次目录列表的直属条目上限 |
| `terminalShell` | `auto` | Windows 使用 `COMSPEC`,Unix 使用 `SHELL`,并带回退 |
| `terminalArgs` | shell 默认 | 显式 shell 参数数组 |
| `maxTerminalSessions` | 8 | Host 活跃/待创建 PTY 上限,硬上限 64 |
| `maxConcurrentSearches` | 2 | 并发受管搜索数 |
| `searchTimeoutMs` | 30,000 | 搜索超时(毫秒) |

完整有界配置见 [`src/host/plugin.ts`](src/host/plugin.ts)。

## 安全边界与已知限制

- 仅面向本机、同源 loopback 使用。当前没有远程用户认证、TLS、进程隔离、配额或完整审计日志,不要直接暴露到局域网或互联网。
- Windows x64 的本地 NTFS 工作区使用强句柄约束(handle containment),完整支持新建文件/目录、移动/重命名和永久删除。Linux x64 仅在运行时 `openat2` 探针通过后支持新建文件/目录;Linux ARM64 等其他架构在固定签名 `openat2` shim 可用前保持结构操作安全关闭。macOS x64/arm64 仅在本地 APFS 工作区且运行时 `libSystem` 探针通过后支持新建文件/目录。Linux/macOS 的移动、重命名和删除仍禁用,其 trusted-local `dirfd` 层级只防御来自浏览器请求的路径穿越、已有或竞争性符号链接以及跨挂载访问,不抵御同 UID 本地进程主动执行 rename/reparent。探针失败时结构性操作会安全关闭;提交后结果无法确定时会进入 `recoveryRequired` 或安全关闭。浏览、编辑、保存、搜索和终端不受影响。这些保护是工作区约束,不是操作系统沙箱。
- 保存是版本感知流程,但不是跨进程原子 CAS。
- IDE 终端以运行 Harness 的操作系统用户权限执行,**不是沙箱**。环境变量只做有限敏感名称过滤。
- hot-exit、快捷键和部分恢复信息会以同源 `localStorage` 明文保存;同源代码可以访问这些数据。
- Markdown 预览不会执行 raw HTML 或 MDX;外链仅允许 `http:`、`https:` 和 `mailto:`,HTTP(S) 链接使用新页签并隔离 opener、referrer。相对图片只通过同源、工作区受约束的媒体接口加载。
- 媒体预览严格按后缀白名单提供,只读且受 `maxMediaBytes` 限制;音视频支持单段 HTTP Range 请求以便定位播放,不会自动播放。SVG 不在白名单中,不支持预览。
- 外部文件变化使用轮询;硬刷新后不会恢复终端进程。
- 新增预览不包含 VS Code 插件兼容;仍不支持 VS Code 插件、Extension Host、Marketplace、LSP 智能补全、调试器、Git UI、任意二进制编辑或多根工作区。
- 日文和德文 README 只是文档翻译;当前 UI 语言只有简体中文和英语。

在处理不可信仓库前,请阅读 [`docs/security.md`](docs/security.md) 与 [`docs/compatibility.md`](docs/compatibility.md)。

## 开发

~~~sh
pnpm install --frozen-lockfile
pnpm typecheck
pnpm test
pnpm build
~~~

`build:host`、`build:client` 和 `build:harness-client` 分别构建 Host、IDE SPA 和 Harness client entry。不要手工修改 `dist/`。更多信息见 [`docs/development.md`](docs/development.md) 与 [`docs/architecture.md`](docs/architecture.md)。

## 仓库结构

~~~text
src/host/             Harness Host 插件、文件/搜索/终端服务
src/harness-client/   conversation.view 原生入口与主题/语言桥
src/client/           IDE SPA(Explorer、编辑器、搜索、终端)
src/shared/           Host/浏览器共享协议与校验
tests/                定向单元与契约测试
docs/                 架构、兼容性、安全和开发文档
~~~

## 许可证

项目使用 [MIT License](LICENSE)。随包提供的 Seti UI 文件图标同样采用 MIT,归属与固定来源记录在 [ThirdPartyNotices.txt](ThirdPartyNotices.txt)。

## 发布状态

`v0.1.0-alpha.0` 是 GitHub 预发布版,发布资产为 `dsh-code-ide-0.1.0-alpha.0.tgz` 及其 SHA-256 校验文件;它没有发布到 npm。只有该 Release 页面上的资产属于发布包,历史 Actions 测试包和本地 `tmp/` 产物不是发布资产。兼容范围仍以文档中的 Harness 固定提交为准。

数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。