dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek harness(dsh)的 VSCode 侧边栏插件。插件只做前端界面,后端能力全部复用本机 dsh web host(loopback,无实例时自动拉起)。
vibe coded by kimi k3 & GPT 5.6 & deepseek v4.
界面预览
[VSCode Webview: React UI(会话/对话/审批/设置)]
│ postMessage 桥协议 (shared/bridge.ts)
▼
[Bridge + SidebarProvider] ◄── 广播 control/workspace/session/remote 四路事件帧、host-status
│ 透传 rpc,以及审批 / 提问的应答
▼
[DshClient(extension 进程, Node ≥22)]
│ │
│ POST /api/<namespace>/<method> │ WS /api/remote.mux(单条载体)
│ 信封 {type:'client-request', │ ├─ session/control 队列 / jobs / 投影
│ rpcId, method, payload:{args}│ ├─ session/follow 会话流水快照 + 增量
│ 应答 {type:'server-response', │ ├─ workspace/follow 工作区与归档集合
│ rpcId, result:{ok,value}} │ └─ $events emit / waterfall / cancel
▼ ▼
[HostManager: 探测 127.0.0.1:3080..3089 → 无则 spawn `dsh web`] (只连 loopback)
│ spawn / 复用(能力探测,不再比较版本号)
▼
[dsh web host 进程]
[webserver: createServer + 'upgrade' 分发] ── /api/* 请求、WS 升级
│
[client-connection: isTrustedApiRequest 信任门 → 签名 cookie 鉴权 → 路由分发]
│
[api-gateway(Typert Remote 服务端)]
├─ unary: session/* ・ workspace/* ・ settings/* ・ credentials/* 等命名空间
├─ $events: 订阅 ctx 事件总线,把审批 / 提问等做成 waterfall,应答由
│ POST /api/$events/result 按 eventId 结算
└─ 流: session/control ・ session/follow ・ workspace/follow …
│ ctx.on('session/event') 等
▼
[Session / Agent / workspace 注册表(harness 核心)]
协议版本要求:dsh ≥
0.1.2-rc.1。自该版本起 apiproxy(POST /api/<method>、/api/events.mux、/api/events.host、host.describe)已被移除,只有 api-gateway 被挂载; 更早的 dsh 上插件会报"未提供 Typert Remote 接口"。已在0.1.5-rc.1/0.1.5-rc.2上验证。
确保dsh已经安装
npx @deepseek-ai/dsh web
/ 弹出命令建议——内置宿主命令 /goal、/compact、/plan 优先,其后跟随该会话的技能名(skills/list);输入中过滤,Enter/Tab 选中,Esc 关闭。发送 /-开头的一行消息即斜杠命令:宿主命令注册表里有这个名字时由宿主直接执行(不发给模型),否则作为普通消息交给模型。命令表变化经 commands/change 转发事件同步modelSelection 投影(next ?? lastUsed)——host.describe 已随新协议移除且没有替代,无会话时的选择暂存、建会话后自动应用+ 按钮 / 拖拽 / 粘贴图片,缩略图 rail 可预览、可移除,超限整批拒绝subagents/interruptByParent)session/control 流的 jobs 帧)渲染只读状态行——协议不支持手动停止,停止权属模型侧 job_killPOST /api/<namespace>/<method>,流走单条 WS /api/remote.mux(同一连接承载 session/control、session/follow、workspace/follow 与 $events);断线自动重连并重开全部流,无实例时自动拉起,用户无感workspace/create(按插件根目录幂等归属)再 session/create,插件会话在 dsh 网页端归入对应 Workspace 统一管理(workspace/create 失败时回退为按 cwd 创建会话)src/extension/protocol/)npm install
npm run package # 产出 VSIX(dist/*.vsix)
code --install-extension dist/dsh-vscode-sidebar-*.vsix
或在 VSCode 中"扩展"面板 → ... → "从 VSIX 安装"。也可以直接从插件市场安装。
npm test # 单元测试(node:test,协议/store/扩展宿主纯逻辑)
npm run test:e2e # Playwright 浏览器 E2E(真实扩展宿主代码 + 真实隔离 dsh host)
E2E(tests/e2e/):真实扩展宿主代码(Bridge/DshClient/HostManager,vscode 模块经 esbuild alias 替换为 stub)跑在 Node,
Playwright 页面加载真实构建产物 media/main.js,页面与 Node 宿主经 WebSocket 桥接;每个运行自 spawn 一个隔离 dsh host
($DSH_HOME 临时目录 + 拷贝用户 settings/credentials,端口 3200 起探测空闲,结束自清理;永不触碰 3080)。
覆盖五条 TODO 修复回归(IDE 插入 / 提问后台重放 / 跨工作区隔离 / 发送置顶)+ 真实模型对话闭环(结构断言)。
目前正在让插件美观易用,无限接近与codex extention(bushi) 欢迎issue & PR