在 VS Code 里跑本地 AI 智能体 DeepSeek Harness(DSH)——原生侧边栏面板加编辑器桥接,纯协议客户端:不改写 DSH,不另起服务
36.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add zhibailu/dsh-vsc该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · browser
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 0 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-vsc(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 06:37:35
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 36 处,展示前 32 条)
- 读取本地文件esbuild.js:34
let html = readFileSync("src/panel/native/panel.html", "utf8"); - 写入本地文件esbuild.js:41
writeFileSync(panelDist, html); - 读取本地文件esbuild.js:43
const written = readFileSync(panelDist, "utf8"); - 删除本地文件递归esbuild.js:51
rmSync("dist", { recursive: true, force: true }); - 写入本地文件esbuild.js:52
mkdirSync("dist", { recursive: true }); - 执行外部命令固定命令src/editor/context.ts:63
execFile( - 执行外部命令固定命令src/editor/diff.ts:9
execFile("git", args, { cwd, timeout: 8000, windowsHide: true, maxBuffer: 64 * 1024 * 1024 }, (error, stdout) => { - 写入本地文件src/editor/diff.ts:79
writeFileSync(tmpFile, head, "utf8"); - 写入本地文件src/extension.ts:365
fs.appendFileSync(DEACTIVATE_LOG, `[${new Date().toISOString()}] ${line}\n`); - 发起网络请求src/harness/client.ts:74
res = await fetch(url, { redirect: "manual", signal }); - 发起网络请求src/harness/client.ts:103
res = await fetch(`${this.base}/api/${method}`, { - 发起网络请求src/harness/client.ts:125
const res = await fetch(`${this.base}/`, { - 写入本地文件src/harness/launcher.ts:55
writeFileSync(HARNESS_PID_FILE, JSON.stringify(record, null, 2), "utf8"); - 删除本地文件src/harness/launcher.ts:63
rmSync(HARNESS_PID_FILE, { force: true }); - 读取本地文件src/harness/launcher.ts:71
if (!existsSync(HARNESS_PID_FILE)) return null; - 读取本地文件src/harness/launcher.ts:72
return JSON.parse(readFileSync(HARNESS_PID_FILE, "utf8")) as HarnessPidRecord; - 执行外部命令固定命令src/harness/launcher.ts:141
execFile("reg", ["query", "HKCU\\Environment", "/v", name], { windowsHide: true }, (error, stdout) => { - 执行外部命令固定命令src/harness/launcher.ts:151
execFile("where.exe", [name], { windowsHide: true }, (error, stdout) => { - 读取本地文件src/harness/launcher.ts:182
for (const version of readdirSync(nvmRoot)) dirs.push(join(nvmRoot, version, "bin")); - 读取本地文件src/harness/launcher.ts:196
if (existsSync(candidate)) return candidate; - 读取本地文件src/harness/launcher.ts:212
if (!existsSync(shim)) continue; - 读取本地文件src/harness/launcher.ts:219
return candidates.find((candidate) => candidate.endsWith(DSH_ENTRY) && existsSync(candidate)); - 执行外部命令来自配置/变量src/harness/launcher.ts:270
execFile(comspec, ["/c", "npm", "prefix", "-g"], { windowsHide: true }, (error, stdout) => { - 读取密钥环境变量src/harness/launcher.ts:341
? `GITHUB_TOKEN: ${env.GITHUB_TOKEN.length} chars (${process.env.GITHUB_TOKEN ? "process env" : "Windows user env fallback"})` - 执行外部命令来自配置/变量src/harness/launcher.ts:344
child = spawn(l.node, [l.script, ...args], { - 执行外部命令固定命令src/harness/launcher.ts:411
execFile("taskkill", ["/PID", String(target), "/T", "/F"], { windowsHide: true }, (error) => { - 写入剪贴板src/panel/NativePanelProvider.ts:570
void vscode.env.clipboard.writeText(message.text).then( - 读取本地文件src/panel/NativePanelProvider.ts:929
const stat = fs.statSync(abs); - 读取本地文件src/panel/NativePanelProvider.ts:931
return fs.readFileSync(abs, "utf8"); - 读取本地文件src/panel/NativePanelProvider.ts:1163
let html = fs.readFileSync(panelPath.fsPath, "utf8"); - 读取本地文件src/panel/NativePanelProvider.ts:1201
panel.webview.html = fs.readFileSync(settingsPath.fsPath, "utf8"); - 读取本地文件src/panel/embed.ts:15
let html = fs.readFileSync(shellPath.fsPath, "utf8");
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 侧边栏对话智能体
- 审批智能体操作
- 编辑器桥接
README
由 DeepSeek 最新模型翻译生成DSH Bridge · DeepSeek Harness for VS Code
把 DeepSeek Harness —— 本地的 AI 智能体 —— 直接放进 VS Code。 一个原生侧边栏面板 + 编辑器桥,以协议客户端的方式连接 DSH,不重写它、也不另起第二个服务端。
语言:简体中文 · English
一句话 —— DeepSeek Harness(DSH)是一个住在你电脑里的 AI「工人」(默认 http://127.0.0.1:3080)。DSH 自带一个网页,但那个网页只是它「协议」的一个客户端。dsh-vsc 是另一个客户端——一张真正属于 VS Code 的侧边栏。它不重写 DSH、不模仿它的 UI,而是读懂协议、把干活的过程用原生面板画给你,并接上针对你的代码的原生编辑器桥。
目录
- 为什么用它
- 功能
- 截图
- 安装
- 快速上手
- 它怎么工作
- 设计哲学——「纯桥接」
- 命令
- 配置
- 刻意不做的事
- 开发
- 文档
- 参与贡献
- 许可证
为什么用它
多数「AI 进 IDE」的工具是在重造一个 AI。这个项目正好相反:
- 不 fork、不重写 DSH:DSH 保持字节级一致(npm 原版)。它能做的事,这个扩展都能呈现。
展开完整文档(README 剩余 1 节)
DSH Bridge · DeepSeek Harness for VS Code 把 DeepSeek Harness —— 本地的 AI 智能体 —— 直接放进 VS Code。 一个原生侧边栏面板 + 编辑器桥,以协议客户端的方式连接 DSH,不重写它、也不另起第二个服务端。 语言:简体中文 · English 一句话 —— DeepSeek Harness(DSH)是一个住在你电脑里的 AI「工人」(默认 http://127.0.0.1:3080)。DSH 自带一个网页,但那个网页只是它「协议」的一个客户端。dsh-vsc 是另一个客户端——一张真正属于 VS Code 的侧边栏。它不重写 DSH、不模仿它的 UI,而是读懂协议、把干活的过程用原生面板画给你,并接上针对你的代码的原生编辑器桥。 目录 - 为什么用它 - 功能 - 截图 - 安装 - 快速上手 - 它怎么工作 - 设计哲学——「纯桥接」 - 命令 - 配置 - 刻意不做的事 - 开发 - 文档 - 参与贡献 - 许可证 为什么用它 多数「AI 进 IDE」的工具是在重造一个 AI。这个项目正好相反: - 不 fork、不重写 DSH:DSH 保持字节级一致(npm 原版)。它能做的事,这个扩展都能呈现。 - 不把网页 iframe 当主力体验:侧边栏是一张原生 VS Code 面板 + 原生编辑器桥——选中代码、右键、提问;看着工具干活、审批操作、审阅 diff。 - DSH 升级也不怕:它消费 DSH 的协议契约(wire contract),而不是 UI。DSH 界面随便改版,这个扩展都不必跟着改。 如果你已经在用 DSH(网页或命令行)、又在 VS Code 里写代码,dsh-vsc 把你的编辑器变成 DSH 的一等表面——一份历史、一套契约、绝无第二个服务端。 功能 原生侧边栏面板 - 流式回复、可折叠的思考(reasoning)栏与每轮实时计时。 - 相邻工具调用合并成「⚙ 动作」折叠块;每轮 +N-M 改动统计。 - 审批卡片:agent 请求执行需审批的操作时弹出——允许一次 / 拒绝。 - 选择题卡片:单选用数字键、多选勾选、推荐徽章、自定义回答(↑↓ 找回)、跳过——经 /api/respond 回传。 - 会话模式(标准 / PTC / 极简 / 创造)、推理等级切换、权限预设切换(只读 / workspace-write / full-access)。 - 输入栏接管:agent 提问时主输入栏整体隐藏,防止误发消息。 原生编辑器桥 - Ask DSH(选区):选中代码 → 右键 → DSH: Ask about selection,弹结构化上下文卡片(文件 / 选区 / 工作区 / 分支)送入最新会话;解释 / 审查 / 修复 / 自定义。 - Review Agent Changes:监控 write / edit / str_replace_editor 工具调用,每轮提示改动数,一键打开 VS Code 原生 git diff。 harness 生命周期 - 复用正在运行的 DSH(共享客户端,不另起服务端);只有确实没有才自拉一个;自愈(死了按退避重启);引用计数关闭(绝不杀掉还被别的客户端用着的 harness)。详见它怎么工作。 截图 侧边栏与对话——原生 DSH 面板:会话列表、流式回复、可折叠的「⚙ 动作」、每轮实时计时、+N-M 统计 右键提问——在编辑器里选中代码,右键 → DSH: Ask about selection Ask 卡片——面板里弹出的结构化上下文卡片(文件 / 选区 / 工作区 / 分支) 审批卡片——agent 请求执行需审批的操作时,允许一次 / 拒绝 选择题卡片——单选 / 多选、推荐徽章、自定义回答 Review Agent Changes——每轮改动的文件 → 一键打开原生 git diff 会话模式——标准 / PTC / 极简 / 创造 安装 需要 Windows / macOS / Linux + VS Code ^1.90.0。DSH 本体不用单独装——没有 harness 在跑时扩展会自动拉起一个。 方式 A —— Release 安装包(推荐) 1. 从 Releases 下载最新的 dsh-vsc-<版本号>.vsix。 2. 安装(VS Code Ctrl+Shift+P → Install from VSIX,或命令行): code --install-extension dsh-vsc-<版本号>.vsix --force 3. 重载窗口(Ctrl+Shift+P → Reload Window),左侧活动栏点 DSH 图标即可。 会自动复用正在运行的 harness(npm i -g @deepseek-ai/dsh 或 npx @deepseek-ai/dsh web),默认 http://127.0.0.1:3080,可用 DSH_WEB_URL 或 dshVsc.url 覆盖。 方式 B —— 源码构建 git clone https://github.com/zhibailu/dsh-vsc.git cd dsh-vsc npm install npm run package # esbuild 构建 + vsce 打包 → dsh-vsc-<版本号>.vsix code --install-extension dsh-vsc-<版本号>.vsix --force 快速上手 1. 重载窗口——装完必须重载才生效。 2. 左侧活动栏点 DSH 图标打开侧边栏。 3. 没有 harness 在跑时,扩展会自动静默拉起一个(不弹窗);有则直接复用。 4. 发消息,看 agent 干活。 扩展里不用配 API key:key 在 DSH 侧配置(第一次 dsh web 时按提示设置)。扩展只是它的共享客户端,不碰你的 key。 它怎么工作 DSH 对外暴露两样东西:RPC 接口(POST /api/<endpoint>,0.2.1 起端点是斜杠形式,参数统一放在 payload.args)和实时事件流(同一条 WebSocket /api/remote.mux 上的多条逻辑流:会话跟随、投影控制、工作区、以及承载审批/提问的 $events)。网页只是这份契约的一个消费方。 dsh-vsc 是第二个消费方: - src/harness/client.ts —— 约 200 行的最小协议客户端:在 Node(≥ 18,全局 fetch)里重实现 DSH 的 wire contract,不 import 任何 DSH 内部包,刻意做得很薄——实现协议,而不是插件框架。 - 无损事件:面板拿到的是事件流的原始帧,不做二次建模;渲染交给面板自己。桥接层越透明,越不会跟官方语义脱节。 - 协议优先、UI 无关:官方 README 写明"没有协议版本字段,因为客户端与服务端一起发布——直到出现独立发布的客户端"。这个扩展正是那个独立发布的客户端,站的是稳定契约那一层,不是易变 UI那一层。 - 零侵入:0.1.x 时代这里曾有一层"内存运行时补丁"(overlay)——因为当时协议没暴露客户端数、也没法隐藏工具控制台。0.2.1 之后它已整体退役:控制台隐藏由官方 dsh-win32-process 自己做了(STARTF_USESHOWWINDOW|SW_HIDE),clientCount 随 dsh-host-apiproxy 整个包一起消失。现在这个扩展对官方文件一行都不碰,也再没有 NODE_OPTIONS 注入。 - 第二个客户端,绝不做第二个服务端:真实事故证明,两个 DSH 进程共用 ~/.dsh 会互相写坏历史(corrupt session log: seq gap)。所以扩展绝不另起一个服务端去写同一份历史:能复用就复用,只有确实没有才自拉;关闭时只停自己启动的那个实例(0.2.1 里已没有 clientCount 可以问,孤儿进程比误停更糟)。 给想理解这套设计的人写的完整架构说明,见 docs/design.md。 设计哲学——「纯桥接」 我不抢 DSH 的活,我只当它最好的那个客户。 - 不重写 DSH → 它保持字节级一致;它的稳定就是你的稳定,它升级你不必跟着重写。 - 不模仿 DSH 的 UI 框架 → 替官方重写一套插件系统,既不讨好官方、也累死自己。 - 不另起第二个 DSH → 两个进程共用一份历史会互相写坏。 - 实在要改(overlay)就可验证、可降级:校验、金丝雀护栏、失败就放弃、上游补上就退役。 命令 | 命令 | 作用 | | DSH: Open Sidebar | 聚焦 DSH 侧边栏 | | DSH: Start Web Harness | 显式启动/连接 harness(清除"不再重启"闩) | | DSH: Stop Auto-started Harness | 只停本扩展自拉的那个;共享的绝不杀 | | DSH: Refresh Connection Status | 重新探测 harness | | DSH: Open Web GUI (advanced) | 把完整 DSH 网页作为标签页打开 | | DSH: Ask about selection | 询问选中的代码(右键菜单里也有) | | DSH: Review Agent Changes | 打开 agent 改动文件的原生 git diff | 配置 | 设置 | 默认 | 说明 | | dshVsc.url | http://127.0.0.1:3080 | DSH harness 的地址;也认 DSH_WEB_URL | | dshVsc.autoStart | true | 配置地址无人应答时自动启动 dsh web | 刻意不做的事 - 不重写聊天 UI、不截断/白名单事件、不要求重输 API key。 - 不另起第二个 harness——能复用就复用,只有没有才自拉;关 VS Code 时若还有别的客户端连着,自拉实例会保留。 - 改动追踪只识别 write / edit / str_replace_editor 工具事件;shell 里改的文件不计入(git diff 审查仍可手工用)。 - +N-M 统计只覆盖上述文件工具;计时器是桥接侧纯展示(挂最新进行中的一轮,任务结束即固化为历史用时)。 - Ask DSH 发送到"最近更新的会话"(不一定是 webview 当前打开的那个)。 - 审批/选择题只在当前选中会话弹出。 开发 npm install npm run typecheck # tsc --noEmit(两套配置) npm run build # esbuild → dist/extension.js + dist/media npm run package # 构建 + 打包 vsix F5 调试(.vscode/launch.json)→ Extension Development Host。 自动回归测试(jsdom 模拟 webview,喂真实事件流验证面板渲染): node scratch/auto-test.mjs <sessionId> <turnNo> 文档 - 设计与架构说明——为什么采用「纯桥接」、如何应对 DSH 升级保持稳定、各模块如何配合。 - 源码地图——src/ 里各目录管什么。 - 截图——本 README 用到的图片素材。 - llms.txt——给 LLM / AI 抓取器用的机器可读文档索引。 - AGENTS.md——给 AI 编码代理的仓库上手说明。 - 更新日志——版本历史。 - 维护者可见:GITHUB-SETUP.md——在 GitHub 上设置仓库元数据与 topics 以提升可发现性。 参与贡献 见 CONTRIBUTING.md。欢迎 issue、PR、文档改进——尤其是帮新人讲清架构的。 许可证 MIT © 2026 zhibailu — 详见 LICENSE。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
zhibailu/dsh-vsc
在 VS Code 里跑本地 AI 智能体 DeepSeek Harness(DSH)——原生侧边栏面板加编辑器桥接,纯协议客户端:不改写 DSH,不另起服务
相关插件 · 浏览器
智能体插件框架deepseek-ai/deepseek-harness
DeepSeek Harnessdsh是由 DeepSeek AI 开发的开源 agent harness智能体框架。
★ 270,422已汉化DSH
71.9
多设备 Agent 看板YaoApp/yao
✨ 所有 Agent 和工作区集中管理,覆盖你的每一台设备。任务看板追踪进度,桌面端、移动端、浏览器、API…
★ 8,147已汉化DSH
71.2
可扩展侧边栏工作台omdsh-dev/DSH-better-sidebar
DSH 的双工作台:原生右侧栏 + 自绘底部面板,并把 ctx.betterSidebar 服务开放给所有插件
★ 4,761已汉化DSH
71.1
浏览器自动化桥Tencent/BrowserSkill
你的 Agent。你的浏览器。连接,就能协作。
★ 9,928已汉化DSH
71
AI 小说创作工作台EthanYoQ/AI-Novel-Writer
AI 小说作家 / AI Novel Writer
★ 1,591已汉化DSH
70.7
智能体浏览器引擎platonai/Browser4
DeepSeek Harness 集成
★ 1,175已汉化DSH
70.4