dsh-mcp-lazy

DSH PLUGIN浏览器与联网

仓库 liuhange789/dsh-mcp-lazy · npm @liuhange/dsh-mcp-lazy

浏览器与联网 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

DSH plugin 按需加载 MCP 工具:只把 coreTools 白名单留在上下文,其余工具定义从会话中移除,需要时用 lazy_load_tool 现场装载,显著缩减每轮请求前缀。

一句话选型结论

按资料字段整理

dsh-mcp-lazy 是浏览器与联网类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,列出 5 项功能,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类浏览器与联网 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-11-10 创建于 2026-11-10
README 8.0 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add @liuhange/dsh-mcp-lazy@1.0.1
  1. 1
    确认版本与运行环境

    兼容的 DSH 版本为 0.2.2-rc.1;版本不匹配时安装会报错。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本0.2.2-rc.1版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名@liuhange/dsh-mcp-lazy可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-mcp-lazy:为 DeepSeek Harness 按需装载 MCP 工具的 DSH plugin

  • 白名单常驻核心 MCP 工具
  • 其余工具定义动态移除
  • lazy_load_tool 按需装载
  • 拦截未加载工具调用
  • 大幅缩减上下文 token

适用场景

智能体编排

上游标签

context-optimizationdshdsh-pluginlazy-loadingmcptypescript

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-11-11): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
  • L4.4_RESOLVED_ARTIFACT 安装版本已解析 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 结论说明 静态扫描 低;动态审计无结论(以下以静态为准)→ 总评级 低。
  • 风险计数 严重 0 / 高 0

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 标注了兼容的 DSH 版本(0.2.2-rc.1),按版本装不容易报错。
  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在浏览器与联网场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-mcp-lazy当前 L5 · 运行验证通过 低风险 0 0.2.2-rc.1 有
dsh-our-free-model L3 · 安装规范通过 低风险 8,796 未标注 有
dsh-web L3 · 安装规范通过 低风险 8,549 未标注 无
BrowserSkill L4 · 沙盒安装通过 低风险 8,456 未标注 有
dsh-pocket L5 · 运行验证通过 低风险 1,656 0.2.0-rc.2 等 12 个 有
Browser4 L4 · 沙盒安装通过 中风险 1,152 未标注 有

仓库档案

浏览器与联网
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方liuhange789仓库 dsh-mcp-lazy · 默认分支 main
分类浏览器与联网network
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言TypeScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-11-10 · 2026-11-10最后推送 2026-11-10
本站收录2026-11-11首次进入本站目录的时间

README 全文

8.0 KB
作者原文,中文版优先;只做安全转义,不改内容

@liuhange/dsh-mcp-lazy

MCP 工具的按需加载:默认只把 coreTools 白名单里的几个 MCP 工具放进上下文,其余工具的定义从本会话的工具集里真正移除,模型需要时调用 lazy_load_tool 现场装载。

它不做“MCP 管理”(配置、启停、热加载),只做一件事:给每次请求的前缀瘦身。


它解决什么

DSH 的 MCP 客户端会把每个远端工具注册成 mcp____,这些定义每轮请求都会随工具列表一起发给模型。

  • 配 5 个 MCP server、每个 10 个工具 → 50 份 schema 常驻;
  • 一次会话里通常只用 2~3 个。

dsh-mcp-lazy 让另外 47 个不进上下文,用到哪个装哪个。

常规 装上本插件
每轮工具定义 全部 MCP 工具 coreTools + 已激活工具
模型如何知道还有别的工具 看 schema 看 prompt 里的一行名字清单
用到新工具 直接调用 先 lazy_load_tool,再调用

安装

MCP 工具必须存在,插件只负责“摘”和“装”,不创建工具。

在 DSH profile(例如 $DSH_HOME/profiles/web)里:

{
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"@liuhange/dsh-mcp-lazy"
]
}
},
"dependencies": {
"@liuhange/dsh-mcp-lazy": "^1.0.0"
}
}

然后在 profile 目录执行 npm install。插件自带的 cordis.patch.yml 会把自己插入装配树,不需要你改 cordis.yml。


