dsh-rea-toggle:按对话开关 REA MCP 上下文

前言

在 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

典型用法

  1. 在需要逆向的对话里点开 pill 或执行 /rea on,照常使用 mcp__rea__* 工具。
  2. 切换到写文档、改 Web 的对话,保持 off 或执行 /rea off,避免每轮携带 207 个 schema。
  3. 用 /rea status 或 pill 颜色确认当前对话的状态;另开第二条对话验证:一条 on、一条 off 可同时存在。

README 给出的自检步骤(验证的是模型上下文里工具是否真的消失,而非仅 UI 隐藏):

  1. 开关 on 时让 agent 列出工具,应能看到 mcp__rea__*(标准 REA 安装约 207 个)。
  2. off 后再列或按名调用,工具应不存在,例如 unknown tool "mcp__rea__binary_session"。
  3. 再 on,工具恢复。
  4. 第二条对话默认 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 命令按会话切换。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye