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
羽毛球分组比赛记分
小程序二维码

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

小夜