配置

两个来源,优先级从高到低:

  1. cordis 条目上的 config(profile 的 cordis.yml / cordis.patch.yml):
- id: "@liuhange/dsh-mcp-lazy"
name: "@liuhange/dsh-mcp-lazy"
config:
coreTools:
- mcp__filesystem__read_file
- mcp__github__get_issue
  1. $DSH_HOME/dsh-mcp-lazy.json(DSH_HOME 未设置时是 ~/.dsh);不想动 yml 就写这个文件:
{
"coreTools": ["mcp__filesystem__read_file"],
"enabled": true,
"announceHiddenTools": true
}
字段 类型 默认 说明
coreTools string[] [] 常驻的 MCP 工具名,最多 5 个,超出的会被丢弃并告警
enabled boolean true false 时插件完全不介入
announceHiddenTools boolean true 是否在 systemPrompt 里追加一行“未加载工具名”

编号规则:coreTools 为空表示所有 MCP 工具都按需加载。非 mcp__ 开头的名字会被忽略并告警 —— 内置工具本来就不受本插件影响。


实际走的路径:动态移除,不是提示词降级

这是本插件最需要说清楚的一点:

ctx.tools 支持运行时修改工具列表,所以走的是真正的移除,没有使用 systemPrompt 降级方案。

依据(对照 DSH core 源码 + 真实运行时验证,见 VERIFICATION.md):

  • ctx.tools.restrict({ deny }) 可以在运行时收窄某个会话可见的工具集,并且必须在会话作用域上调用 —— 也就是 agent.ctx.get('tools').restrict(...)。从插件的全局 Context 调用会被注册表拒绝,因为那等于遮蔽所有会话。
  • systemPrompt 的工具区由 tools.schemas(scope) 投影而来,限制一生效,下一轮请求的工具定义就真的少了这些工具。
  • 限制返回 disposer,会话作用域销毁时自动解除;插件同时显式收尾。

唯一保留的提示是只有名字的那一行:

> MCP tools available on demand (schemas intentionally left out to save context): mcp__github__create_issue, ... Call lazy_load_tool with the exact toolName before using one.

原因很实际:schema 拿掉之后,模型没有任何途径知道工具叫什么,lazy_load_tool 就成了猜谜。名字清单通常一两百个字符,而对应 schema 是几千 token,这笔买卖仍然划算。用 announceHiddenTools: false 可以关掉它(代价是模型只能从报错里拿到名字)。


lazy_load_tool

调用一次,把工具装进当前会话,之后一直可用,直到会话结束。

{ "toolName": "mcp__github__create_issue" }

返回结构化结果,不会抛异常:

status ok 含义
activated true 装载成功,下一轮请求它的定义就回来了
already-active true 本会话已经装过,幂等
already-core true 在 coreTools 里,本来就不用装
unknown-tool false 没有这个 MCP 工具,availableTools 给出可选名字
not-mcp-tool false 不是 MCP 工具,无需装载
no-session false 调用没有携带会话,无法追踪激活
invalid-request false toolName 为空

拦截行为

tools/pre-execute 上有一道闸门:未加载的 MCP 工具调用会被拒绝,返回的错误会直接告诉模型下一步该干什么:

MCP tool "mcp__github__create_issue" is not loaded in this session, so its definition was
left out of your context to save tokens. Call lazy_load_tool with toolName
"mcp__github__create_issue" first; once loaded it stays available until the session ends.

放行的四种情况:非 MCP 工具、coreTools 里的工具、本会话已激活的工具、enabled=false。

已经用 restrict 把定义摘掉了,为什么还要这层闸门?因为注册表对未知工具只会回一个 UNKNOWN_TOOL,模型看到会以为部署坏了;而且 MCP 异步注册、server 重连、Code Mode 嵌套调用这些窗口都可能绕过“工具列表已刷新”。闸门是最后一道保险,负责把错误变成一句可执行的自救指令。


工作流程

