前言¶
在 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。
配置步骤¶
在设置页中按顺序操作:
- 新增折叠组或聚合组
- 填写查询工具名
- 选择查询形态(列举工具名 / 概括加搜索)
- 勾选生效的代理预设
- 勾选要折叠的工具
- 保存
配置写入 ~/.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 / 幻方无官方从属关系。