在侧栏浏览器里点选元素,就地写批注并汇总成指令
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add nubeslove/dsh-web-annotate该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · browser
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 5 处,展示前 5 条)
- 写入本地文件lib/index.js:481
await mkdir(dir, { recursive: true }); - 写入本地文件lib/index.js:484
await writeFile(file, content.replace(/ +$/, '') + '\n', 'utf8'); - 发起网络请求lib/client.js:60
return fetch(API + path, { - 发起网络请求lib/client.js:300
fetch(API + "/session/" + encodeURIComponent(sessionId), { method: "DELETE" }).catch(function () {}); - 写入剪贴板lib/client.js:637
navigator.clipboard.writeText(text).then(function () { done(true); }, function () { done(false); });
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DSH 侧栏网页批注:真浏览器跑在宿主里,指向元素就地批注,汇总成结构化指令。
README
由 DeepSeek 最新模型翻译生成dsh-web-annotate
在 DSH 侧栏里跑一个真实浏览器,指向页面元素就地写批注,汇总成结构化指令。
Point at a live element inside the DSH sidebar, drop a comment on it, and get back a structured instruction list.
装不上、报错、或者行为和文档对不上,直接发邮件到 1992335297@qq.com,比开 Issue 更快被看到。
侧栏网页批注
图为界面示意,按插件 lib/client.js 的工具栏、拾取高亮、元素信息与批注列表样式渲染,页面内容为假数据,不是运行截图。可用 node scripts/make-screenshots.mjs 重新生成(源码在 scripts/demo/annotate.html)。
它解决什么问题
改界面最累的不是改,是指路。「左边那个卡片的边距大了点」——模型得猜是哪个卡片;截一张图贴进去——又得反复圈。批注把指路变成点一下:鼠标停在哪个元素上,它的标签、尺寸、背景色、字体就摆在那儿,点一下写一句人话,最后汇总成一份带选择器的清单。
功能
- 真实浏览器:宿主侧用 Playwright 起 Chromium,页面是真跑的,不是画出来的缩略图。
展开完整文档(README 剩余 1 节)
dsh-web-annotate 在 DSH 侧栏里跑一个真实浏览器,指向页面元素就地写批注,汇总成结构化指令。 Point at a live element inside the DSH sidebar, drop a comment on it, and get back a structured instruction list. 装不上、报错、或者行为和文档对不上,直接发邮件到 1992335297@qq.com,比开 Issue 更快被看到。 侧栏网页批注 图为界面示意,按插件 lib/client.js 的工具栏、拾取高亮、元素信息与批注列表样式渲染,页面内容为假数据,不是运行截图。可用 node scripts/make-screenshots.mjs 重新生成(源码在 scripts/demo/annotate.html)。 它解决什么问题 改界面最累的不是改,是指路。「左边那个卡片的边距大了点」——模型得猜是哪个卡片;截一张图贴进去——又得反复圈。批注把指路变成点一下:鼠标停在哪个元素上,它的标签、尺寸、背景色、字体就摆在那儿,点一下写一句人话,最后汇总成一份带选择器的清单。 功能 - 真实浏览器:宿主侧用 Playwright 起 Chromium,页面是真跑的,不是画出来的缩略图。 - 画面推流:CDP Page.startScreencast 出帧,SSE 推到侧栏,页面一有变化就刷新。 - 元素拾取:开启批注模式后,鼠标指向哪里,就高亮哪个元素并显示 标签 / 尺寸 / 背景色 / 字体 / 字号 / 字重。 - 就地评论:点元素弹出输入框,回车即存;批注列表在下方可逐条删除。 - 框选区域:按住拖动可以框一块区域批注,适合「这一整块间距不对」这类说不清是哪个元素的意见。 - 一键回填:点 ↩ 把汇总直接写进对话输入框,不用复制粘贴。 - 快捷键:Ctrl+Shift+. 切换批注模式。 - 交互转发:退出拾取后,点击、滚轮、方向键、Enter、Tab、Esc、Backspace、PageUp/PageDown 都会转发给页面。 - 批注留得住:按页面地址存在 localStorage,关掉 tab 再打开还在;删完自动清空。 - 穿透 iframe:页面里嵌的 iframe(含跨域)也能点进去拾取,信息浮层会标出所在层级。 - 页面内输入:工具栏 ⌨ 把一段文本(含中文)送进页面当前焦点元素,绕开键盘布局与输入法。 - 导出成文件:⤓ 把汇总写成 Markdown,存到 ~/.dsh/web-annotate/ 下。 汇总长这样 网页批注 页面:http://localhost:5173/ 1. #card-a(div,936×54)卡片内边距太大,收到 12px 2. #card-b.accent(div,936×54)强调色换成主题蓝 用法 1. 点右侧栏 tab 条的添加按钮,选 网页批注。 2. 地址栏输入 localhost:5173,回车。首次启动浏览器要等几秒。 3. 点工具栏的 ◱ 批注(或按 Ctrl+Shift+.)进入拾取模式。指向元素看信息,点一下写评论;按住拖动可以框一块区域。 4. 点 ↩ 把汇总回填到输入框,或点 ⧉ 复制到剪贴板。 退出拾取模式后,点击和滚轮会正常传给页面,可以当普通预览用。 与 dsh-web-preview 的分工 | | dsh-web-preview | dsh-web-annotate | | 渲染 | iframe 直出 | CDP 画面流 | | 速度 | 接近原生 | 帧流,有几十毫秒延迟 | | 能否批注 | 否(跨域拿不到 DOM) | 能 | | 依赖 | 无 | 需要 Playwright(复用 DSH 自带的那份) | 两个插件可以同时装,各自一个 tab 类型。 技术实现 宿主 lib/index.js ├─ 从 DSH profile 目录解析 playwright,复用 DSH 自带的 chromium ├─ 每个地址一个 page 会话,CDP screencast 出帧 ├─ SSE GET /api/web-annotate/frames?session=<id> ├─ POST /api/web-annotate/session 创建会话 ├─ POST /api/web-annotate/input 鼠标 / 滚轮 / 键盘转发 ├─ POST /api/web-annotate/pick 坐标 → 元素信息(elementFromPoint) ├─ POST /api/web-annotate/reload 重新加载 └─ DEL /api/web-annotate/session/<id> 关闭 没用 WebSocket:DSH 的 webServer 只暴露路由注册,不保证能拿到 http server 的 upgrade 事件。SSE 是普通响应,稳定可控;输入事件走 POST,量级完全够。 选择器生成走 id → 类名 → nth-of-type 的降级链,最多上溯 6 层。 权限与安全边界 这个插件比纯前端插件权限大,装之前请明确知道它做了什么。 - 会启动本地浏览器进程:使用 DSH 自带的 Playwright 与 Chromium,不额外下载。 - 会访问你输入的地址:只放行 http / https,拒绝 file:// 与其它协议,不能读取本地文件。 - 不注入任意脚本:页面内只执行一个固定的取元素信息函数,不执行页面返回的内容。 - 不写入文件:批注只存在客户端内存里,复制由你自己触发。 - 会话隔离:每个地址一个 page,关闭 tab 即销毁;无客户端连接且空闲 5 分钟后自动回收。 - dependencies 为空,无 preinstall / install / postinstall / prepare 生命周期脚本。 已知限制 - 画面是帧流,快速滚动或动画多时会有轻微延迟。 - 拾取模式会拦截点击与滚动,要操作页面(点按钮、输入)需先退出拾取。 - 键盘只转发导航键与编辑键(方向键、Enter、Tab、Esc、Backspace、PageUp/PageDown);可打印字符走 ⌨ 面板的整段输入,逐字键入不转。 - 回填依赖 DSH 的 conversation.input.left 插槽存在。该插槽没挂上时自动退回复制到剪贴板。 - iframe 穿透最多 4 层;超出的部分会被当成普通 iframe 元素本身。 - 导出固定写到 ~/.dsh/web-annotate/,不写项目目录。 - 批注存在 localStorage,按页面地址分键;换浏览器配置档或清理站点数据会丢。 - 只在 Windows + DeepSeek Harness 0.2.x 桌面端验证过。 开发与验证 node scripts/verify.mjs # 静态 + 路由级,17 项,不启动浏览器 node scripts/smoke.mjs # 端到端:起站点、起 chromium、取帧、拾取、输入、刷新、关闭,8 项 smoke.mjs 会真起一个本地 HTTP 站点和 Chromium,实测输出形如: PASS 创建会话并打开页面 frame=13351 bytes, device=1000x700 PASS SSE 收到首帧画面 picked #card-a 936x54 bg=rgb(255, 255, 255) font=16px / system-ui PASS 拾取元素返回标签与样式 ... 结果: 8 passed, 0 failed 安装 一条命令 dsh plugin --profile desktop add "github:nubeslove/dsh-web-annotate" 然后在 $DSH_HOME/profiles/desktop/package.json 的 dsh.profile.bundles 里追加 "dsh-web-annotate",重启 DSH。 插件本身不含运行时依赖;Playwright 在运行时从 DSH 配置档目录解析,复用 DSH 自带的 Chromium,不会额外下载浏览器。 本地开发 自己改代码时用 link 指向工作副本: dsh plugin --profile desktop add "link:/absolute/path/to/dsh-web-annotate" 路径含空格时手工处理:在 profiles/desktop/package.json 的 dependencies 加 "dsh-web-annotate": "link:E:/path/to/dsh-web-annotate",在 dsh.profile.bundles 追加 "dsh-web-annotate",并在 profiles/desktop/node_modules/ 下建指向本目录的 Junction,然后重启 DSH。 更新记录 - 0.3.0 — 攻克三处硬限制:拾取可递归穿透 iframe(frame.childFrames() 逐层进入子文档,跨域也能读,最多 4 层,浮层显示所在层级);新增 ⌨ 页面文本输入面板,用 keyboard.insertText 送中文等任意字符;新增 ⤓ 导出,把汇总写成 Markdown 到 ~/.dsh/web-annotate/。自检 19 项,冒烟 11 项。 - 0.2.0 — 批注汇总可直接回填输入框(在 conversation.input.left 挂桥接组件拿到 inputActions,桥不可用时退回复制);新增 Ctrl+Shift+. 快捷键、拖动框选区域、方向键与编辑键转发、批注 localStorage 持久化。自检增至 17 项。 - 0.1.0 — 首个版本。 许可证 MIT 反馈与联系 / Feedback & Contact 遇到 bug、安装失败、行为和文档不一致,或者想要某个功能,都可以直接发邮件。 邮箱:1992335297@qq.com 邮件里带上这三样,定位会快很多: - 插件版本(package.json 里的 version) - DSH 版本(dsh --version) - 报错的完整文字或截图 也可以在 GitHub Issues 提,但邮件更快。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
nubeslove/dsh-web-annotate
在侧栏浏览器里点选元素,就地写批注并汇总成指令
相关插件 · 浏览器
智能体插件框架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
这是你的仓库?认领条目