Skip to content
dsh.fish
Bundle

dsh-ide-ipc

DeepSeek Harness plugin that connects multiple IDEs over Unix sockets or Windows named pipes and exposes live IDE state to dsh-tui and dsh Web.

Source
wlz6
License
MIT
Updated
Updated 3 days ago

Readme

# dsh-ide-ipc

独立的 DeepSeek Harness IDE IPC 插件。它是 socket 服务端,支持多个 IDE 同时连接;IDE 插件只负责采集和上报自己的 context。这样 dsh-tui、dsh Web 和 agent tools 都读取同一份实时 registry。

## 安装

```bash
dsh plugin --profile dsh-tui add github:wlz6/dsh-ide-ipc
dsh plugin --profile web add github:wlz6/dsh-ide-ipc
```

然后启动对应 profile。默认 IPC 端点是:

```text
Linux/macOS/WSL: ~/.cache/nvim-context-ipc/dsh.sock
Windows:          \\.\pipe\dsh-ide-ipc
```

也可以在 bundle row 上覆盖 `config.socketPath`,或设置 `DSH_IDE_IPC_SOCKET`。

## Nvim 客户端

在 `nvim-context-ipc` 的配置中启用 dsh provider。Nvim 现在作为 IPC client 主动连接本插件,注册 `ideId`、workspace 和当前文件,并在 buffer/cursor/diagnostic/tab 变化时发送 update;同一端点可以接入其他 IDE 客户端。Linux/macOS/WSL 默认使用 `~/.cache/nvim-context-ipc/dsh.sock`,Windows 默认使用 native named pipe `\\.\pipe\dsh-ide-ipc`。

## VS Code 客户端

仓库内的 `vscode/` 是独立的 VS Code client adapter,不会把 VS Code API 引入 dsh server。安装方式:

```bash
git clone https://github.com/wlz6/dsh-ide-ipc.git
code --install-extension ./dsh-ide-ipc/vscode
```

它使用相同的 socket 和协议,实时上报当前文件、选区、打开标签、diagnostics、workspace 和 dirty 状态,并支持 `openFile`、`saveDocument`、`openDiff`。VS Code 与 Neovim 可以同时连接,dsh tools 用 `ide_id` 或 `workspace` 选择目标 IDE。

## dsh tools

- `ide_list`:列出已连接 IDE、workspace、当前文件;
- `ide_context`:读取选中 IDE 的最新 context;
- `ide_open_file`、`ide_save_document`、`ide_open_diff`:把操作转发给选中的 IDE。

多个 IDE 同时连接时,工具传 `ide_id`;只有 workspace 路由时可传 `workspace`。

## 实时显示

- dsh-tui 使用 `tuiStatus` 显示 `IDE: Neovim · path/to/file`;
- dsh Web 使用 `/api/dsh-ide-ipc/events` 的 SSE stream,右上角 overlay 实时显示 IDE 和当前文件。

协议是 4 字节 little-endian 长度 + JSON frame,`protocolVersion` 当前为 `1`。socket 目录为 `0700`,socket 文件为 `0600`。

Install

dsh plugin --profile web add github:wlz6/dsh-ide-ipc

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source