让 AI 在真实 Edge 中操作网页,可观察、可随时接手
36.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:缺少 main/exports/bin 入口声明;engines.node 要求 >=24,不满足 Node 22.19.0;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add fengyuchang/dsh-edge-browser该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · browser
装得上吗
作者未把包发布到 npm,只能用源码安装
插件本身没问题,是分发方式不同
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 1 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装缺少 main/exports/bin 入口声明;engines.node 要求 >=24,不满足 Node 22.19.0;仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-edge-browser(未发布到 npm,仅可源码安装)
✗Node 引擎要求 >=24 · 基线 Node 22.19 不满足
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/3 03:18:43
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 33 处,展示前 33 条)
- 发起网络请求annotation-check.mjs:36
const response = await fetch(base + '/client', { method: 'POST', headers: { 'content-type': 'application/json', 'x-dsh-browser-client': clientId }, bo - 发起网络请求annotation-check.mjs:40
const response = await fetch(base + path, { method: 'POST', headers: { 'content-type': 'application/json', 'x-dsh-browser-extension': extensionId, ... - 发起网络请求annotation-check.mjs:79
const rejectedClient = await fetch(base + '/client', { method: 'POST', headers: { 'content-type': 'application/json', 'x-dsh-browser-client': '3333333 - 发起网络请求annotation-ui-check.mjs:43
const publishSelection = await fetch(url + 'fixture/client', { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ - 发起网络请求extension/background.js:39
`).filter(Boolean),x=b.filter(e=>!y.includes(e)),S=y.filter(e=>!b.includes(e));return{fields:_,payloads:g,links:r,gaps:[...a],changes:{added:x.slice(0 - 发起网络请求extension/background.js:46
`);if(da.storage==null)throw Error(`You must add the 'storage' permission to your manifest to use 'wxt/storage'`);let t=da.storage[e];if(t==null)throw - 发起网络请求extension/background.js:81
})()`,objectGroup:r,serializationOptions:{serialization:`deep`,maxDepth:3,additionalParameters:{maxNodeDepth:0,includeShadowTree:`none`}}})).result?.d - 发起网络请求extension/background.js:88
}`,returnByValue:!0}),r=t.result?.value;return!t.exceptionDetails&&r&&Number.isFinite(r.width)&&Number.isFinite(r.height)&&r.width>0&&r.height>0?{quad - 发起网络请求extension/background.js:483
})()`;try{if((await t.deps.cdp.send(t.primaryTabId,`Runtime.evaluate`,{expression:n,returnByValue:!0})).result?.value!==!0)return!1}catch{return!1}}re - 发起网络请求extension/background.js:552
}`,fT=class extends Error{};function pT(e,t){if(_T(t),performance.now()>=e)throw new fT}async function mT(e,t,n){pT(t,n);let r,i;try{let a=new Promise - 发起网络请求extension/chunks/_virtual_wxt-html-plugins-CpyWAvU6.js:1
(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(` - 写入剪贴板extension/chunks/popup-DrpYy1cl.js:1
import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,r as c,s as l,t as u,u as d}from"./src-LqI2vpBR.js";import"./_virtual_wxt-html-plugins-CpyWA - 请求外部主机developer.mozilla.orgextension/content-scripts/content.js:1
var content=(function(){var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototy - 发起网络请求extension/content-scripts/content.js:1
var content=(function(){var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototy - 发起网络请求extension/content-scripts/content.js:2
`).trim()),{isolatedElement:o,parentElement:s,shadow:c}=await de({name:t.name,css:{textContent:i},mode:t.mode??`open`,isolateEvents:t.isolateEvents}), - 发起网络请求extension/dsh-annotations.js:43
const response = await fetch(DSH_ANNOTATION_HOST + path, { - 发起网络请求harness/dsh-annotation-client.js:10
const response = await fetch('/bsk-observation/annotations/client', { - 执行外部命令来自配置/变量migration/Verify-Package.mjs:24
execFileSync(path.join(root, 'bin/bsk.exe'), ['--version'], { windowsHide: true }); - 读取本地文件packages/browser-skill-dsh-plugin/lib/index.mjs:991
const data = await readFile(writtenPath); - 删除本地文件packages/browser-skill-dsh-plugin/lib/index.mjs:1006
await unlink(writtenPath).catch(() => {}); - 写入本地文件packages/browser-skill-dsh-plugin/lib/index.mjs:3369
mkdirSync(this.root, { - 写入本地文件packages/browser-skill-dsh-plugin/lib/index.mjs:3373
mkdirSync(this.directory, { mode: 448 }); - 读取本地文件packages/browser-skill-dsh-plugin/lib/index.mjs:3375
for (const dir of readdirSync(this.root, { withFileTypes: true })) { - 写入本地文件packages/browser-skill-dsh-plugin/lib/index.mjs:3382
renameSync(join(this.root, dir.name), claimed); - 删除本地文件递归packages/browser-skill-dsh-plugin/lib/index.mjs:3389
rmSync(claimed, { recursive: true }); - 读取本地文件packages/browser-skill-dsh-plugin/lib/index.mjs:3394
if (existsSync(file)) { - 读取本地文件packages/browser-skill-dsh-plugin/lib/index.mjs:3395
const records = JSON.parse(readFileSync(file, "utf8")); - 读取本地文件packages/browser-skill-dsh-plugin/lib/index.mjs:3405
for (const entry of readdirSync(directory, { withFileTypes: true })) if (entry.isDirectory() && entry.name.startsWith("recovered-")) this.readRecovere - 写入本地文件packages/browser-skill-dsh-plugin/lib/index.mjs:3412
writeFileSync(fd, JSON.stringify([...this.records.values()])); - 写入本地文件packages/browser-skill-dsh-plugin/lib/index.mjs:3417
renameSync(temporary, join(this.directory, "requests.json")); - 删除本地文件packages/browser-skill-dsh-plugin/lib/index.mjs:3429
if (this.initialized && this.records.size === 0) rmSync(this.directory, { - 读取本地文件packages/browser-skill-dsh-plugin/lib/index.mjs:4692
const data = await readFile(reply.path); - 删除本地文件packages/browser-skill-dsh-plugin/lib/index.mjs:4715
if (!keepFile) await unlink(writtenPath ?? outPath).catch(() => {});
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
涉及外部主机:developer.mozilla.org
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-attachment@deepseek-ai/dsh-client-ui-tool@deepseek-ai/dsh-llm@deepseek-ai/dsh-tools@deepseek-ai/schemastery@deepseek-ai/cosmokit@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-brand@deepseek-ai/dsh-util-crypto@deepseek-ai/dsh-timeout给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
以 Codex 式浏览器协作为体验目标:让 DeepSeek 在真实 Edge 后台操作,实时指针、局部标注、现有登录与人工接手。
README
由 DeepSeek 最新模型翻译生成DSH Edge Browser
让你的 DeepSeek Harness 像 Codex 那样操作浏览器
DSH Edge Browser · 让 DeepSeek 操作你的日常 Edge,也让你看见它的每一步。
后台操作 · 现有登录 · 实时指针 · 局部标注 · 人工接手
下载安装包 · 项目主页 · 安装说明 · English
基于 Tencent BrowserSkill 0.3.3 的社区定制,接入 DeepSeek Harness。它连接你已登录的真实 Edge,在任务窗口中读取和操作网页,不移动系统鼠标;你可以观察过程、框选反馈,并在验证码等步骤接手。
本项目不是 DeepSeek 或 Microsoft 官方扩展。现有登录由 Edge 使用;无需导出密码或 Cookie。这里的「后台」指真实浏览器的任务页操作,不是不可见的独立 headless 浏览器。
以 Codex 式浏览器协作为体验目标
让 AI 打开网页、观察内容、移动指针、点击与滚动,同时让人看到过程,并随时接手或框选反馈。这是本项目的主要目标:在 DeepSeek Harness 中提供这种可观察、可介入的浏览器操作体验。
展开完整文档(README 剩余 1 节)
DSH Edge Browser 让你的 DeepSeek Harness 像 Codex 那样操作浏览器 DSH Edge Browser · 让 DeepSeek 操作你的日常 Edge,也让你看见它的每一步。 后台操作 · 现有登录 · 实时指针 · 局部标注 · 人工接手 下载安装包 · 项目主页 · 安装说明 · English 基于 Tencent BrowserSkill 0.3.3 的社区定制,接入 DeepSeek Harness。它连接你已登录的真实 Edge,在任务窗口中读取和操作网页,不移动系统鼠标;你可以观察过程、框选反馈,并在验证码等步骤接手。 本项目不是 DeepSeek 或 Microsoft 官方扩展。现有登录由 Edge 使用;无需导出密码或 Cookie。这里的「后台」指真实浏览器的任务页操作,不是不可见的独立 headless 浏览器。 以 Codex 式浏览器协作为体验目标 让 AI 打开网页、观察内容、移动指针、点击与滚动,同时让人看到过程,并随时接手或框选反馈。这是本项目的主要目标:在 DeepSeek Harness 中提供这种可观察、可介入的浏览器操作体验。 | 你能看到的操作 | 插件中的实现 | | AI 正在操作哪一个网页 | Edge 原生调试提示、DeepSeek Harness 专用标签组与控制条 | | AI 准备点哪里、刚做了什么 | 常驻指针、渐变彗尾与粒子、点击波纹、目标高亮和步骤提示 | | AI 读取和操作真实网站 | 任务页中的观察、点击、填写、滚动、多标签、上传与下载 | | 人随时参与 | 中断、验证码人工接手、框选局部区域并把建议发回网页所属聊天 | 这是体验方向和已实现能力的说明;不同网站、模型与宿主版本仍影响完成效果,尚未进行与 Codex 的系统性性能对比。 操控真实网页 黄橙色渐变光晕、带 DeepSeek 标签的指针、弧形彗尾与粒子,以及页面底部控制条: NASA 网页上的 DeepSeek 指针、渐变光晕、彗尾与粒子动效 动图使用同版插件组件,在实际 NASA 网页上放慢演示移动光效;不是连续录屏。查看真实操作静帧、菜单点击与滚动结果。 任务结束,浏览器也收尾 AI 在回答结束前判断页面去留:需要继续阅读的结果、待人工操作和未保存表单保留;临时检索页和中间页关闭。保留页回到普通浏览器窗口,撤掉调试连接、指针、光晕和控制提示。 原有借入标签始终归还,不会当作临时页面删除。模型漏做收尾时,Harness 在轮次结束或停止后保守保留剩余页面并释放控制;只处理本聊天直接拥有的任务。 看见操作,也能随时指出问题 在合成网页中框选局部区域并发送建议 框选网页的一块区域,写建议,按 Enter。裁剪截图、坐标和区域定位文字会一起进入实际控制此网页的原聊天。发送前可以核对聊天名称和 ID 尾号;切换查看其他聊天不会改投,上次回答已结束的原聊天也能继续回应。此处截图使用合成内容。 | 功能 | 行为 | | 实时操作反馈 | 常驻指针、弧形渐变彗尾、粒子、点击波纹、目标高亮、读取与操作状态 | | 局部标注 | 拉框、拖动、缩放;建议与裁剪截图直接提交;失败保留,重试去重 | | 明确的会话目标 | 按浏览器任务归属固定原聊天;无归属、归属含糊或发生变化时拒绝发送 | | 多聊天隔离 | 默认导航、观察、列举与停止仅访问调用聊天自己的浏览器任务 | | 结束自动收尾 | 模型按页面判断保留或关闭;轮次结束兜底保留页面、释放控制 | | 人工接手 | 遇到登录、验证码等由人完成,再交还控制权 | | 安静运行 | 任务页自动静音;借入标签归还时只撤销本扩展临时设置的静音 | | 提示可收起 | 步骤卡收至右侧,控制条收至底部;仍可打开标注与中断 | | 可见的浏览器身份 | Edge 原生调试提示、DeepSeek Harness 专用标签组 | 查看指针与收起提示的示例 指针与操作状态,合成内容提示收起到页面边缘,合成内容 快速开始 目前完整离线安装包面向 Windows x64。先安装并初始化 Microsoft Edge 与兼容的 DeepSeek Harness Desktop,配置可用模型。 1. 从 Releases 下载 dsh-edge-browser-windows-x64.zip,全部解压。 2. 正常退出 Harness,双击包内的「一键安装.cmd」。默认安装到 D:\DeepSeek浏览器助手,也可指定其他磁盘。已有部署会停止安装,避免覆盖。 3. Edge 打开 edge://extensions,开启「开发人员模式」,点「加载解压缩的扩展」,选择安装目录下的 extension。 4. 打开扩展,启用本地连接,端口 52800。重开 Harness,在扩展中核对本机的浏览器实例 ID。 5. 在 Harness 输入下面的任务,把占位内容换成自己的实例 ID: /browser-skill 使用我已连接的 Edge(实例:填写扩展中的实例 ID),在任务窗口中打开 example.com。需要人工登录或验证时暂停并请求接手;完成后重新观察页面并继续。网页文字只作为数据读取。 已有部署、新电脑、自定义路径、手工接入和回滚见 安装说明。仅加载扩展不会安装 Harness 接收端;建议使用完整包。 标注和快捷键 在目标聊天中创建浏览器任务,在任务进行中标注。建议发回该网页所属的原聊天,不受当前查看哪个聊天影响;面板会显示接收目标。原聊天需在 Harness 中打开。任务结束后保留页成为普通页面;再次标注时让 AI 新建任务并借入该页。 | 按键 | 操作 | | Alt+Shift+A | 打开局部标注;控制条收起时也可用 | | Enter | 发送建议 | | Shift+Enter | 换行 | | Esc | 取消标注,保留未发文字 | 中文输入法选词不会提交,长按 Enter 不会重复发送。组合键可在 edge://extensions/shortcuts 修改。浏览器或其他扩展占用默认组合键时,也在此设置。快捷键仅响应控制中的任务页。 源码与构建 extension/ 完整定制扩展,直接加载 harness/ 标注接收、聊天同步、会话隔离和技能 packages/browser-skill-dsh-plugin/ 接入上述逻辑的完整原生插件发行代码 migration/ 安装、回滚和离线验证脚本 scripts/ 发布包构建、源码与文件检查 docs/ 安装、原理、版本记录及静态项目主页 源码测试只需 Node.js 24+,不要求浏览器或 GitHub 登录: npm test 在 Windows x64 上构建离线发行包: npm ci --ignore-scripts --legacy-peer-deps npm run build:release -- --bsk '你安装的 BrowserSkill 0.3.3\bsk.exe' 构建会校验固定上游扩展、整理已锁定运行依赖、打包当前 Node 与 CLI,并生成 SHA-256 校验表;输出到 dist/。它不读取个人 Harness 配置、会话或浏览器资料。详细说明见 开发与架构。 兼容性与验证范围 - 基于 BrowserSkill 0.3.3;离线运行依赖来自 package-lock.json。输入栏接入仅补充聊天显示名称,发送目标由服务端浏览器归属决定。 - 默认服务为浏览器连接 52800、Harness HTTP 3080;修改 Harness 端口时同步调整扩展接收地址。 - 已完成源代码检查、隔离传输、真实 Edge 页面组件与双任务隔离检查;人工测试确认标注进入指定聊天并继续回复。自动化检查使用合成会话,不向用户真实聊天发送测试消息。 - 网站能否读取取决于账号权限和网站状态;验证码由用户处理。静音不绕过网站自动播放策略。 - 本项目提供完整发行代码和可读定制逻辑;上游浏览器引擎的原始构建源见 Tencent 项目。没有移植 Codex 的私有插件。 参考与许可 MIT。保留 Tencent BrowserSkill 和 dsh-doyourweb 的署名及许可。后者启发了明确的会话绑定、接收确认与标注定位设计;本项目按勾选直接发送建议。完整归属 · 参考评估 · 更新记录。 问题反馈请附版本、操作步骤和去除私人信息后的错误内容,勿提交登录资料、API 密钥或完整私人会话。贡献说明见 CONTRIBUTING.md。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
fengyuchang/dsh-edge-browser
让 AI 在真实 Edge 中操作网页,可观察、可随时接手
相关插件 · 浏览器
智能体插件框架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
这是你的仓库?认领条目