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

Edge 浏览器协作 fengyuchang/dsh-edge-browser

DeepSeek Harness
fengyuchang1 天前有提交已提供中文文档扫描:含敏感能力

让 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
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 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.org
    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: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。
预览分享卡片长什么样 ↓fengyuchang/dsh-edge-browser
分享 · DeepSeek Harness Hub
fengyuchang/dsh-edge-browser

让 AI 在真实 Edge 中操作网页,可观察、可随时接手

这是你的仓库?认领条目

回到顶部