deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Fisfzy/ego-browser
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
仓库:
github.com/Fisfzy/ego-browser(私有 · 内测)|版本历史见 CHANGELOG.md|详情页:dshfind
⚠️ 发布说明:本插件用于 DeepSeek Harness 生态,已在 dshfind 公开展示。仓库保持维护状态,不发布到 npm / 公共 registry;如需转载本仓库内容请注明出处,不要创建用于分发的公开 fork / 镜像。
把 CitroLabs/ego-lite(给 AI Agent 用的 Chromium)接入 DeepSeek Harness:以 *32 个结构化 `ego_` 工具驱动浏览器,并配一套实时观察前端口**——agent 后台操作网页时,你能像看直播一样看到它正在浏览的每个页面,还能直接操作它。
一点私藏的独特之处(self-observation):agent 用的就是这一个 Chromium——连它操作 DSH 自身(管理会话、任务看板、调设置)时,观察窗也实时显示、你能随时接手。不只是"看得见 agent 在网页上干活",连 agent 操作 DSH 界面本身都是全程可见、可掌控的。
开箱即用:插件包内置 ego 运行时(runtime/,MIT,见 THIRD_PARTY_NOTICES.md)——无需克隆官方仓库、无需手动构建,--no-sandbox wrapper 随包自带,root / Docker / 无显示器一键跑。
同样把 ego-lite 接进 DSH,市面上已有同类插件用它只做了 3 个工具——一个 run 脚本、一个 help 指南、一个 status 体检,浏览器仍是后台黑盒。ego-browser 走的是另一条路:把黑盒打开,并且一上来就把"看"和"控"的能力做到位。
| 能力 | ego-browser(本仓库) | 同类插件(Da1dr1em/dsh-ego-browser) |
|---|---|---|
| 结构化工具数 | 32 个,职责单一、可确定性调用 | 3 个(run/help/status) |
| 实时观察窗(SSE screencast 推流 + 标签条 + 历史抽屉) | ✅ 有 | ❌ 无 |
| 监控窗鼠标直接操作真实浏览器(点击/拖拽/滚动回传 CDP) | ✅ 有 | ❌ 无 |
| worker 单实例守卫 + 崩溃/重复自愈 | ✅ 有 | ❌ 无 |
下载捕获 ego_download / 人机验证检测 ego_captcha/ego_page_info |
✅ 有 | ❌ 无 |
平台自适应(Linux/macOS/Windows 自动探测 + root/无头/--no-sandbox 兜底) |
✅ 全平台 | 仅 Windows 预览宿主,需手动配 |
登录态落盘持久化 ego_auth_flush |
✅ 有 | ⚠️ 仅文档级说明 |
关键差异两条:
以上对比基于公开可见的可核实事实:本仓库代码(
bin/ego-cast-worker.mjs实时推流 + CDP 输入回传、lib/index.js32 个注册工具、lib/cast-server.jshost 桥接)与同类插件的源码/README。此文档不含对任何他人的贬低——我们只陈述自己多实现并验证了哪些能力。
相对 ego-lite 本体,我们多做了这些(都可对照本仓库代码核实):
| 能力 | 说明(对应代码) |
|---|---|
| 观察窗前端口 | ego-lite 本体是无头 CLI(只有 heredoc 脚本 + 文本输出);我们在其上加了 SSE 实时推流 + 标签条 + 历史抽屉 + 监控窗鼠标直操(bin/ego-cast-worker.mjs、lib/cast-server.js、lib/client.js),让"看"和"控"成为一等能力 |
| 开箱即用 + 跨平台自足 | resolveEgoEnv 自动探测 Chrome/Edge/Brave,内置 --no-sandbox wrapper,root / Docker / 无显示器免配置(lib/index.js);不必像官方那样先装一个 GUI 宿主 |
| 健壮性层 | 冷启动自动重试(只重试 CDP 瞬态,不吞真错)、worker 单实例守卫 + 崩溃自动重启、插件卸载 fire-and-forget 不阻塞宿主退出、前端帧缓存上限(withWarmupRetry / makeEnsureWorker / frameCache) |
| 运维型工具 | ego_doctor(环境体检)、ego_captcha(人机验证探测)、ego_auth_flush(登录落盘)、ego_http(浏览器上下文请求)等,是原生 CLI helper 没有的一层 |
| self-observation | agent 操作 DSH 自身界面时同样实时可见、可接手 |
我们不声称媲美官方 macOS App 的内核级快照或原生多窗口体验;本仓库解决的是"把同一套浏览器能力带进 DSH + Linux/WSL + 看得见"这件事。
通用浏览器不是为 agent 设计的,而 Web 上大量交互(登录态、验证码、动态渲染、表单、需真人会话的站点)只有真浏览器能面对——这正是 ego 系 "让 agent 用你已登录的浏览器,而不打扰你"(官网)的由来。
ego-browser 把它接进 DSH,并把最痛的一点——你看不见 agent 在干什么、也插不上手——用一套观察窗解决:
🌐 小球一点看直播;🟦 标签条切换/关闭;🕘 历史抽屉回看;🔍 缩放拖拽;🖱️ 监控窗直接接管真实浏览器。一句话:让 agent 在浏览器里干活,你在旁边既看得见、又随时能接手。
ego_script 每次运行超时 timeoutMs 真正生效;前端 frameCache/pageMeta 按标签清理 + 上限兜底,杜绝长会话内存增长;状态路径家目录回退改 os.homedir() 跨平台化;新增 .gitattributes 统一 LF 换行。lib/ 定为唯一源,build 改语法校验,杜绝"一构建全回归"。| 要求 | 说明 |
|---|---|
| Node ≥ 22 | harness 环境自带 |
| 任意 Chrome / Chromium / Brave / Edge | 自动发现,或 EGO_LINUX_CHROME 指定;root 下用自带 wrapper |
| DSH + dshx | 插件装载机制 |
| 带图形界面的 DSH Web(观察窗) | headless 会话仍可用 ego_* 工具,仅无观察窗 |
dshx install ego-browser <ego-browser.tgz> # tarball 或 git URL 均可
dshx list # 应显示:[on] ego-browser
可选配置(~/.dsh/config.yaml 该插件条目下):egoBin、defaultSpace、maxOutputBytes、graceMs。
无需宿主侧任何配置:resolveEgoEnv 自动探测 root / 无显示器并兜底。观察窗 host 路由(/api/ego/spaces 等)仅在有 HTTP server 时注册,headless 是安全 no-op。
ego_,完整索引见 ego_help)| 类别 | 工具 |
|---|---|
| 任务空间 | ego_space_open ego_space_close ego_status |
| 页面读取 | ego_snapshot(语义树) ego_page_info ego_read_element |
| 导航/等待 | ego_navigate(复用 tab) ego_wait ego_wait_for_selector ego_wait_for_url ego_wait_for_response |
| 交互 | ego_click ego_fill ego_hover ego_drag ego_select ego_check ego_key ego_scroll |
| 执行/调试 | ego_js(页面求值) ego_cdp(原始 CDP) ego_cli(任意 heredoc) ego_script(多步脚本) |
| 输出 | ego_screenshot ego_download ego_upload |
| 会话/安全 | ego_auth_flush(登录落盘) ego_captcha ego_dialog |
| 元工具 | ego_help ego_doctor ego_http |
右下角 🌐 常驻小球 → 点开:
× 关闭。登录态说明:多任务空间 Cookie 相互隔离,请在对应空间内登录。重启 DSH 后运行期登录态被清空(Chrome 运行期 Cookie 仅优雅关闭时落盘),需重登——扫码很快。
ctx.subprocess 用 ego-browser nodejs 喂给 stdin 运行,宿主经 CDP 驱动共享 Chromium。结果以 @@DSH_RESULT@@ 哨兵行解析。所有 ego_* 经进程内互斥锁串行化,错误统一归一。lib/client.js(前端)+ lib/cast-server.js(host 路由转发,懒启动、崩溃自动重启)+ bin/ego-cast-worker.mjs(attach 到 agent 正在用的浏览器,推实时帧)。worker 只读/见控,绝不动宿主环境。npm run build # node --check lib/*.js(lib/ 为唯一权威源,不复编译覆盖)
直接改
lib/(lib/index.js工具层、lib/client.js前端、bin/ego-cast-worker.mjsworker)。新工具在registerActionTools按t({...})加,并在ego_help索引补一条。
node_modules/ 仅含指向 DSH checkout 的符号链接(编译期类型解析);运行时由 harness 解析 @deepseek-ai/dsh-tools。
DOMSnapshot 重建语义树,非 macOS 内核级,复杂 iframe/画布场景可能降级。additionalProperties: true,客户端以实际返回值为准。插件本体 MIT。内置运行时嵌入 CitroLabs/ego-lite 的 MIT 代码(含 PR #234 的 Linux 移植)及一处本地代理补丁——详见 THIRD_PARTY_NOTICES.md。
同为 DeepSeek Harness 插件生态的作品,互相安利:
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。