dsh-reef:一次安装,补齐浏览器、MCP 与代码托管集成

前言

在 DeepSeek Harness(DSH)里做智能体开发,常见需求会分散在好几类能力上:让 agent 能打开网页并操作表单、把本机会话暴露给外部 MCP 客户端、在 GitHub 或 GitLab 上自动评审 PR/MR,还要有一个地方集中查看模块状态。这些能力往往需要分别找插件或自己写集成脚本,配置项也散落在不同位置。

dsh-reef(维护者 huey1in)把上述能力打包成一个 DSH 插件 bundle:一次安装提供五个模块,共享同一套配置与面板。插件当前版本为 1.5.2,在 GitHub 上约 16 stars(MIT 许可证)。下面介绍它的定位、各模块能做什么,以及安装与典型用法。

这是什么

dsh-reef 是 DSH 的「全家桶」式工作流插件。设计原则是:能交给 agent 用 bash 完成的一次性操作(例如 GitHub 写操作用 gh CLI)就不在插件里重复实现;插件只负责 bash 做不到的常驻自动化与集成。

一次安装包含五个模块:

模块 作用 入口
原生面板 注入 DSH 界面右下角:模块状态、浏览器实时画面、GitHub 事件看板、五模块设置区 自动注入,无需配置
浏览器自动化 共享 Playwright 浏览器:多标签、多 profile、下载/上传、Cookie、表单回放 browser_* 工具(21 个)
MCP Server 把 DSH 会话与 agent 反向暴露给 MCP 客户端 http://127.0.0.1:3080/reef/mcp
GitHub 集成 4 个只读工具 + webhook 自动 PR 评审 + issue 自动修复闭环 github_* 工具 + webhook
GitLab 集成 3 个只读工具 + webhook 自动 MR 评审 gitlab_* 工具 + webhook

运行时唯一第三方依赖是 playwright-core,复用系统已安装的 Edge/Chrome,无需额外下载 Chromium;不依赖任何 @deepseek-ai 运行时包。要求 Node.js >= 22。

核心功能

原生嵌入面板

安装后自动注入 DSH 界面(基于官方 --dsw-alias-* 设计变量,自适应亮/暗主题)。右下角悬浮按钮打开面板,内容包括:

  • 状态行:浏览器开关/标签数/当前 URL、MCP 在线状态、GitHub webhook 状态与事件数
  • 实时画面:浏览器打开时显示缩略图,点击可放大;2 秒轮询更新,下方列出最近 50 条访问历史(按 profile 隔离)
  • GitHub 事件看板:最近 3 条 webhook 事件(时间、事件类型、仓库、编号、处理结果)
  • 设置区:五个模块的配置均可在面板内修改

浏览器自动化

给 agent 一个共享浏览器会话,默认 headless,channel: auto 会依次探测 msedge → chrome → chromium,也可通过 executablePath 指定可执行文件。

常用工具包括:

  • 导航与页面读取:browser_openbrowser_snapshot(文本/链接/输入框)、browser_elements(可交互元素 + CSS 选择器)
  • 交互:browser_clickbrowser_typebrowser_pressbrowser_eval
  • 标签与会话:browser_tabsbrowser_profile(多配置文件,登录态持久化)
  • 文件与表单:browser_downloadbrowser_uploadbrowser_form / browser_form_save / browser_forms
  • 其他:browser_screenshotbrowser_cookiesbrowser_waitbrowser_backbrowser_reload

browser_screenshot 保存的 PNG 会自动清理:每次截图后即时清扫,另每小时定时清扫;默认保留最近 7 天、最多 200 张(可通过 screenshotMaxAgeDays / screenshotMaxCount 调整,设为 0 关闭对应规则)。

首次调用浏览器工具时自动启动浏览器;启动失败会提示安装 Chromium(npx playwright install chromium)或配置 executablePath

MCP Server

把 DSH 变成 MCP 服务器,任何支持 Streamable HTTP 的 MCP 客户端均可接入:

{
  "mcpServers": {
    "dsh": { "url": "http://127.0.0.1:3080/reef/mcp" }
  }
}

提供 5 个工具:dsh_list_sessionsdsh_read_sessiondsh_search_sessionsdsh_run_agent(用默认模型跑一次性 agent,长任务流式输出)、dsh_agents_status

鉴权支持三种方式(可并存):面板内配置静态 Bearer token、通过 authTokenEnv 引用环境变量、或启用 OAuth 2.0 client_credentials(token 端点 /reef/mcp/oauth/token,发现端点 /.well-known/oauth-authorization-server)。

GitHub 集成

只读工具(公共仓库无需 token,匿名限额 60 次/小时;配置 GITHUB_TOKEN 后可访问私有仓库且无此限制):

工具 说明
github_repo 仓库元信息
github_issues issue 列表
github_pulls PR 列表
github_pr PR 详情(可带文件 diff)

