前言¶
在 DeepSeek Harness(DSH)里接入 REA(reverse-engineer-anything)这类 MCP 服务器时,dsh-mcp-client 会把工具 schema 和 server-instructions 挂在全局层。REA 一次注册 207 个工具 schema,外加体积不小的说明块;只要 profile 里装着 REA,每个 agent、每一轮请求都会背着这份上下文,哪怕当前对话只是在改前端或写文档,与逆向无关。
aurumple/dsh-rea-toggle 做的是另一件事:不卸载 MCP、不重启进程,只在当前对话里决定 REA 的工具与说明是否进入模型可见的上下文。下面介绍它是什么、怎么装、怎么用,以及使用时要注意的边界。
这是什么¶
- 名称:
dsh-rea-toggle(bundle 行 id 为rea-toggle) - 维护者:aurumple
- 仓库:github.com/aurumple/dsh-rea-toggle
- 许可:MIT(
package.json中版本为 1.1.0,运行需 Node>=20)
一句话:每个对话一个开关,控制 REA MCP 的 207 个工具 schema 与 mcp:rea 说明块是否出现在模型上下文中;关掉时 MCP 连接仍在,只是模型不再被告知这些工具存在。
核心功能¶
按对话记忆,新对话默认关闭¶
开关状态按对话(session)保存,互不干扰。新建对话默认 REA off;只有你主动打开过的对话会写入状态。子 agent 继承创建它的那条对话上的位置,在逆向任务里委派子 agent 不会因为全局关 REA 而悄悄失效。
两种关闭路径(token 从哪省)¶
README 把成本拆成两条路径,插件分别处理:
| 目标 | 机制(摘要) |
|---|---|
| 工具 schema | 在各 agent 自己的上下文里调用 tools.restrict({ deny });ToolRuntime.view() 过滤从全局层继承的内容,每次组装时重建模型可见的 schema 列表。 |
| 说明文本 | dsh-mcp-client 把 server instructions 注册为 order MCP_SERVERS(3100)下的 mcp:<server> 段;同名 scoped section 会遮蔽全局段,空段在渲染时丢弃,从而只对该 agent 去掉说明块。 |
两者都是 scoped 注册,dispose 后恢复原状,因此切换开关不需要重启或重载。
界面与斜杠命令¶
安装后,输入框下方会出现一个小药丸(pill):
- REA on(绿色):与未装插件前一致,REA 工具与说明对模型可见。
- REA off(灰色):上述 schema 与说明在下一步起离开模型上下文。
- 红边:表示 host 未响应(无法确认状态)。
同一套逻辑可用键盘命令(作用于你输入命令的那条对话):
/rea off、/rea on(enable/disable亦可)/rea toggle/rea status
状态持久化¶
位置写在 $DSH_HOME/rea-toggle.json(一般为 ~/.dsh/rea-toggle.json),按 session id 索引,重启后仍有效。文件保留最近变更的 500 条对话;更老的 session 回退到默认策略。
可配置为通用 MCP 开关¶
默认治理名为 rea 的服务器(工具前缀 mcp__rea__,说明段 mcp:rea)。配置里可改 server 或 servers 列表,对任意由 dsh-mcp-client 桥接的 MCP 按同样规则生效;defaultEnabled: true 时,从未被手动切换的对话与未安装插件时一致(新对话默认 on)。
HTTP API(供 UI / 集成)¶
Client 通过 webServer 上固定路由与 Host 通信(不经 /api 前缀)。要点:
GET /rea-toggle/state?session=<id>:单对话状态GET /rea-toggle/state:无 session 时的摘要POST /rea-toggle/state,body 含session与可选enabled(省略则翻转)
响应中的 tools 表示被治理服务器下识别到的工具数量;若为 0,通常表示该名称下未连接 MCP。
安装与启用¶
插件以当前 DSH 进程权限运行,安装前建议阅读仓库源码与 LICENSE。安装命令以 README 为准:
dsh plugin --profile <profile> add github:aurumple/dsh-rea-toggle
本地 checkout 可指向路径:
dsh plugin --profile <profile> add link:/absolute/path/to/dsh-rea-toggle
可选配置(字段均可省略),写在 profile 对应 bundle 的 config 下:
- id: rea-toggle
name: dsh-rea-toggle
config:
server: rea # 默认 "rea"
# servers: [rea, ghidra] # 存在时优先于 server
# defaultEnabled: true # 新对话默认 on
典型用法¶
- 在需要逆向的对话里点开 pill 或执行
/rea on,照常使用mcp__rea__*工具。 - 切换到写文档、改 Web 的对话,保持 off 或执行
/rea off,避免每轮携带 207 个 schema。 - 用
/rea status或 pill 颜色确认当前对话的状态;另开第二条对话验证:一条 on、一条 off 可同时存在。
README 给出的自检步骤(验证的是模型上下文里工具是否真的消失,而非仅 UI 隐藏):
- 开关 on 时让 agent 列出工具,应能看到
mcp__rea__*(标准 REA 安装约 207 个)。 - off 后再列或按名调用,工具应不存在,例如
unknown tool "mcp__rea__binary_session"。 - 再 on,工具恢复。
- 第二条对话默认 off,第一条仍 on。
适用场景与注意¶
适合谁:profile 长期挂着 REA,但只有部分对话做逆向;希望按对话省 token,又不想频繁卸 MCP 或改全局配置的团队或个人。
边界(README Scope and limits):
- 默认只治理配置里列出的 MCP 服务器,其它不动。
- 隐藏而非卸载:MCP 进程仍在;关 off 时模型不能间接通过
run_code等路径摸到 REA,这是刻意设计。 - 状态按进程内读写;同一 profile 下多个 DSH 实例各读一次文件,不会彼此实时同步。
- 关掉可一键恢复;卸载 bundle 会移除全部注册。
社区目录 skillhub.cn 上的条目 与 GitHub 仓库同源,便于检索;目录站为社区生态站点,与 DeepSeek / 幻方无官方从属关系。DSH 本身奉行「一切皆插件」,这类开关是对 MCP 全局上下文成本的一种补充手段,而不是官方应用商店里的预装能力。
结尾¶
dsh-rea-toggle 把 REA 的大块 MCP 上下文从「全局常开」改成「按对话按需可见」,安装简单、切换无需重启。若你已在用 REA,又常被无关对话拖累上下文,可以在 profile 里加上这个 bundle,用 pill 或 /rea 命令按会话切换。