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

幽灵浏览器 canelaslorenzoenego-ai/Orderzx

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

在对话中实时观看并接管智能体操作浏览器

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

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

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add canelaslorenzoenego-ai/Orderzx
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · vision
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 49 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@dsh-community/dsh-browser(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/13 15:40:19

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 36 处,展示前 36 条)
  • 读取本地文件
    src/access.ts:118
    const info = await lstat(path)
  • 读取本地文件
    src/access.ts:120
    const key = await readFile(path)
  • 写入本地文件
    src/access.ts:127
    await mkdir(stateRoot(), { recursive: true, mode: 0o700 })
  • 写入本地文件
    src/access.ts:137
    await writeFile(path, candidate, { flag: 'wx', mode: 0o600 })
  • 写入本地文件
    src/access.ts:311
    await mkdir(root, { recursive: true, mode: 0o700 }).catch(() => undefined)
  • 读取本地文件
    src/access.ts:323
    info = await lstat(current)
  • 读取本地文件
    src/access.ts:331
    const [realRoot, realFile] = await Promise.all([realpath(root), realpath(path)])
  • 写入本地文件
    src/capture-store.ts:35
    await mkdir(dirname(path), { recursive: true, mode: 0o700 })
  • 写入本地文件
    src/capture-store.ts:36
    await writeFile(path, Buffer.from(data), { mode: 0o600 })
  • 写入本地文件
    src/capture-store.ts:60
    await mkdir(dir, { recursive: true, mode: 0o700 })
  • 写入本地文件
    src/capture-store.ts:62
    await writeFile(path, JSON.stringify(manifest), { mode: 0o600 })
  • 写入本地文件
    src/capture-store.ts:69
    await mkdir(dir, { recursive: true, mode: 0o700 })
  • 写入本地文件
    src/capture-store.ts:71
    await writeFile(path, html, { mode: 0o600 })
  • 读取本地文件
    src/capture-store.ts:101
    entries = await readdir(dir)
  • 删除本地文件递归
    src/capture-store.ts:111
    await rm(dir, { recursive: true, force: true })
  • 删除本地文件
    src/capture-store.ts:116
    await rm(join(dir, entry.name), { force: true }).catch(() => undefined)
  • 读取本地文件
    src/capture-store.ts:126
    entries = await readdir(dir)
  • 读取本地文件
    src/capture-store.ts:133
    const info = await stat(join(dir, name)).catch(() => undefined)
  • 读取本地文件
    src/capture-store.ts:146
    roots = await readdir(captureDir())
  • 发起网络请求
    src/challenge/adapters.ts:246
    const response = await fetch(endpoint, {
  • 发起网络请求
    src/client/wire.ts:256
    const response = await fetch(interactionsUrl(token, since), {
  • 读取本地文件
    src/host.ts:174
    const pkg = JSON.parse(readFileSync(join(here, '..', 'package.json'), 'utf8')) as { version?: unknown }
  • 写入本地文件
    src/host.ts:747
    await mkdir(this.#workflowsDir(), { recursive: true })
  • 写入本地文件
    src/host.ts:748
    await writeFile(join(this.#workflowsDir(), `${workflow.name}.json`), JSON.stringify(workflow, null, 2), 'utf8')
  • 读取本地文件
    src/host.ts:756
    files = await readdir(this.#workflowsDir())
  • 读取本地文件
    src/host.ts:763
    const parsed = JSON.parse(await readFile(join(this.#workflowsDir(), file), 'utf8')) as Workflow
  • 删除本地文件
    src/host.ts:780
    await unlink(join(this.#workflowsDir(), `${safe}.json`))
  • 读取本地文件
    src/host.ts:805
    workflow = JSON.parse(await readFile(join(this.#workflowsDir(), `${safe}.json`), 'utf8')) as Workflow
  • 读取本地文件
    src/host.ts:883
    parsed = JSON.parse(await readFile(join(this.#workflowsDir(), `${safe}.json`), 'utf8')) as Workflow
  • 写入本地文件
    src/host.ts:1225
    await mkdir(dirname(path), { recursive: true, mode: 0o700 })
  • 写入本地文件
    src/host.ts:1226
    await writeFile(path, Buffer.from(data), { mode: 0o600 })
  • 写入本地文件
    src/host.ts:1431
    await mkdir(dir, { recursive: true, mode: 0o700 })
  • 读取本地文件
    src/mcp.ts:37
    const pkg = JSON.parse(readFileSync(fileURLToPath(new URL('../package.json', import.meta.url)), 'utf8')) as { name?: string; version?: string }
  • 读取本地文件
    src/routes.ts:87
    return await readFile(join(here, 'standalone.html'), 'utf8')
  • 写入本地文件
    src/tools.ts:108
    await mkdir(profileRoot(), { recursive: true })
  • 写入本地文件
    src/tools.ts:1711
    await mkdir(dir, { recursive: true })
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-session@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-client-ui-theme@deepseek-ai/dsh-client-ui-tool@deepseek-ai/dsh-fs@deepseek-ai/dsh-host-webserver
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 实时观看浏览器操作
  • 人工接管操作
  • CAPTCHA交接
展开完整介绍(121 字)↓

在 DeepSeek Harness 会话里跑一个实时、可隐身、自主的 Chrome——标记集视觉、Chrome-for-Android 桌面视图对齐、人工接管、4 级 CAPTCHA 交接、任意设备独立面板(dsh-browser 插件)。

README

由 DeepSeek 最新模型翻译生成
Orderzx Orderzx — 我们的自定义 Chrome:实时画面、幽灵光标、隐身护盾、单一字标 在你的 DeepSeek Harness 对话中运行一个实时、具备隐身能力、自主运行的 Chrome —— dsh-browser 插件。 ci smoke tests release license 智能体以拟人化输入驱动一个真实浏览器。你可以在停靠式仪表盘中实时观看每一次点击、滚动和按键 —— 并且随时可以接管鼠标。CAPTCHA 会暂停智能体,并将控件交给 你,在会话内、使用你自己的指纹和 IP:这是永远有效的唯一解法。 零云端。零账户。 一切都在 127.0.0.1 上运行。 准备安装 —— 一条命令: curl -fsSL https://github.com/canelaslorenzoenego-ai/Orderzx/releases/download/v0.2.0-rc.24/install.sh | bash 它会克隆到 ~/.orderzx/dsh-browser,完成安装、构建,并打印出将 dsh-browser 添加到你的 harness 插件列表所需的确切命令行。详情见:安装。
展开完整文档(README 剩余 1 节)
Orderzx

Orderzx — 我们的自定义 Chrome:实时画面、幽灵光标、隐身护盾、单一字标

在你的 DeepSeek Harness 对话中运行一个实时、具备隐身能力、自主运行的 Chrome —— dsh-browser 插件。

ci
smoke tests
release
license

智能体以拟人化输入驱动一个真实浏览器。你可以在停靠式仪表盘中实时观看每一次点击、滚动和按键 —— 并且随时可以接管鼠标。CAPTCHA 会暂停智能体,并将控件交给 你,在会话内、使用你自己的指纹和 IP:这是永远有效的唯一解法。

零云端。零账户。 一切都在 127.0.0.1 上运行。

准备安装 —— 一条命令:

curl -fsSL https://github.com/canelaslorenzoenego-ai/Orderzx/releases/download/v0.2.0-rc.24/install.sh | bash

它会克隆到 ~/.orderzx/dsh-browser,完成安装、构建,并打印出将 dsh-browser 添加到你的 harness 插件列表所需的确切命令行。详情见:安装。

启动序列:胶囊在聊天栏上弹出,仪表盘展开,实时流开始绘制,智能体的手势在画面上动画呈现

you: "book me a table at X"
chatbar 🖥 ▸ starting browser… ← 胶囊监视器动画 dashboard extends ────────────────────────────────────────┐ │ Home │ shopper │ researcher [screenshot ▾] [×] │ ← 每个子智能体一个标签页 │ ◀ ▶ ⟳ https://restaurant.example │ │ 实时画面 + 智能体的幽灵光标正在点击 │ │ ▸ timeline(每个操作,最新在前) │
│ [ Take over ] 1366×768 · humanized │ ← 你的鼠标,按需接管
└──────────────────────────────────────────────────────────┘

看它思考

- 可接管的实时流 —— 默认按需截图,通过标志启用 CDP 屏幕录制,捕获被阻止时回退到 DOM。接管时会将幽灵光标替换为琥珀色的“你”手势;手势始终带有操作者标记,永不改变。
- 手势字幕 —— 流上的一个标签用文字叙述意图: click "Sign in"、scroll down 480px、you · type 12 chars。
- 要视频,就给视频 —— browser_clip 采样真实帧,将它们交付到会话中,并且交给模型一段可粘贴的 chatLine
- browser_reel — 一次调用 → 一个独立的 HTML 产物:帧 + 手势轨道 + 拖动条,零依赖,签名 URL,沙箱 CSP。
- 视频感知增强 — 正在播放的 会将流收紧到约 3 fps,使运动读起来像运动;browser_transcript 读取视频说了什么。
- 仅扩展式仪表盘,已加固 — dock 租约现在推送最深的覆盖视口的外壳(包括 fixed/100vw 测试框架布局)并附带一个 !important 样式表,以及一个 MutationObserver 看门狗,用于修复测试框架重新渲染造成的擦除;Android 测试框架仪表盘完全失去了其模态覆盖回退(手机在所有宽度下都分屏)。
- 看模型行动 — 每个手势都会立即重绘流,并在 200 ms 轮询下限处打开一个 4 秒的突发窗口;子代理活动也算作活动,因此自动跟随不再在搜索中途折叠;一旦检测到供应商挑战,就会自动聚焦其会话。
- 同时查看每个浏览器 — 当子代理生成自己的会话时,侧边仪表盘会变成一个瓦片网格:每个浏览器一个实时瓦片(流、fps、url、挑战点),点击一个瓦片即可用完整控制卡聚焦它,▦ 返回到网格。整个界面采用 DeepSeek 测试框架设计令牌 —磨砂玻璃卡片、薄雾渐变、石板色字体、#4d6bfe 强调色。

/start — 一条命令即可启动

在输入框中输入 /start(可选 /start https://example.com)。
该命令会立即启动浏览器:聊天栏胶囊弹出其监视器启动动画,仪表盘向右扩展,实时视图连接 — 整个启动序列自行播放,没有澄清性问题,也没有模型侧对页面的窥视(面板已经在显示它)。拒绝会以一行引用返回。

子代理各自获得自己的浏览器。 每个 browser_start 都会打开一个独立会话(最多 4 个并发,空闲时按 LRU 淘汰)。一个会话只能看到、驱动和关闭它自己的标签页:在已附加的 CDP 浏览器上,你的个人标签页 — 以及其他代理的标签页 — 永远不会被劫持、列出或关闭,弹出窗口始终归打开它们的会话所有。停止一个代理的会话永远不会干扰另一个。

它能做什么

- 27 个工具 — 观察/操作/输入/按键/滚动/导航/标签页/提取、表单、策略门控后的求值、工作流(录制人工演示 → 回放)、带实时进度的后台作业、cookies(仅元数据)、围栏文件。
- 如实报告的隐身 — 默认使用 Patchright(抑制 CDP 特征),可选 CloakBrowser 分支,拟人化输入,按会话指纹。
姿态端点说明引擎实际做什么。
- CAPTCHA = 移交,而非求解 — 检测到挑战 → 代理暂停 → 小组件在你的会话中渲染 → 你求解 → 代理带着上下文恢复。
- 自愈 — 被重新加载杀死的引用会根据元素身份重新解析;坐标是最后的手段,永远不是首选。
- 工作流与作业 — 记录你的鼠标操作,以拟人化方式回放;密码形状的
字段会变成必需的 {{variables}},因此机密永远不会落盘。

Android 手机

dsh-android 通过 ADB/WireGuard 提供相同的仪表盘:手机从你的桌面会话渲染画面和手势。按设计仅限观看。

兼容性契约

为在任何 dsh-web / Cordis 世代(无论过去还是未来)中存活而构建:

- 结构性,而非名义性 — 同时针对 cordis 和 @deepseek-ai/cordis 进行类型检查;可选服务(审批、视觉)通过
ctx.inject([...]) 进行特性检测,绝不强制要求。
- 仅增量式线路变更 — 字段只会出现,绝不会消失或改变类型。
读取方忽略未知字段,因此旧载荷在新构建中始终能解析。
- 版本化协议 — status.compat 携带 {protocol, plugin, guarantees}。
更新的 harness 会将面板降级为可见的横幅,绝不会变成空白屏幕。
- 仅三个表面 — mountRoutes、ctx.effect 工具注册以及签名路由围栏:这是 harness 从未需要更改的契约。
- Node ≥ 20,无原生依赖,无固定 harness 版本。

由冒烟步骤强制执行,这些步骤向测试套件喂入昨天的清单、明天的未知字段以及不匹配的协议编号。

DeepSeek Harness — 原生扩展轨道

在真实的 deepseek-harness 仪表盘上,面板根本不会租用边距:它作为一等网格轨道扩展布局。

- harness/deepseek-harness-dashboard.patch 修改 harness 自身的 packages/client/ui-layout(AppFrame + columns):第 4 条外部轨道,插件通过 --dsh-external-side-track CSS 变量 + dsh-external-side-track window 事件向其供给,并钳制到视口(狭窄下限让手机保持诚实:真实的 ≥140 px 轨道,绝不是覆盖层),授予的宽度会回传发布(--dsh-external-side-track-granted),以便面板的尺寸恰好等于框架预留的空间。
- node scripts/patch-harness-dashboard.mjs --web-target 应用它(幂等;当找到 dsh-android 检出时也会对其打补丁)。
- 客户端对打过补丁的框架进行特性检测(data-dsh-external-track)并使用原生通道;未打补丁的 harness 回退到 rc.20 边距租用 — 相同的扩展保证,两套机制。

端到端验证

706 项检查,全部可从此检出运行:

| 套件 | 检查数 | 证明 |
| tools | 207 | 每个工具针对模拟引擎、拒绝、评分 |
| routes | 85 | 能力前围栏、令牌作用域、捕获遏制、兼容性、流中途拆除 |
| frames | 72 | 传输、层级、抑制、增强节奏 |
| panel | 246 | 真实客户端 bundle 经 SSR:胶囊、覆盖层、抽屉、播放器 |
| mcp | 18 | 桥接在真实派生子进程的 stdio 上运行,敌意 JSON-RPC |
| mount | 8 | 真正的 harness 路径:cordis loader + include + cordis.yml 条目挂载我们,工具和两个技能(/browser-automation、/start)落地,dispose 注销 |
| live | 31 | 通过 CDP 的真实 Chromium:启动 → 流式传输 → 点击 → 修复 → 片段 → 卷轴 |
| dock-hostile | 24 | 敌意 harness shell(固定 + 100vw)带 700 毫秒租约清除器:在 1280/390 处扩展、修复、× 释放,外加一个打过补丁的 harness 原生外部轨道(授予宽度尺寸,无 margin 租约) |
| e2e | 15 | 真实主机 + 真实路由 + 真实 bundle,端到端 |
| dispatch | 123 | 每个工具都走真实 dispatch 路径:schema 诚实,拒绝类型化 |
| workflow | 23 | 在真实浏览器上录制 → 密钥 → 回放 → 后台任务 |
| tools-live | 20 | 文件围栏 + 上传/下载、标签页、desktop_view、transcript、screencast — 真实浏览器 |
| challenge-live | 13 | 实时 DOM 检测、带页面效果证明的适配器求解、交接、域名门控 |
| stream-teardown | 10 | 打开的帧流在其会话死亡时干净终止 |
| subagent-live | 9 | 并发会话隔离:仅自己的标签页、弹窗所有权、独立停止 |

pnpm test # 573 个静态断言,无需浏览器
node scripts/dev-host-mount-smoke.mjs # 8:真实 cordis loader 挂载
pnpm run test:live # 31 个针对真实 Chrome(可选启用)
pnpm run test:e2e # 15:主机 + 路由 + 客户端 bundle + Chrome
pnpm run test:dispatch # 123 个 dispatch 路径 schema/拒绝检查
pnpm run test:workflow # 23 个录制/回放/任务步骤
pnpm run test:tools-live # 20 个 files/tabs/desktop_view/transcript/screencast
pnpm run test:challenge-live # 13 个挑战流水线步骤
pnpm run test:stream-teardown # 10 个流中途拆除步骤
pnpm run test:subagent-live # 9 个多会话隔离步骤

安装

curl -fsSL https://github.com/canelaslorenzoenego-ai/Orderzx/releases/download/v0.2.0-rc.24/install.sh | bash

更喜欢源码?克隆并运行 pnpm install && pnpm run build,然后将构建后的
入口接入你的 harness。上面的脚本正是这样做,安装到 ~/.orderzx/dsh-browser 并为你打印出确切的 YAML。
发布资产:install.sh + 一个示例回放卷轴。

接入它 — harness loader(@deepseek-ai/cordis-plugin-loader + cordis-plugin-include)将 cordis.yml 读取为裸条目列表;每个条目将其 name 作为模块说明符导入。挂载两侧 — node 插件(工具、引擎、路由)和客户端 bundle(capsule、cards、 dashboard):

node profile
- id: dsh-browser
name: file:///home/you/.orderzx/dsh-browser/lib/index.js
config:
engine:
provider: patchright

web/client profile — the dsh.client.inject manifest in package.json lists the host packages dsh-web injects alongside the bundle (react, dsh-client-*)
- id: dsh-browser-client
name: '@dsh-community/dsh-browser/client'

不是 plugins: [- path: …] — loader 没有 path 键,也没有包装器;一个形状错误的条目会静默地永不挂载。playwright-core 是运行时依赖(每个 provider 都需要它,包括 CDP attach);patchright —— 默认的 stealth 引擎 —— 是可选依赖,而 posture 端点会报告实际生效的 driver。配置键: Configuration。

| 症状 | 原因 | 修复 |
| 完全没有 capsule | client bundle 未挂载 | 在上方挂载 dsh-browser-client 条目;检查 DSH devtools 控制台中的 dsh-browser-client,并确认 dsh.client.inject 包已解析 |
| Capsule 停留在 spinning-up | 没有可用引擎 | 在 profile 目录中执行 npm i patchright,或设置 engine.provider: cdp + engine.cdpEndpoint,并自行以 --remote-debugging-port=9222 启动 Chrome |
| Capsule 正常,但面板从不打开 | 另一个插件占用了 dock | 面板会自动回退为 overlay —— 如果连它都缺失,请在对话中检查 browser_status,查看它卡在哪个阶段 |
| /panel 路由返回 501 | standalone bundle 未构建 | 在 checkout 中运行 npm run build:standalone(适用于 Node ≥ 20) |

Configuration

一切都是带默认值的 YAML;没有任何与安全相关的内容是工具参数。

| 键 | 默认值 | 含义 |
| engine.provider | patchright | patchright · cloakbrowser · cdp(attach 你自己的) |
| engine.humanize | true | 贝塞尔指针、抖动按键、诚实的 posture |
| frames.source | screenshot | screenshot · screencast · dom |
| frames.maxFps | 5 | 捕获节奏 = 检测面;仅在播放视频时收紧 boost |
| policy.approvalForSensitiveActions | true | 对敏感动词触发 harness 审批提示 |
| policy.allowEvaluate | false | 任意页面 JS 是配置门控,而非模型权利 |

Security posture

- 仅限 loopback 的路由、origin 围栏、带 TTL 和 scope 的 capability token。
- 捕获和 reel 为 0o600;cookie 值永不离开浏览器;输入文本永不进入 timeline;reel 在 default-src 'none' 后提供服务。
- Takeover 受单调保护;当你操作时,工具会以 pointer-owned 拒绝。
- 无遥测、无 phone-home、无账户 —— 在 src/routes.ts 中审计整个表面。

Demo & development

pnpm run demo # standalone HTML dashboard, no Chrome required
pnpm run build # server + client + standalone artifact
pnpm test # static suites

Smoke 套件会导入编译后的 lib/ —— 请先构建。Live 套件需要 --remote-debugging-port=9222 的 Chrome,或使用捆绑的 fixture。

Credits & license

Patterns 怀着感激借用自 dsh-android、browser-use、Stagehand 和 Patchright 研究。MIT —— 见 LICENSE。

Dual use — read this

自主浏览可能违反站点条款和当地法律。此插件默认 handoff-over-solving、metadata-over-values 和 honesty-over-stealth 是有原因的:在你拥有的系统上运行它,针对允许自动化的站点。
预览分享卡片长什么样 ↓canelaslorenzoenego-ai/Orderzx
分享 · DeepSeek Harness Hub
canelaslorenzoenego-ai/Orderzx

在对话中实时观看并接管智能体操作浏览器

这是你的仓库?认领条目

回到顶部