elk-9527/dsh-vscode

dsh-vscode

仓库尚未提供可用的公开描述。

미분류

DSH in VS Code

在 VS Code 侧边栏中接入 DeepSeek Harness(以下简称 DSH): 无需先启动桌面端即可直接提问。接入桌面端时使用同一个运行内核;自行启动时使用同一 $DSH_HOME 下已准备的 DSH 配置集。

本仓库由两个组成部分构成,两者都需要安装。

升级版为面板 0.19.0、接入点 0.7.0:“工具”视图提供代码审查和技能浏览,更多菜单提供文件技能管理;运行记录支持恢复、重试、清理及将报告显式带入对话。可选原生 @dsh Chat 与完整会话 API 集成在同一个主扩展中,继续保持一个活动栏入口。 面板输入框支持文件、选区、技能、Git 变更、问题诊断和内置命令;运行中可排队下一条消息,失败或停止后暂停队列。每轮回答附有改动与测试结果卡,当前窗口保留最近十轮差异,可查看旧轮差异、撤销最新轮的文件改动,并核对工作区测试结果是否已过期。 面板还支持图片选择、粘贴、拖入和发送前预览,显示图片与 GIF,并兼容 dsh-meme 图库。普通图片输入依赖当前会话模型和内核声明的图片能力;当前原生适配范围为 DSH 0.2.1-rc.3,具体格式、大小和历史读取边界见面板说明。 原生 Chat 支持显式文件和选区引用,包括未保存的编辑器内容;历史列表支持搜索、翻页、项目筛选和 Markdown 导出。审查发现可生成只读修复建议,经差异预览确认后逐项应用,并保存后重新审查。无工具修复生成要求 ACP 0.2.1-rc.2 或 0.2.1-rc.3 的直接文本能力;能力缺失时提示手动修复,不启动普通工具会话。 完整审查报告保存到本地,离线和重开窗口后可阅读。实际应用的修复、修复前测试、每次重测和后续审查保留关联记录;测试直接依据选中的审查工作区,无需聊天轮次。 两个试点插件需要安装带 Bridge 注册补丁的适配包,发行附件保留原作者来源;市场中的原版插件继续保留原有入口。见下文安装方法。 提供方 SDK 0.1.1 包含类型、注册与校验助手、模拟宿主和独立示例,见 SDK 文档。

当前维护版本覆盖 DSH 0.1.5-rc.2、0.2.0-rc.1、0.2.0-rc.2 与预览版 0.2.1-alpha.1、0.2.1-rc.2、0.2.1-rc.3;rc.3 已进入候选必测组合,验收状态见 compat/versions.json。DSH 0.2 使用 v4 会话格式和 新的权限目录接口;兼容差异由接入点插件内部处理,VS Code 面板协议不变。

包 · 内容 · 安装位置 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/:兼容范围和对应的公开验证结果。
  • spike/:ACP 协议探测工具。
  • 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/sessions.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.0-rc.2 --tgz <候选接入点.tgz>
pnpm compat:test -- --dsh 0.2.0-rc.2 --install --tgz <候选接入点.tgz>
pnpm compat:release-check -- --evidence <验收证据清单.json>

每日与手动兼容 CI 检查官方稳定版及预发布版,使用隔离数据和本机测试模型服务。 完整发布验收还需要 Desktop 接入、退出后的面板自启、配置继承、真实模型工具及实际 VSIX。 任一必测缺失、失败或跳过均阻止发布检查;市场发布仍由维护者显式执行。

目录说明

  • docs/ —— 项目接口、维护和发布文档。
  • docs/注释与文档规范.md —— 文档与注释规范。
  • spike/ —— 早期用于确认 ACP 协议行为的探测脚本。
  • packages/*/test、packages/*/tools —— 测试与诊断工具,均不进入发布包。

许可

MIT,见 LICENSE。