前言¶
在 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),僅爲估算)。
關閉時的三層處理¶
- 執行層 guard:全局
tools.guard在關閉時攔截mcp__<server>__*,以及對應該 server 的list_mcp_resources、list_mcp_resource_templates、read_mcp_resource;參數不明時保守攔截。 - 按 agent mask:通過
tools.restrict({ deny })從每個 live agent 的可見 schema 中移除繼承的 REA 工具名。 - 提示詞 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。
方式一:link(開發工作區)¶
在 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