🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

可视化批注台 niobium617/dsh-vibecode-studio

DeepSeek 客户端
niobium6172 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

预览本地网页并点选元素写批注,交给编码智能体修改

30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/niobium617/dsh-vibecode-studio.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 2 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 28 处,展示前 28 条)
  • 写入本地文件
    spikes/s1/host.ts:149
    await appendFile(metricsPath, `${line}\n`, 'utf8')
  • 读取本地文件
    spikes/s1/run.ts:71
    const info = await stat(path)
  • 写入本地文件
    spikes/s1/run.ts:76
    await mkdir(libDir, { recursive: true })
  • 写入本地文件
    spikes/s1/run.ts:90
    await mkdir(buildDir, { recursive: true })
  • 读取本地文件
    spikes/s1/run.ts:105
    const code = await readFile(outfile, 'utf8')
  • 写入本地文件
    spikes/s1/run.ts:117
    await writeFile(join(libDir, 'client.js'), wrapped, 'utf8')
  • 发起网络请求
    spikes/s1/run.ts:270
    const response = await fetch(`${base}${PULL_PATH}?wait=1&after=${after}`, {
  • 发起网络请求
    spikes/s1/run.ts:316
    const response = await fetch(`${base}${STREAM_PATH}`, {
  • 写入本地文件
    spikes/s1/run.ts:399
    await writeFile(benchPath, `${JSON.stringify({
  • 读取本地文件
    spikes/s1/soak.mjs:30
    const packageMtimes = async () => Promise.all(packageFiles.map(async (file) => (await stat(file)).mtimeMs))
  • 写入本地文件
    spikes/s1/soak.mjs:106
    await mkdir(dirname(outPath), { recursive: true })
  • 写入本地文件
    spikes/s1/soak.mjs:107
    await writeFile(outPath, `${JSON.stringify(summary, null, 2)}\n`, 'utf8')
  • 读取本地文件
    spikes/s2/build.ts:17
    return `${((await stat(path)).size / 1024).toFixed(1)} KiB`
  • 写入本地文件
    spikes/s2/build.ts:21
    await mkdir(libDir, { recursive: true })
  • 写入本地文件
    spikes/s2/build.ts:35
    await mkdir(buildDir, { recursive: true })
  • 读取本地文件
    spikes/s2/build.ts:50
    const code = await readFile(outfile, 'utf8')
  • 写入本地文件
    spikes/s2/build.ts:62
    await writeFile(join(libDir, 'client.js'), wrapped, 'utf8')
  • 读取本地文件
    spikes/s3/run.ts:431
    const fixtureHtml = await readFile(fixturePath, 'utf8')
  • 写入本地文件
    spikes/s3/run.ts:493
    await writeFile(resultsPath, `${JSON.stringify({
  • 写入本地文件
    spikes/s4/run.ts:309
    await writeFile(resultsPath, `${JSON.stringify(output, null, 2)}\n`)
  • 写入本地文件
    spikes/s7/run.ts:2556
    await mkdir(join(ROOT, '.tmp', 'logs'), { recursive: true })
  • 发起网络请求
    spikes/s7/run.ts:2590
    const response = await fetch(url, init)
  • 写入本地文件
    spikes/s7/run.ts:3301
    await writeFile(RESULTS_PATH, `${JSON.stringify(result, null, 2)}\n`, 'utf8')
  • 执行外部命令固定命令
    spikes/s8/run.ts:191
    child = spawn('cmd.exe', ['/d', '/s', '/c', command], {
  • 执行外部命令来自配置/变量
    spikes/s8/run.ts:199
    child = spawn(process.execPath, args, {
  • 发起网络请求
    spikes/s8/run.ts:241
    const res = await fetch(`http://127.0.0.1:${port}/`, { signal: AbortSignal.timeout(500) })
  • 写入本地文件
    spikes/s8/run.ts:615
    await mkdir(logDir, { recursive: true })
  • 写入本地文件
    spikes/s8/run.ts:617
    await writeFile(resultPath, `${JSON.stringify(summary, null, 2)}\n`)
扫描于 2026/11/3(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的可视化 Vibe Coding 插件:在侧栏预览本地 Web 应用,点选元素写批注,把结构化上下文交给编码 Agent。

README

由 DeepSeek 最新模型翻译生成
DSH Vibecode Studio 给 DeepSeek Harness 的可视化反馈回路:在 DSH 里预览本地 Web 应用,指出哪里不对,把结构化批注交给编码智能体——不用来回截图。 📖 第一次使用?直接看图文使用说明(5 分钟上手 + 界面导览) 界面导览(真实预览截图,已脱敏;点图看完整说明):① Studio 标签页 ② 五个页签 ③ 状态行/更多 ④ 地址栏 ⑤ 预览画布 ⑥ 拾取提示/元素卡片 ⑦ 批注气泡 ⑧ 底部抽屉。 最大特色:实时预览 + 点选页面元素,直接让 DSH 改。 不用截图、不用描述“左边那个蓝色按钮”。点中它,写一句要改成什么,Agent 收到的是选择器、源码位置和 DOM 上下文。 最大特色:实时预览 + 点选元素,直接改 1. 在 DSH 右栏实时预览本地应用 —— 流式 JPEG 约 30 fps,页面可点击、输入、滚动。 2. 点选出问题的元素,写下修改意见 —— 自动带出选择器、role / 可访问名称、DOM 片段,以及 React / Vue / Svelte 开发态源码位置。 3. 一键发送到对话 —— 批注进入 composer 草稿,Agent 用 vibe_annotation_get / vibe_observe / vibe_preview 读取结构化上下文并修改代码;不会自动发送,也不会自动提交。
展开完整文档(README 剩余 1 节)
DSH Vibecode Studio

给 DeepSeek Harness 的可视化反馈回路:在 DSH 里预览本地 Web 应用,指出哪里不对,把结构化批注交给编码智能体——不用来回截图。

📖 第一次使用?直接看图文使用说明(5 分钟上手 + 界面导览)

界面导览(真实预览截图,已脱敏;点图看完整说明):① Studio 标签页 ② 五个页签 ③ 状态行/更多 ④ 地址栏 ⑤ 预览画布 ⑥ 拾取提示/元素卡片 ⑦ 批注气泡 ⑧ 底部抽屉。

最大特色:实时预览 + 点选页面元素,直接让 DSH 改。
不用截图、不用描述“左边那个蓝色按钮”。点中它,写一句要改成什么,Agent 收到的是选择器、源码位置和 DOM 上下文。

最大特色:实时预览 + 点选元素,直接改

1. 在 DSH 右栏实时预览本地应用 —— 流式 JPEG 约 30 fps,页面可点击、输入、滚动。
2. 点选出问题的元素,写下修改意见 —— 自动带出选择器、role / 可访问名称、DOM 片段,以及 React / Vue / Svelte 开发态源码位置。
3. 一键发送到对话 —— 批注进入 composer 草稿,Agent 用 vibe_annotation_get / vibe_observe / vibe_preview 读取结构化上下文并修改代码;不会自动发送,也不会自动提交。

点「发送到对话」只写入 composer 草稿;改完后状态行提示「文件已改动」,刷新预览继续下一处。

👉 完整的 5 分钟上手流程、功能导览与排障:使用说明(图文)

状态:pre-alpha,未发布。 M0–M6 已完成,G0–G6 各道关卡全部通过:内嵌预览、检查/批注、API 工作台、智能体工具(vibe_status/vibe_observe/vibe_annotation_get/vibe_preview)、Vibe Studio 预设、/vibe、内置技能,以及 M6 的验证与加固工作(验证服务和面板、真实 DSH 端到端测试、浸泡测试、安全加固、打包与文档)。G6 对照 SPEC §2.3 拿到 8/8。M6 已合入 main(合并提交 f2f5342)。包仍刻意保持 private 且未发布——发布清单见 RELEASE.md。go/no-go 与回退决策见 G0 评审。
📖 使用说明(图文) · 中文简介 · 安装与使用 · 发布 · 安全策略 · 安全审计 · 设计 · 任务计划 · 开发日志 · M2 手册 · M3 手册 · M4 手册 · M5 手册 · M6 手册 · 界面与项目方向 · 后续方向 · 验证接口对接

中文简介

DSH Vibecode Studio 是面向 DeepSeek Harness(DSH) 的可视化 Vibe Coding 插件:在 DSH 侧栏里直接预览本地 Web 应用,点选页面元素写下修改意见,再把这些带上下文的批注交给编码智能体,省掉「截图 → 粘贴 → 用文字描述」的来回。

它解决什么问题

Vibe coding 的关键是让智能体「看见」结果。截图会丢失元素身份、交互上下文和截图外信息;本插件把预览本身变成反馈界面:

1. 本地 Web 应用在 DSH 右栏中预览,帧以流式 JPEG 传输,断流时回退到拉取式 JPEG。
2. 点击页面元素即可添加批注,无需离开预览。
3. 多条批注先进入批注队列,审核后再交接,不自动发送。
4. 智能体收到的是结构化上下文——路由、选择器、元素信息、源码位置和修改意见,而不是一张不透明的图片。

当前进度

- M0 / G0 已通过:S1 传输、S2 composer 交接、S3 screencast/输入/中文、S4 拾取/源码四个 spike 均完成,结论与回退方案见 spikes/G0.md。
- M1 完成并通过 G1:包脚手架与构建链、host ESM 入口、client loader bundle、contracts v1 契约、右栏 Studio shell 与标签页、ctx.connection 传输、测试 harness 与 Vite fixture、.vibe 设置与设置面板均已完成。
- M2 完成并通过 G2:预览闭环(screencast/帧路由/输入/工具栏/生命周期)、Console/Network 采集与抽屉、.vibe 设置已在 Host、Web 与隔离 Desktop 载体验证;G2 三端实测 24.4–25.9 fps。手动复测步骤见 手动测试手册。
- M2.5 / U01 已完成(Layout v2):预览页改为画布优先——常驻仅状态行、地址行、底部 tab,视口参数移入设置与「更多」菜单,Console/Network 改为覆盖式抽屉;三档面板(320/400/500px)无横向溢出,舞台占面板 85.6%,实测 26.2 fps。方向与验收见 界面与项目方向。
- M3 完成并通过 G3:元素拾取与选择器、元素上下文、React/Vue/Svelte 源码适配、标注气泡与队列、保存通知、composer 草稿交接、标注历史均已完成;G3 四项验收通过(50/50 源码命中、标注 ≤ 4 KB、3 动作进 composer、不自动发送)。手动复测步骤见 M3 手动测试手册。
- M4 完成并通过 G4:HTTP 发送(取消/超时/重定向/大响应)、请求构建(query/headers/body/auth)、响应查看(JSON 树/HTML/图片/二进制/分页)、环境与密钥引用、集合与历史、cURL 导入导出、OpenAPI 导入、内置断言、预览抓包回放均已完成;FR-API-01–10、12 通过,FR-API-11(Cookie jar)按 D8 延后。界面按 M4 人工审核意见整改(U04):首屏只留「方法 + URL + 发送」与响应区,其余收进「更多配置」与「更多工具」抽屉,新增新手/专业模式(默认新手并记忆)与内置 loopback 示例请求,术语改为 URL 参数/身份验证/结果校验/收藏。手动复测步骤见 M4 手动测试手册,配套本地目标服务 tools/m4-manual-server.mjs。
- M5 完成并通过 G5:智能体侧能力就绪——四个工具(vibe_status / vibe_observe / vibe_annotation_get / vibe_preview)、Vibe Studio preset、斜杠命令 /vibe、内置技能 vibecoding-studio;工具 schema 经 DSH 校验,越权动作(非 loopback、跨源、关闭截图后的 screenshot)在审批前即拒绝。手动复测步骤见 M5 手动测试手册。
- M6 已完成并通过 G6,已合并入 main(合并提交 f2f5342):验证服务与验证面板、真实 DSH 的 E2E 主链路、30 分钟 / 100 次标注的 soak、安全加固(pnpm test:security,见安全审计)、打包与文档(USER-GUIDE.md、RELEASE.md)。G6 对照 SPEC §2.3 的 8 条逐项达标(GO);干净 vibe-dev 安装已验证:tarball 227.1 kB / 11 个文件,--dump-config 组合树含插件行,/api/vibe/health 正常,Studio E2E 通过;隔离 Desktop 载体验证 5 个页签与验证抽屉可用,真实 desktop profile 未被修改。手测步骤见 M6 手动测试手册;M6 之后的选题建议见后续开发方向。
- 尚未发布:包保持 "private": true;发布需要用户明确批准,步骤与回滚见 RELEASE.md。spikes/ 保留为 spike 证据。

MVP 能力(M0–M6 已完成)

- 仅限 localhost 的内嵌预览,默认 30 fps 流式 JPEG,拉取式回退。
- 页面元素拾取与标注 overlay,支持 React / Vue / Svelte 开发态源码定位。
- 批注队列、气泡与历史;交接前可审核。
- 通过公开 InputActions 把结构化文本写入 composer 草稿,不自动发送;截图走「复制 PNG + 手动粘贴」。
- 会话级多页面 tab;密钥只存放在 ctx.credentials,UI 只读取 describe 元数据。
- API 工作台、Agent 工具与 /vibe 命令、验证面板与打包(M4/M5/M6)。

安全边界

- 预览目标默认只允许 localhost;拒绝 file:、chrome:、devtools:、云元数据与私网地址。
- 不自动发送批注、不自动批准、不自动提交;截图不作为唯一证据。
- host/client 通信只走 ctx.connection,不直接使用 ctx.webServer。
- CDP 只连接已启动或已批准的 loopback 端点,不暴露到网络,并清理进程树。

快速开始

需要 Node.js 24、pnpm 11,以及 DSH 0.2.1-rc.2 或更新版本。只装进开发 profile vibe-dev,不要动 desktop / web。

pnpm install
pnpm build # lib/index.js + lib/agent.js + lib/client.js
npm pack # 产出 dsh-vibecode-studio-0.1.0.tgz
dsh plugin --profile vibe-dev add file:<绝对路径>/dsh-vibecode-studio-0.1.0.tgz
dsh --profile vibe-dev --no-open --host 127.0.0.1 --port 4317

开发时也可用 dsh plugin --profile vibe-dev add link:<本仓库绝对路径>,每次 pnpm build 后重启 DSH。
右栏「新标签页 → Vibe Studio」打开界面。第一次使用建议先看使用说明(图文);打包、干净安装验证与发布流程见发布说明。

完整设计见 SPEC,任务顺序见 todo.md,开发记录见 DEVLOG,自己复测功能见 M2 手动测试手册、M3 手动测试手册、M4 手动测试手册 与 M5 手动测试手册,界面与产品方向见方向文档。

为什么

智能体能看到结果时,vibe coding 效果最好。现在通常的做法是截个图,粘贴到对话里,再用文字描述问题。这样会丢掉元素身份、交互上下文,以及截图里看不到的一切。

DSH Vibecode Studio 把预览本身变成反馈界面:

1. 应用跑在 localhost,在 DSH 侧栏标签页里预览。
2. 点任意元素就能附上批注,不用离开页面。
3. 把多条批注收进一个批次,审核后发送到 composer。
4. 智能体收到的是结构化上下文——路由、选择器、包围盒、批注——而不是一张看不懂的图。

控制权始终在智能体手里。批注只是准备好交给 composer;不会自动发送、自动批准或自动提交。

计划中的 MVP

- 仅限 localhost 的嵌入式预览,带流式 JPEG 传输和拉取 JPEG 回退(S1 两者都验证过;见传输报告)。
- 元素拾取器和标注浮层,渲染在实时预览之上。
- 批量标注托盘,交接前可先审阅。
- Composer 交接:插入一条结构化、可编辑的消息;在 DSH 开放公共附件 API 之前,截图走复制粘贴回退。
- 会话级页面标签页,支持多页面流程。
- 凭据不会到达页面;UI 只读取 describe 元数据。

仓库结构

docs/ product spec, user guide, release/security notes, capability map, UI direction
src/ product package (host, client, contracts)
tests/ Vitest unit/component/integration, Playwright E2E, security suite, soak runner
fixtures/ vite-basic React app plus the security-injection fixture
tasks/ implementation plan, ordered task list, handoff state
spikes/
s1/ T001 transport spike: pull JPEG vs multipart stream
s2/ T002 composer handoff spike: public InputActions + clipboard fallback
s3/ T003 screencast, input latency, and Chinese IME spike
s4/ T004 element picking and React/Vue/Svelte source mapping spike
G0.md T005 spike review: go/no-go and final fallback decisions

G0–G6 已通过,M1–M6 已完成:根包构建出 host lib/index.js、agent lib/agent.js 和 loader 包装的 lib/client.js,另外还有智能体预设用的 presets/ 和 skills/;测试放在 tests/,fixture 放在 fixtures/。

开发

环境要求:Node.js 24、pnpm 11,手动跑插件需要 DeepSeek Harness 0.2.1-rc.2 或更新版本。

pnpm install
pnpm typecheck
pnpm build # host + agent + client bundles
npm pack --dry-run # package contents check
pnpm test # Vitest: node + jsdom projects
pnpm test:security # injection / redaction / origin / credential suites
pnpm test:e2e # Playwright; real-DSH carrier via VIBE_DSH_BIN
pnpm test:soak # 30 min + 100 annotations stability run
pnpm fixture:dev # fixture only → http://127.0.0.1:4320
pnpm spike:s1:build # bundle S1 host/client (required before linking)
pnpm spike:s1 # local 10 s pull-vs-stream benchmark
node spikes/s1/soak.mjs ... # 10 min Web/Desktop soak; see spikes/s1/REPORT.md
pnpm spike:s2:build # bundle S2 host/client (required before linking)
pnpm spike:s3 --seconds 10 # screencast, input latency, Chinese IME
pnpm spike:s4 # picker and React/Vue/Svelte source hits
spikes/s1/package/lib/ 和 spikes/s2/package/lib/ 是生成产物,已加入 gitignore。链接前先构建,再执行 dsh plugin --profile vibe-dev add link:<absolute-path>;否则 DSH 链接到的包没有 host/client 入口点。基准测试、浸泡测试或人工验收运行期间,不要重新构建已链接的包;DSH 会热重载客户端,导致结果失效。S2 的手动步骤及其剪贴板限制见 spikes/s2/run.md。

这些 spike 安装到一个一次性 DSH 配置档(vibe-dev)里;绝不能直接装进 desktop 或 web。

工程护栏

- 所有 host/client 流量都走 ctx.connection;不要直接用 ctx.webServer。
- 页面和 API 内容一律视为不可信;密钥只放在 ctx.credentials 里。
- 预览目标默认是 localhost。file:、chrome:、devtools:、云元数据和私有网络目标一律拒绝。
- CDP 只连接已启动且已批准的端点,绝不暴露到网络。
- 不自动发送、批准、提交,也不接受仅凭截图的证据。

完整约定见 docs/SPEC-vibecoding-studio.md,按序排列的计划见 tasks/todo.md。

参与贡献

欢迎早期阶段的贡献,尤其是协议和传输方面的评审。请先读 CONTRIBUTING.md。安全报告请遵循 SECURITY.md。

免责声明

这是一个独立开源项目,与 DeepSeek 无关联,未获其背书或赞助。「DeepSeek」和「DeepSeek Harness」仅用于描述插件运行所在的宿主。

许可证

MIT
预览分享卡片长什么样 ↓niobium617/dsh-vibecode-studio
分享 · DeepSeek Harness Hub
niobium617/dsh-vibecode-studio

预览本地网页并点选元素写批注,交给编码智能体修改

这是你的仓库?认领条目

回到顶部