前言¶
在 DeepSeek Harness(DSH)裏接 REA(Reverse Engineer Anything)時,常見做法是分別在各個客戶端註冊 MCP、單獨維護橋接目錄,配置散在多處。改引擎路徑或 provider 時,往往要在多個環境裏重複同一套變量。dsh-rea 是維護者 yin1895 發佈的工作流類 DSH 插件:安裝一次,通過 bundle 同時掛上 REA 的 MCP 服務器、漸進式披露橋接,以及在設置面板裏的 REA 配置頁;REA 的運行時配置集中到 <REA home>/config/rea.env.json 一份文件裏。
這是什麼¶
dsh-rea 面向已在或計劃在 DSH 上使用 REA 做逆向分析相關工作的開發者。插件在 Cordis 側掛載兩行:dsh-rea(宿主半側與配置頁)和 rea-mcp(REA MCP 服務器經包內橋接)。目標運行時爲 DSH 0.2.1-rc.3(README 標明已驗證環境爲 Windows x64)。REA 本體來自 morluto/rea(npm rea-agents);本插件負責 DSH 側的適配,倉庫見 GitHub yin1895/dsh-rea,社區目錄頁爲 skillhub.cn/plugins/yin1895/dsh-rea。DSH 社區插件目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
核心功能¶
統一 bundle 與配置¶
安裝插件後,cordis.patch.yml 會寫入 profile 的 bundle,無需在宿主層重複註冊 rea-mcp(README 提醒:$DSH_HOME/cordis.patch.yml 若再註冊會靜默覆蓋插件行)。REA 相關環境變量與開關由 config/rea.env.json 統一管理;配置頁保存前會留 .bak,寫入採用臨時文件加原子替換,並對每個變量單獨校驗。
設置面板(REA 配置頁)¶
瀏覽器半側通過 settings.section 提供 Web 配置頁,能力包括:
- 總覽:REA 版本、固定 Node、啓動器、配置文件路徑、工具目錄數量、可用 provider。
- 引擎表:對
GHIDRA_INSTALL_DIR、JAVA_HOME、REA_JADX_MCP_JAR、REA_APKTOOL_COMMAND、REA_ADB_PATH、REA_BROWSER_EXECUTABLE、REA_ILSPY_CMD_PATH等逐項顯示就緒狀態。 - 運行體檢:調用
rea doctor --format json,列出未通過項、分類與修復建議。 - 快速驗證:Node / REA / Apktool / adb / 託管樣本 / Ghidra headless / 原生反編譯器 / JDK 共 15 步。
- 編輯並保存:引擎路徑與
REA_LOG_LEVEL、REA_ANALYSIS_PROVIDER等;常駐工具(directTools) 可編輯每次請求都會披露的工具清單(上限 40)。 - 同步到系統:重新生成
config\rea.env.cmd併發布用戶級環境變量。 - 更新 REA:在
<REA home>執行npm install rea-agents@latest。 - 打開目錄:REA 主目錄、配置、日誌、樣本、引擎、工具、插件等快捷入口。
MCP 與漸進式披露橋接¶
bridge/index.mjs 提供漸進式披露 MCP 橋接:較小的 directTools 列表,以及 rea_catalog、rea_call。README 記錄在本機驗證場景下可達 229 個 REA 工具;橋接層與宿主半側分離,lib/core.js 爲無 Cordis 依賴的純邏輯(配置讀寫、doctor、引擎探測、更新、同步)。
傳輸與安全¶
瀏覽器半側僅做同源 fetch;宿主在 webServer 上註冊 /dsh-rea 前綴路由。因 webServer.register 本身無鑑權,每個請求需通過三道閘門:x-dsh-rea: 1 頭必須存在;若存在 Sec-Fetch-Site,須爲 same-origin 或 none;若存在 Origin,其 host 須等於 Host。POST 須爲 application/json,請求體上限 64 KiB。端點包括 GET /overview,以及 POST /doctor、/verify、/save、/sync、/update、/reveal。
啓動與故障行爲¶
插件設置 failOnStartupError: false:REA 異常時工具可能缺席、配置頁報錯,但 Harness 仍可啓動。README 說明非插件側的 REA 註冊已清除,REA 的 doctor 對其它客戶端會報告 missing,DSH 側由本插件承擔。
安裝與啓用¶
目標 DSH 版本爲 0.2.1-rc.3;package.json 中 dsh.compatibility 對該版本標記爲 compatible。安裝前請自行審閱 倉庫源碼 與 MIT 許可證;插件以當前 DSH 進程權限運行。
按 README 步驟,先將插件裝進 profile(會自動寫入 dependencies 與 dsh.profile.bundles):
# 1) 裝進 profile(會自動寫入 dependencies 與 dsh.profile.bundles)
dsh plugin --profile desktop add github:yin1895/dsh-rea
# 本地目錄安裝:dsh plugin --profile desktop add file:D:/REA-tool/plugin/dsh-rea
# 再確認 profiles\<name>\package.json 的 dsh.profile.bundles 裏有 "dsh-rea"
# 2) 重啓 DSH,打開 設置 → REA
從源碼修改後重新投放到 profile 時,README 要求複製而非 junction,可執行:
pwsh -File scripts/rea-deploy-plugin.ps1 -Profile @('desktop')
典型用法¶
安裝並重啓後,在 DSH 設置 → REA 打開配置頁,是日常入口。
- 在引擎表中核對 Ghidra、JDK、Apktool、adb 等路徑是否就緒;未就緒項按提示補全
rea.env.json或在頁內編輯保存。 - 運行運行體檢或快速驗證,根據
rea doctor或 15 步驗證結果修復環境。 - 按需調整 directTools 列表,控制每次對話默認披露的 REA 工具規模(上限 40);更多工具經
rea_catalog/rea_call漸進披露。 - 需要系統級環境變量時,使用同步到系統生成
rea.env.cmd併發布用戶級變量。 - 升級 REA 代理包時使用配置頁更新 REA(等價於在 REA home 執行
npm install rea-agents@latest)。
樣例配置文件可參考倉庫中的 config/rea.env.example.json。
適用場景與注意¶
適合誰:在 DSH 0.2.1-rc.3(尤其 README 已驗證的 Windows x64)上,希望用 REA 做逆向相關分析,且希望 MCP、橋接與配置 UI 一次裝齊、只維護一份 rea.env.json 的開發者。
設計與兼容約束(來自 README):
- 瀏覽器半側要求 bundle 以裸包名掛載;僅掛子路徑會導致
/plugins/dsh-rea/client.js404,設置頁空白。 lib/client.js爲提交好的手寫產物,安裝時不會構建;peerDependencies僅聲明@deepseek-ai/cordis,其餘爲 optional,避免兼容性預檢誤攔。- 不要在 profile 的
node_modules裏對插件使用 junction;pnpm install可能沿鏈接刪除目標目錄。
維護者提供的自檢命令(需本機 REA 配置的行爲測試在本地執行):
npm run check # 打包契約 21 項(不需要 DSH / REA)
npm run check:bridge # 橋接 MCP initialize 握手(不需要 REA)
npm test # 核心與路由 29 項(需要本機 REA 配置)
npm run test:http # 真實 http 服務器 19 項
npm run test:client # 瀏覽器半側 17 項
npm run smoke # 橋接 + 真實 REA 工具往返
pwsh -File scripts/rea-selftest.ps1 # 引擎端到端 10 步
結尾¶
dsh-rea 把 REA 在 DSH 上的 MCP 服務、漸進式披露橋接和設置頁收進同一個插件 bundle,並把配置收斂到 rea.env.json。若你在 Harness 裏集中管理 REA,可從社區目錄或 GitHub 獲取插件並按 profile 安裝後,在 設置 → REA 完成引擎配置與驗證。
- 目錄頁:https://www.skillhub.cn/plugins/yin1895/dsh-rea
- GitHub:https://github.com/yin1895/dsh-rea
- REA 本體:https://github.com/morluto/rea