REA Switch:在 DSH 裏一鍵開關 REA MCP 工具面

前言

在 DSH 裏掛上 REA 這類逆向工程 MCP server 時,常常會一次性暴露上百個工具。它們的 JSON Schema 會隨每次模型請求進入上下文,佔用可觀的 token 預算;而在不調試二進制的日常對話裏,這些工具往往用不上。

常見做法是臨時卸掉 server 或改 preset,但切換成本高,也不容易在界面上看到「這次對話到底省了多少上下文」。REA Switch 把「是否需要 REA」做成輸入框旁的本機開關:關閉後立刻在執行層攔截調用,並從 live agent 的工具列表與 MCP 相關提示詞中隱藏 REA,同時在 chip 上顯示隱藏工具數量與 token 估算。

下面介紹插件定位、能力與安裝啓用方式;事實以 GitHub 倉庫 README 爲準。社區目錄頁:yankess233/rea-switch。

這是什麼

REA Switch(包名 @local/rea-switch,當前版本 1.3.0)是由維護者 yankess233 發佈的 DSH 本地 composer 插件,分類爲 admin-security。它不改變 REA server 進程本身,而是在 DSH 側提供可見、可點的偏好:需要時一鍵開啓,不需要時一鍵關閉,並在關閉時處理執行攔截、schema 掩碼與提示詞 shadow 三層,減少模型看到無關工具與說明的機會。

宿主要求 DSH 0.2.2-rc.1(engines.dsh:>=0.2.1-rc.5 <0.3.0-0),Node.js >=24.9.0,默認面向名爲 rea 的 MCP server(名稱可配置)。許可證 MIT。

核心功能

輸入框 chip

插件在 conversation.input.left 註冊緊湊開關,位於權限/計劃 chip 旁。點擊即可切換,支持鍵盤焦點與 aria-pressed。chip 會反映讀取中、已開啓、已關閉、離線、部分隱藏、不可用等狀態,並在關閉且 mask 正常時展示隱藏工具數與約略 token 數(approxTokens = round(toolBytes / 4),僅爲估算)。

關閉時的三層處理

  1. 執行層 guard:全局 tools.guard 在關閉時攔截 mcp__<server>__*,以及對應該 server 的 list_mcp_resources、list_mcp_resource_templates、read_mcp_resource;參數不明時保守攔截。
  2. 按 agent mask:通過 tools.restrict({ deny }) 從每個 live agent 的可見 schema 中移除繼承的 REA 工具名。
  3. 提示詞 shadow:用空的 mcp:<server> section 遮蔽 server 描述;重寫 mcp-resource-servers 列表並保留其他 server;追加關閉提示。

若 agent 自行 scope 註冊的工具落在 host mask 覆蓋範圍外,插件會檢測並將 mode 標爲 partial,不謊報「全部隱藏」;執行層 guard 仍按當前開關值攔截。

狀態持久化與本機 API

默認狀態文件爲 <DSH_HOME>/rea-switch.state.json,原子寫入;文件不存在時首次運行默認開啓。損壞、不可讀、版本不符、符號鏈接、超大文件等異常按關閉處理。

僅在 Web 服務綁定 loopback 時註冊控制路由前綴 /dsh-local/rea-switch:GET /state 讀取快照,POST /set 接受 {"enabled": true|false}(JSON,請求體上限 1024 字節)。同源與 Host 校驗、拒絕常見代理頭等防護見 README「安全模型」。

語言

界面以中文爲主,英文按頁面/瀏覽器語言回退。

安裝與啓用

資料中的安裝方式爲在 DSH profile 裏以本地包依賴接入,而非單獨的 dsh plugin add 命令。前置條件:DSH 0.2.2-rc.1、Node >=24.9.0、已配置的 REA MCP server(默認註冊名 rea),插件源碼位於 <WORKSPACE>/plugins/rea-switch。

在 profile 的 package.json 中加入:

{
  "dependencies": {
    "@local/rea-switch": "link:<WORKSPACE>/plugins/rea-switch"
  }
}

在 profile 目錄執行:

pnpm install

工作區路徑移動或重命名後需重新安裝。

方式二:tarball

在插件目錄打包:

cd <WORKSPACE>/plugins/rea-switch
pnpm pack

將生成的 tarball 寫入 profile 依賴後同樣 pnpm install:

{
  "dependencies": {
    "@local/rea-switch": "file:C:/path/to/local-rea-switch-1.3.0.tgz"
  }
}

插入 Cordis 補丁

通過 cordis.patch.yml 啓用:

- insert:
    - id: rea-switch
      name: '@local/rea-switch'

自定義 MCP server 名稱或狀態文件路徑時:

- insert:
    - id: rea-switch
      name: '@local/rea-switch'
      config:
        serverName: rea
        stateFile: C:/path/to/rea-switch.state.json

保存配置後重新加載 DSH profile 或重啓 DSH,並刷新 Web 頁面。chip 出現在已有會話輸入框左側;新會話 Hero 空態可能暫時無 chip,進入已有對話即可看到。

驗證控制接口(將 <PORT> 換爲當前 DSH Web 端口):

curl.exe -s http://127.0.0.1:<PORT>/dsh-local/rea-switch/state

典型用法

點擊 chip 即在開啓/關閉之間切換。開啓時顯示綠點與「開」;關閉時顯示空心點與「關」,並給出隱藏工具數量與 token 估算文案(具體數值取決於當前註冊表中的 REA schema 投影)。

切換過程中按鈕進入 busy/pending,關閉完成前不顯示「全部隱藏」的終態文案。若出現「部分工具仍可見」類 degraded 提示,執行層 guard 仍會攔截 REA 相關調用;partial 與 guard 表示 mask 未完全到位,不代表開關失效。

需要腳本或自動化時,可在同一臺機器、loopback 綁定前提下調用上述 HTTP API;請勿將 DSH Web 暴露到非 loopback 而不在代理層攔截 /dsh-local/rea-switch。

適用場景與注意

適合誰:經常在 DSH 裏掛載 REA、又希望在非逆向調試對話中節省上下文 token 的開發者;需要在界面上直觀看到 REA 工具面開閉狀態與估算成本時。

安全邊界(必讀):README 明確說明 REA Switch 是本機偏好開關,不是訪問控制或權限邊界。關閉它不會停止 MCP server 進程,也不阻止本機其他進程直接訪問該 server;帶 shell 的 preset 等路徑仍可能旁路 DSH 工具調度器。硬隔離應在 preset、OS、網絡或 MCP 配置層處理。反向代理暴露 DSH Web 時須在代理層攔截控制路徑並啓用認證。

安裝前:插件以當前 DSH 進程權限運行,安裝前應閱讀倉庫源碼、LICENSE 與 SECURITY.md,確認與你的工作區與合規要求一致。DeepSeek Harness 生態強調「一切皆插件」;SkillHub 目錄 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

REA Switch 把「這次對話要不要 REA」收斂成輸入框旁的一鍵偏好,並在關閉時同步處理攔截、schema 掩碼與提示詞 shadow,輔以 chip 上的工具數與 token 估算。若你已在 profile 中維護本地插件依賴,按上文 link 或 tarball 方式接入並配置 cordis.patch.yml 即可試用。

  • 目錄頁:https://www.skillhub.cn/plugins/yankess233/rea-switch
  • 源碼與文檔:https://github.com/yankess233/rea-switch
羽毛球分组比赛记分
小程序二维码

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

小夜