dsh-vscode (dsh-door)
stanelka/dsh-vscode/packages/dsh-door
为正在运行的 DeepSeek Harness 内核提供仅监听本机回环地址的 ACP 接入点,供 VS Code 等本机客户端连接,共用模型、工具、记忆和会话,并支持历史查看、权限切换及调用 DSH 插件已注册的能力。
安装
dsh plugin --profile web add github:stanelka/dsh-vscode该插件位于仓库的 packages/dsh-door 子路径下。
README
DSH in VS Code
在 VS Code 侧边栏中接入 DeepSeek Harness(以下简称 DSH):
无需先启动桌面端即可直接提问。接入桌面端时使用同一个运行内核;自行启动时使用同一
$DSH_HOME 下已准备的 DSH 配置集。
本仓库由两个组成部分构成,两者都需要安装。
升级版为面板 0.19.1、接入点 0.7.1:“工具”视图提供代码审查和技能浏览,更多菜单提供文件技能管理;运行记录支持恢复、重试、清理及将报告显式带入对话。可选原生 @dsh Chat 与完整会话 API 集成在同一个主扩展中,继续保持一个活动栏入口。
面板输入框支持文件、选区、技能、Git 变更、问题诊断和内置命令;运行中可排队下一条消息,失败或停止后暂停队列。每轮回答附有改动与测试结果卡,当前窗口保留最近十轮差异,可查看旧轮差异、撤销最新轮的文件改动,并核对工作区测试结果是否已过期。
面板还支持图片选择、粘贴、拖入和发送前预览,显示图片与 GIF,并兼容 dsh-meme 图库。普通图片输入依赖当前会话模型和内核声明的图片能力;当前原生适配范围为 DSH 0.2.1-rc.5,具体格式、大小和历史读取边界见面板说明。
原生 Chat 支持显式文件和选区引用,包括未保存的编辑器内容;历史列表支持搜索、翻页、项目筛选和 Markdown 导出。审查发现可生成只读修复建议,经差异预览确认后逐项应用,并保存后重新审查。无工具修复生成要求 ACP 0.2.1-rc.5 的直接文本能力;能力缺失时提示手动修复,不启动普通工具会话。
完整审查报告保存到本地,离线和重开窗口后可阅读。实际应用的修复、修复前测试、每次重测和后续审查保留关联记录;测试直接依据选中的审查工作区,无需聊天轮次。
两个试点插件需要安装带 Bridge 注册补丁的适配包,发行附件保留原作者来源;市场中的原版插件继续保留原有入口。见下文安装方法。
提供方 SDK 0.1.1 包含类型、注册与校验助手、模拟宿主和独立示例,见 SDK 文档。
当前仅维护 DSH 0.2.1-rc.5(npm 与 Desktop 发行方式)。历史使用内核公开 sessionQuery,权限使用 catalog 接口;不再提供更早内核的适配和本地 v3 文件读取。当前候选的验收状态见 compat/versions.json。
| 包 | 内容 | 安装位置 |
|---|---|---|
packages/vscode-extension(dsh-panel) | VS Code 扩展:侧边栏面板,本身即 ACP 客户端 | VS Code 市场 / .vsix |
packages/dsh-door(dsh-acp-door) | DSH 插件:在运行中的内核上提供仅监听 127.0.0.1 的 ACP 接入点 | dsh plugin add / DSH 插件市场 |
packages/dsh-bridge-sdk | 第三方 Provider 类型、注册、契约验证及技能文件助手 | 插件的 npm 依赖 |
项目目录
packages/:扩展、接入点插件和 SDK 的源码、测试与包文档。tools/:构建、验证与兼容维护工具。docs/:正式接口与维护文档。compat/:兼容范围和对应的公开验证结果。build/:生成的安装包和临时验证产物,不纳入 Git。.local/:本地工作资料和备份,不纳入 Git。
扩展打包、预览和界面验收分别写入仓库根目录的 build/vscode-extension/、build/preview/ 和 build/uitest/。完整测试入口将子进程的临时目录限制在 build/test-runs/,结束时回收;浏览器配置和打包暂存目录也在退出时删除。build/install/ 中被安装配置引用的归档须保留。
为什么需要两个组成部分
ACP 默认使用标准输入输出传输,该通道只能在进程启动时建立,而桌面端此时已经启动并持有内核。 因此由插件在内核内提供一个仅监听本机回环地址的接入点,扩展连接到该接入点:
VS Code ── DSH ACP Panel 扩展(ACP 客户端)
│ ACP over 127.0.0.1:47821
▼
dsh-acp-door(插件:本机 ACP 接入点)
│
▼
运行中的 DSH 内核(agents / 会话 / 记忆 / 工具 / 权限)—— 只有一份
扩展驱动同一个 DSH 实例;聊天和代码审查使用独立会话,共用内核、配置和记忆服务。
两种运行模式
| 模式 | 使用时机 | 实际行为 | 需要准备的内容 |
|---|---|---|---|
| 接入现有内核 | 桌面端正在运行,且接入点已开放 | 面板连接同一个运行内核;会话、模型、工具和权限状态完全一致 | 桌面端配置集已安装接入点插件,并在安装后重启过内核 |
| 面板自行启动 | 桌面端未运行,或现有内核不可用 | 同步桌面端插件与运行时 bundle,并只读加载 desktop 的模型路由、插件开关和参数,再启动 vscode-panel;仍使用本机同一份 $DSH_HOME | 在 vscode-panel 中安装接入点插件,并确保 DSH 已选择默认模型 |
DSH 的会话、记忆与默认模型设置来自同一份 $DSH_HOME;各配置集内安装的依赖和补丁仍独立维护。
为避免桌面端关闭后丢失插件能力,扩展会在 vscode-panel 自启前读取 desktop 清单,并把其中已启用的
注册表插件按实际版本补齐;由当前 DSH 运行时提供的官方 bundle 也会直接启用。后台内核还会通过
--patch 只读叠加 desktop/cordis.patch.yml,所以模型路由、插件开关和参数不会因 Desktop 关闭而丢失,
且不会复制或覆盖任一配置文件。file:、Git、URL 等无法安全复现的来源不会自动复制,原因会写入日志。
运行环境
| 环境 | 支持状态 |
|---|---|
| 本地 Windows 桌面版编辑器 | 产品支持;每个候选仍需单独完成发行验收 |
| 本地 Linux / macOS | 保留本机实现及快速 CI;完整内核与编辑器发行验收待完成 |
| Remote SSH、WSL、开发容器 | 暂不支持;启动时说明内核位置与文件读取尚未适配 |
| 浏览器与虚拟工作区 | 暂不支持,需要本机文件目录及桌面扩展宿主 |
回环地址始终指扩展实际运行机器;当前不通过端口转发连接远程内核。历史通过记录不代表当前候选已满足发布要求,当前状态见兼容矩阵的 currentRelease。
首次安装(每台电脑分别完成)
前提
- 已安装 VS Code 1.90.2 或更高版本,以及可正常启动的本地 DSH。
- DSH 中已有可用的模型服务商和模型。本项目不提供模型账号、模型凭据或远程 DSH 服务。
- 本项目的完整端到端验证环境为 Windows;其它系统的启动分支保留在代码中,但尚未作为发布兼容性结论。
1. 准备面板使用的 DSH 配置集
桌面端已经运行且其中已安装配套插件时,面板会直接接入该内核。为了在桌面端未启动时仍可使用, 建议创建一个可由命令行启动的网页配置集,并在其中安装配套插件:
安装扩展后,可先在 VS Code 命令面板运行 DSH:准备或修复自启配置。该命令会创建
缺失的 vscode-panel web 配置集,安装或更新接入点插件,并同步桌面端已启用的注册表插件;
它不会覆盖已有的同名非 web 配置集。
也可以手工执行:
# 从 DSH 的 web 模板创建配置集(首次执行时)
dsh --profile vscode-panel --from-default-profile web --dump-config
# 安装配套插件,然后确认它已出现在清单中
dsh plugin --profile vscode-panel add dsh-acp-door
dsh plugin --profile vscode-panel list
插件安装后重启该配置集对应的 DSH 内核。插件会跟随该配置集中 DSH 当前选择的默认模型,
无需再次填写服务商与模型名;若该配置集尚未选择模型,请先在 DSH 中完成选择。仅在需要让
接入点固定到另一个模型时,才同时配置 provider 与 model。详见
packages/dsh-door/README.md。
2. 安装 VS Code 扩展
支持配套安装界面的 DSH 中,首次启用接入点时会提示安装 DSH ACP Panel。 选择编辑器和已有配置集后点击安装即可自动下载并验证;稍后也可从 DSH 设置 → VS Code 配套扩展继续安装。 无界面或旧版 DSH 可使用下方命令。
也可在扩展视图搜索 DSH ACP Panel,或执行:
code --install-extension Elk-ydy.dsh-acp-panel
离线安装 .vsix 时,使用实际文件路径并在安装后执行一次 Developer: Reload Window:
code --install-extension <dsh-acp-panel-版本>.vsix --force
打开活动栏中的 DSH 图标后即可开始对话。
DSH Desktop 0.2 无需另外把 dsh 加入 PATH:扩展会自动查找 Desktop 的安装位置和随附运行时。
dshPanel.dshCommand 只在自动发现失败或需要覆盖启动命令时使用。
Bridge 提供方安装
仅安装接入点可以使用普通聊天、模型、权限及历史功能。原生代码审查和技能管理还需要主动注册 Bridge 能力的提供方。发布版提供基于 @michengai/dsh-code-review@0.1.9、@linxin666/dsh-client-ui-skill-explorer@0.4.4 的适配归档,保留上游许可证和原有桌面入口;适配源码及精确来源校验见 tools/bridge/build-pilots.cjs。
当前源码对应未完成发行验收的候选包。开发验收时,先用下文的构建命令生成接入点、SDK 和 VSIX,再运行 node tools/bridge/build-pilots.cjs 生成 build/ide-bridge/pilots/ 下的 michengai-dsh-code-review-0.1.9-ide.8.tgz 与 linxin666-dsh-client-ui-skill-explorer-0.4.4-ide.7.tgz。使用同一轮候选归档,在专用验收配置集中安装:
dsh plugin --profile <验收配置集> add file:<接入点候选路径>.tgz file:<SDK候选路径>.tgz file:<审查适配包路径>.tgz file:<技能适配包路径>.tgz
上面的命令用于可由命令行管理的配置集,例如 vscode-panel。Desktop 的插件请通过桌面端插件界面安装或更新,再重启对应内核。适配归档使用明确的版本和上游来源,不把它当作原作者发布的注册表版本。更新后使用 DSH:诊断连接与配置 核对实际加载的能力。
其它电脑与后续更新
- 每台电脑都需分别安装 DSH、配套插件和 VS Code 扩展。面板不会把一台电脑的 DSH 暴露给另一台电脑,
也不会同步或复制
$DSH_HOME;记忆、会话和插件状态以各机器本地 DSH 为准。 - 接入点固定监听
127.0.0.1,不支持改为局域网地址、端口转发或隧道访问。这样做会绕开本项目明确的 本机安全边界。 - 从 VS Code 市场安装的扩展由 VS Code 按其更新设置升级;从
.vsix安装的扩展需要重新安装新版.vsix并执行 Reload Window。 - 配套插件的常规兼容更新,在目标配置集执行
dsh plugin --profile <配置集> update dsh-acp-door,再重启该配置集的 DSH 内核。 版本说明若标记为不兼容更新,应按该版本的安装说明处理。更新扩展和插件时,应同时阅读对应版本的更新记录。
开发
pnpm install --frozen-lockfile
# 扩展:单元与静态测试 + 界面回放测试
node packages/vscode-extension/test/run-all.js --all # 全部测试
node packages/vscode-extension/tools/uitest.js # 界面回放测试(无头 Chrome)
node tools/bridge/packages.cjs --out build/candidates # 构建并校验 VSIX、接入点和 SDK 候选
node packages/vscode-extension/tools/publish.js --candidate <候选.vsix> # 检查已有候选,不上传
# 插件:纯函数套件,以及端到端试验
node packages/dsh-door/test/frames.js # 帧判定
node packages/dsh-door/test/permission.js # 权限预设方法
node packages/dsh-door/test/port.js # 端口判定
node packages/dsh-door/test/history-events.js # 历史事件投影
node packages/dsh-door/tools/publish.cjs --candidate <候选接入点.tgz> # 检查已有候选,不上传
以上命令从仓库根目录执行,候选路径取自 build/candidates/manifest.json;已有同名候选时需选用新的输出目录。正式上传还需维护者授权及完整验收报告,见发布清单。
其中插件的四个套件也由扩展的 test/run-all.js 一并执行(见该文件中的套件清单)。
node packages/vscode-extension/test/run-all.js 是不依赖 DSH 的快速套件;--all 才会启动真实内核、写入专用测试档并执行
真实回合。提交 CI 运行快速、契约、界面与打包检查;每日及手动任务对官方候选版本执行隔离真实内核验收。
发布前在本机执行 --all --strict,再完成维护流程中的 Desktop、真实模型和最终安装包验收。
运行要求:Node 24、pnpm、本机已安装 DSH、Windows(界面回放测试在无头 Chrome 中执行)。
DSH 更新后的维护
完整步骤见 docs/DSH兼容维护流程.md。先运行只读诊断,
再对精确版本执行隔离真实内核验收;新版本不能仅通过放宽 peer dependency 宣称兼容。
pnpm compat:doctor -- --json
pnpm compat:contracts
pnpm compat:test -- --dsh 0.2.1-rc.5 --tgz <候选接入点.tgz>
pnpm compat:test -- --dsh 0.2.1-rc.5 --install --tgz <候选接入点.tgz>
pnpm compat:release-check -- --evidence <验收证据清单.json>
每日与手动兼容 CI 检查官方稳定版及预发布版,使用隔离数据和本机测试模型服务。 完整发布验收还需要 Desktop 接入、退出后的面板自启、配置继承、真实模型工具及实际 VSIX。 任一必测缺失、失败或跳过均阻止发布检查;市场发布仍由维护者显式执行。
目录说明
docs/—— 项目接口、维护和发布文档。docs/注释与文档规范.md—— 文档与注释规范。packages/*/test、packages/*/tools—— 测试与诊断工具,均不进入发布包。
许可
MIT,见 LICENSE。