dsh-loadout: Conversation-Aware Tool Trimming, Delivering Only the Current Suite to the Model

前言

DeepSeek Harness(DSH)里,插件装得越多,每个对话能看到的工具清单就越长。工具定义会占进请求前缀,模型在一长串名字里也容易选错。常见做法是少装插件、或靠习惯手动克制——但全局可见这一点本身没有变。

装备栏(dsh-loadout)把工具收成「套装」:一个对话选一套,运行时只保留这套里的内置工具与插件工具;其余用遮罩藏起来,不删插件本身。下面介绍它做什么、怎么装、怎么用,以及切换套装和 token 估算时要注意的事。

这是什么

dsh-loadout(装备栏)是维护者 JungleYXu 发布的 DSH 插件,npm 包名与插件 id 均为 dsh-loadout,许可证 MIT。社区目录页:skillhub.cn/plugins/JungleYXu/dsh-loadout;源码与文档:github.com/JungleYXu/dsh-loadout。

同名说明:npm 上的 dsh-loadout 是本插件唯一发行包;GitHub 上另有 YongjianWan/dsh-loadout、JYDW-1/dsh-loadout 等同名独立项目,作者与功能不同。用 dsh plugin add dsh-loadout 装到的是本插件;从 GitHub 安装时请认准 JungleYXu/dsh-loadout。

插件只控制「当前对话模型能看到哪些工具」。已启用的插件仍在后台运行;界面类插件(侧边栏、主题等)不受套装裁剪影响。

核心功能

三档底座

底座 含义
全部 不裁剪,默认行为
仅内置 只保留 DSH 自带工具
我的套装 使用你保存的或预置的命名套装

套装管理

  • 我的套装:在「新建套装」里勾选内置工具与插件,存成带名字的一套;卡片上可设为默认、复制切换命令、编辑(覆盖保存或另存为新套)、加 20 字备注、删除。
  • 预置五套(只读):仅聊天、编程用、查找资料、项目梳理、写作;套用即可,改动会另存为你的套装。预置只列内置工具,插件工具需靠「加挂」或另存时勾选。
  • 加挂:在当前底座或套装之上临时加开插件,不必为一次性组合新建套装。
  • 每对话独立:每个对话的选择写入 ~/.dsh/loadout.json 的 assignments,重启后照旧;改「新对话默认套装」只影响之后新建的对话。

预置套装与 /kit 子命令

套装 子命令 id 内置工具(摘要)
仅聊天 chat ask_user_question、weather、web_search、web_fetch、read + 协作五件套
编程用 coding pwsh、read、write、edit、glob、grep、todo_write + 协作五件套
查找资料 research 搜索/研究类工具 + read、write、glob、grep + 协作五件套
项目梳理 plan 问答、搜索、读写改查、todo_write + 协作五件套
写作 writing read、write、edit、glob、grep + 协作五件套

「协作五件套」指 send_message、list_agents、interrupt_agent、subagent、subagent_fork;每套预置都带上,否则子代理切到该套后无法回话。

对话内可用 /kit <名字> 切换;模型侧还保留 kit_list、kit_apply、kit_assign、kit_rename、kit_create 等管理工具,任意套装下都不会被裁掉,避免锁死。

token 账本(估算)

菜单状态行会显示类似「省 ~1.9k tokens」;设置页给出「保留 N 个工具 · 约 X tokens · 省多少」。算法把每个工具的定义序列化后按约 3.5 字符/token 估算,只算工具清单段,界面标明为估算,不宜当精确账单。

刷新

对话页装备栏菜单右上角 ⟳ 可重拉工具目录并重新套用当前选择(对已加载的宿主有效,不必为此重启)。

安装与启用

三种来源安装的是同一个包;资料中的命令如下。

# 1) npm(已发布,最短)
dsh plugin --profile desktop add dsh-loadout

# 2) GitHub(npm 不可达时用同一个包)
dsh plugin --profile desktop add github:JungleYXu/dsh-loadout

# 3) 本地目录(开发用,链接安装,不拷贝)
dsh plugin --profile desktop add link:<本目录绝对路径>

在 Harness 内也可让插件管理器安装本地目录(等价于第 3 种):

plugin_manager action=install_bundle target=<本目录绝对路径>

装完后需重启应用:宿主插件没有热重载,仅刷新界面不够。文档建议优先链接安装而非拷贝,避免 profile 内副本与源码漂移;开发自检可运行 node scripts/preflight.mjs。

插件以当前 DSH 进程的权限运行;安装前请自行查看仓库源码与 MIT 许可证,确认符合你的环境策略。要求 Node >=20(见 package.json engines)。

典型用法

  1. 标题栏:点「装备栏」切换底座、加挂插件、新建套装。
  2. 设置 → 装备栏:管理套装、改备注、设「新对话默认套装」(不切换当前已开对话)。
  3. 新对话:在发出第一条消息前,输入区旁有「选择对话套装」胶囊;此处切换不产生缓存前缀代价,是文档推荐的最省切换点。
  4. 命令行式切换:在对话里发送 /kit coding 等(名字对应套装或预置 id)。

持久化示例(节选):

{ "assignments": { "session-abc": "coding", "session-def": null } }

null 表示「全部」。显式切换(标题栏、/kit、kit_apply、kit_assign)才会改绑定;子代理不单独记绑定,跟随父对话可见工具集。

卸载:

plugin_manager action=remove_bundle target=dsh-loadout

适用场景与注意

适合谁:经常同时装多个 DSH 工具/插件、希望按任务(聊天、写代码、查资料、写作)收窄工具面,并愿意在新建对话时选好套装的 Harness 用户。

切换代价:请求前缀顺序为系统提示 → 工具定义 → 历史 → 本轮输入;工具定义一变,其后历史在下一条请求可能按未命中价重算。文档建议长对话尽量开场选好套装;中途切换在上下文很大时成本明显,空闲、刚压缩或刚重启后切换则影响较小。菜单底部会用宿主 token meter 投影给出「下一条未命中价」提示(按 ¥2 / ¥0.5 每百万 token 估算,仅提示)。

边界:

  • 看不到「已下载但未启动」插件的工具;工具需在插件 apply() 之后才存在。
  • 遮罩是减法:内置工具用 deny 规则,插件工具用 tools.restrict({ deny })。
  • 新装或删掉 loadout.json 后默认底座为「全部」;覆盖安装会保留已选的默认套装。

排查要点:界面无按钮时先重启;GET /dsh-loadout/state 返回 JSON 表示宿主在跑。若怀疑装错同名包,检查 node_modules/dsh-loadout/package.json 的 repository.url 是否为 github.com/JungleYXu/dsh-loadout。

结尾

装备栏解决的是 DSH「工具全局可见、清单随插件变长」的问题:用套装做 per-conversation 裁剪,并配合设置页、标题栏与新对话胶囊分工管理默认与当前对话。社区目录与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系。

  • 目录页:https://www.skillhub.cn/plugins/JungleYXu/dsh-loadout
  • GitHub:https://github.com/JungleYXu/dsh-loadout
羽毛球分组比赛记分
小程序二维码

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

Xiaoye