写操作建议让 agent 用 gh CLI 或 curl + GITHUB_TOKEN 完成。

Webhook 自动 PR 评审:在仓库 Settings → Webhooks 添加 http://<机器>:3080/reef/github/webhook,Content type 选 application/json,Secret 与 GITHUB_WEBHOOK_SECRET 一致,事件勾选 Pull requests。PR 打开/更新时自动拉取 diff、调用评审模型、以 COMMENT 形式提交评审。同一 PR 同一 head commit 默认只评审一次(reviewDedupe)。

Issue 自动修复闭环:配置 autoFixRepos(仓库 → 本地路径映射)后,新 issue 可自动触发 agent 在本地仓库修复、建分支、跑测试、push 并开 PR。autoFixLabels 可限定只处理带特定标签的 issue。

GitLab 集成

只读工具(需要 GITLAB_TOKEN):gitlab_projectgitlab_issuesgitlab_mr_list。写操作用 glab CLI 或 curl + GITLAB_TOKEN

Webhook 自动 MR 评审:在仓库 Settings → Webhooks 添加 http://<机器>:3080/reef/gitlab/webhook,Secret Token 与 GITLAB_WEBHOOK_SECRET 一致,事件勾选 Merge Request。自建 GitLab 实例可通过 apiBase 修改 API 地址。

安装与启用

在 DSH 的 web profile 下执行:

dsh plugin --profile web add dsh-reef

重启 DSH 后生效。

不需要某个模块时,可在 $DSH_HOME/profiles/web/cordis.patch.yml 里删掉对应行(reef-browser / reef-mcp / reef-github / reef-gitlab / reef-console),或给对应行加 config: { enabled: false }

配置分三个层级:插件内置默认(cordis.patch.yml)→ 面板设置区(运行时,即时生效)→ 用户 profile 的 cordis.patch.yml(启动时覆盖)。凭据类配置优先写入 $DSH_HOME/.credentials.yaml;普通配置写入 $DSH_HOME/.dsh-reef/settings.json。路径类配置(如 liveViewPathwebhookPath、MCP path)改动后需重启 DSH。

典型用法

让 agent 读取并操作网页

agent 可先调用 browser_open 打开目标 URL,再用 browser_snapshot 获取页面文本与链接,用 browser_elements 拿到可交互元素的选择器,随后 browser_clickbrowser_type 完成操作。需要保留登录态时,配置 userDataDir 或使用 browser_profile 区分 work/personal 等会话。

把 DSH 会话暴露给外部 MCP 客户端

在 MCP 客户端配置中填入 http://127.0.0.1:3080/reef/mcp,按需设置 Bearer token 或 OAuth。外部工具即可通过 dsh_list_sessions 列出本机会话,用 dsh_run_agent 触发一次性 agent 任务。

配置 GitHub PR 自动评审

  1. 在面板或环境变量中设置 GITHUB_TOKENGITHUB_WEBHOOK_SECRET
  2. 在目标仓库添加 webhook,URL 指向 http://<你的机器>:3080/reef/github/webhook
  3. PR 打开或更新后,插件自动评审并在 PR 下留 COMMENT;可在面板 GitHub 行查看最近事件

配置 issue 自动修复

cordis.patch.yml 或面板设置区配置 autoFixRepos,例如:

autoFixRepos:
  "owner/repo": "/path/to/local/repo"

新 issue 触发后,agent 会在本地仓库建 fix/issue-N 分支、修复、测试、push 并自动开 PR。

适用场景与注意

适合谁:

  • 需要在 DSH agent 中稳定使用浏览器自动化,且希望多标签、多 profile、表单回放一次到位
  • 想把 DSH 会话反向接入 Claude Desktop、Cursor 等 MCP 客户端
  • 在 GitHub/GitLab 上希望 PR/MR 评审自动化,或 issue 触发本地修复闭环
  • 偏好在一个面板里查看浏览器画面、MCP 状态与 webhook 事件

注意事项:

  • 插件以当前 DSH 进程权限运行,安装前应检查 源码 与 MIT 许可证,确认凭据与 webhook 暴露范围符合你的安全要求
  • webhook 端点需从你的 GitHub/GitLab 实例能访问到运行 DSH 的机器(内网部署时注意 NAT/防火墙)
  • 浏览器模块依赖本机已安装的 Edge/Chrome 或 Playwright Chromium;GitHub 匿名 API 有速率限制,私有仓库需配置 token
  • 社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系

结尾

dsh-reef 把浏览器自动化、MCP 反向暴露、GitHub/GitLab 集成与原生面板收进一次安装,减少在多插件之间切换配置的成本。若你的工作流同时涉及网页操作、外部 MCP 接入和代码托管事件自动化,可以按上面的安装命令试用。

  • 社区目录页:https://www.skillhub.cn/plugins/huey1in/reef
  • GitHub 仓库:https://github.com/huey1in/reef
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