dsh-tool-fold:把多余工具折叠成按需查询

前言

在 DeepSeek Harness(DSH)里装插件、连 MCP 之后,会话里可见的工具会越来越多。每条工具都带着描述和参数 schema,占用的上下文可以涨到几十上百条;若还配合 dsh-context 等插件关注工具定义体积,单轮吃掉大量 token 并不罕见。常见做法是少装、少注册,但那样又牺牲能力。dsh-tool-fold 走另一条路:从模型可见的工具面里摘掉一批(尤其不常用的),只留一个薄薄的查询工具,需要时再展开直调,或交给聚合组由宿主代执行。

这是什么

dsh-tool-fold 由社区维护者 Sodapopper-pixel 发布,分类为工作流。一句话定位:把一批已注册工具折叠成一个查询工具——模型需要时才展开,或通过聚合组间接调用。折叠按代理预设生效,同一批工具可以只在某个预设的会话里从列表中消失。

仓库:https://github.com/Sodapopper-pixel/dsh-tool-fold
社区目录页:https://www.skillhub.cn/plugins/Sodapopper-pixel/dsh-tool-fold

两种组怎么选

插件区分两种组,模型看到的界面和用法不同:

类型 模型看到什么 模型怎么用那些工具
折叠组 一个查询工具,op 可取 list/find、expand、retract expand 后工具回到工具列表,下一轮直接调用;retract 收回
聚合组 一个查询工具,op 可取 find、call 从不展开;call 由宿主代执行,走完整的审批与 guard 管道

折叠组是「临时放出来」:展开只影响当前会话,重启 Host 后回到全折叠。聚合组是「永久代理」:原工具始终不可见,模型只能通过 call 间接使用,适合只希望在被明确指令下调用、不希望常驻工具列表的工具。README 中以 openviking MCP 为例:只留常用的 read,其余折叠进聚合工具。

安装与启用

需要 DeepSeek Harness 0.2.1-rc.2 或更高(Cordis 4.x)。设置页仅在 Web 界面提供。

dsh plugin --profile web add github:Sodapopper-pixel/dsh-tool-fold

装完后重启一次 Host(Host 侧插件,装载发生在启动时),再打开 设置 → 工具折叠。

当前 package 版本为 0.1.0,许可证 MIT。插件以当前 dsh 进程权限运行;安装前建议自行查看仓库源码与 LICENSE。

配置步骤

在设置页中按顺序操作:

  1. 新增折叠组或聚合组
  2. 填写查询工具名
  3. 选择查询形态(列举工具名 / 概括加搜索)
  4. 勾选生效的代理预设
  5. 勾选要折叠的工具
  6. 保存

配置写入 ~/.dsh/tool-fold/config.json(遵循环境变量 DSH_HOME),由页面写入;Host 校验通过才落盘,采用临时文件加重命名,避免留下半截文件。

约束要点:

  • 一个工具最多绑一个组;折叠组与聚合组互斥;已绑到别处的工具在选择列表里置灰。
  • 查询工具名与任何已注册工具重名时保存会被拒并标红——同名会遮蔽原工具。
  • 改动保存后对新会话生效;已打开的会话需另开新会话才会带上折叠。

行为细节(使用时要知道的)

按预设生效:组只对勾选的预设生效,依据宿主报给会话的预设 id;未勾预设的组不生效。

折叠与展开:折叠通过宿主作用域级工具限制(ctx.tools.restrict)实现,模型看不到也无法调用被折叠的工具;展开即撤销限制。插件自己的查询工具不受该限制影响。

晚注册与缺失:绑定工具在会话创建时还不存在(MCP 未连上、插件后注册)会先跳过并在页面上标出;宿主工具表变化后,新出现的绑定工具会被补上折叠。

聚合组代执行:call 经宿主工具执行入口转发,parent 带上当前调用令牌,参数校验、审批、guard、结果渲染与模型直调一致。被代理工具在会话里始终折叠,仅在转发期间临时放开,结束后立刻收回。

卸载即还原:限制挂在会话作用域上;卸载或热重载插件会撤销全部折叠并注销查询工具,不会留下「看不见也调不动」的工具。

已知边界

  • 设置里的「闲置若干轮后自动收回」可勾选、阈值可调,但插件尚未接入可订阅的轮次边界,目前不改变行为。
  • 工具目录依赖装配回调:预设作用域里的工具要等会话装配过一次才进目录;还没有的工具可手动输入名字绑定。
  • 可折叠名单依赖宿主校错文案中的一句 known global tools:;宿主改掉该文案时折叠可能失效,插件会写 warn 日志,页面上不一定可见。
  • 来源徽标为推断(内置靠名字表,插件靠扫描已安装包入口);压缩或动态拼名的包可能显示为「内置或插件工具」。
  • 折叠只影响工具可见性,不减少会话日志。

更细的术语与实现见仓库内 CONTEXT.md、docs/design.md。

适用场景

适合:工具/MCP 装得多、上下文被 tool schema 撑大、又希望按预设区分「极简会话」与「全量会话」的 DSH 用户。折叠组适合偶尔要直调、愿意 expand 后再用的工具;聚合组适合低频、需审批链完整、又不想占常驻列表的工具。

不适合指望「装完立刻少写日志」或「闲置自动收回已生效」——后者以 README 明确说明尚未接上为准。

结尾

dsh-tool-fold 把 progressive disclosure 落到 DSH 工具面:少占模型可见列表,按需 list/find、展开或 proxy。DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

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

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

小夜