agent/session-start ─┐
agent/pre-step ──────┼─► reconcile:全局 MCP 工具 − coreTools − 已激活 = 需要摘掉的名字
lazy_load_tool ──────┘        └─► agent.ctx.get('tools').restrict({ deny })
│
└─► tools.schemas(scope) 少掉这些定义
└─► 下一轮请求的 tools 数组真的变小

tools/pre-execute ──► 未加载的 MCP 调用 → deny + 自救指令
systemPrompt ───────► 一行“未加载工具名”(只有名字)
agent/disposed ─────► 解除限制 + 清激活状态

reconcile 只在名单变化时才重装限制,不会每轮都触发 tools/change 抖动。


已知边界(如实说明)

  • MCP 工具必须在装配时已注册:本插件只处理 mcp__ 开头的工具。如果某个 MCP server 在会话开始之后才连上,它的工具会在下一次 agent/pre-step 才被摘掉 —— 中间那一轮是可见的。
  • 激活状态是内存态:进程重启、会话恢复(resume)都会从“全部未加载”开始。这是刻意的,激活状态本来就属于会话。
  • 只影响 MCP 工具:内置工具、其它插件注册的工具、lazy_load_tool 自身永远可见。
  • Code Mode:run_code 里的嵌套调用同样会被闸门拦下并给出提示;但如果宿主的 code mode 实现直接访问注册表内部而不经过 tools/pre-execute,则只能依赖移除后的“工具不存在”。实测路径(tools.execute)是经过闸门的。
  • 不做使用历史学习:早期想法里有“学习哪些工具常用”,MVP 没有实现 —— 那需要跨会话的统计存储,和“干净的会话级状态”是两套东西。

开发

npm install
npm run build
npm test          # 32 个单元测试
npm run verify:real   # 装进真实 DSH core 跑 21 项端到端检查

verify:real 需要本机有 DSH(默认找 $DSH_HOME/profiles,也可用 DSH_CORE_DIR 指定 @deepseek-ai 目录)。它会真的装配 cordis + ToolRuntime + SystemPrompt,注册假 MCP 工具,然后验证“移除 → 拦截 → 装载 → 跨会话重置”的完整链路,不依赖任何 mock。

License

MIT

常见问题

8 问
答案由本站依据条目字段整理,不引用上游原文
dsh-mcp-lazy 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add @liuhange/dsh-mcp-lazy@1.0.1` 即可。对应的 npm 包名是 `@liuhange/dsh-mcp-lazy`。

dsh-mcp-lazy 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-mcp-lazy 安全吗?

低风险。静态扫描 低;动态审计无结论(以下以静态为准)→ 总评级 低。

dsh-mcp-lazy 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-mcp-lazy 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.2-rc.1。

dsh-mcp-lazy 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-mcp-lazy 有哪些功能?

白名单常驻核心 MCP 工具、其余工具定义动态移除、lazy_load_tool 按需装载、拦截未加载工具调用、大幅缩减上下文 token。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

同名或近似条目

2 条
不同作者的仓库分开列,请确认你要装的是哪一个
浏览器与联网
按星标排序,可作替代方案

dsh-our-free-model

dsh-our-free-model

在 DeepSeek Harness 中装上这个 DSH plugin,无需登录、注册或填 API Key,即可直接调用 DeepSeek

L3 · 安装规范通过 8,796 星

dsh-web

dsh-web

侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。

L3 · 安装规范通过 8,549 星

BrowserSkill

BrowserSkill

BrowserSkill 的 DeepSeek Harness 浏览器自动化桥接插件,通过原生浏览器工具控制可见的 Chrome 和 Edg

L4 · 沙盒安装通过 8,456 星

dsh-pocket

dsh-pocket

DSH Pocket 让 DeepSeek Harness 装进口袋:电脑跑 dsh web,手机扫码即实时同步访问(局域网+公网),人在外

L5 · 运行验证通过 1,656 星

Browser4

Browser4

L4 · 沙盒安装通过 1,152 星

agentrq

agentrq

L4 · 沙盒安装通过 1,140 星

liuhange789 的其它插件

6 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-11-11。