把不常用工具折叠成查询入口,按需展开或代执行
29.4/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/Sodapopper-pixel/dsh-tool-fold.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 6 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 22 处,展示前 22 条)
- 读取本地文件lib/index.js:61
const text = await readFile(paths.config, 'utf8') - 写入本地文件lib/index.js:72
await mkdir(dirname(paths.config), { recursive: true }) - 写入本地文件lib/index.js:74
await writeFile(temporary, `${JSON.stringify(next, null, 2)}\n`, 'utf8') - 写入本地文件lib/index.js:75
await rename(temporary, paths.config) - 发起网络请求lib/client.js:176
const response = await fetch(url, init) - 读取本地文件lib/origins.js:96
top = readdirSync(nodeModules, { withFileTypes: true }) - 读取本地文件lib/origins.js:106
scoped = readdirSync(join(nodeModules, entry.name), { withFileTypes: true }) - 读取本地文件lib/origins.js:143
if (!statSync(path).isFile()) continue - 读取本地文件lib/origins.js:162
if (statSync(path).size > MAX_FILE_BYTES) return - 读取本地文件lib/origins.js:163
text = readFileSync(path, 'utf8') - 读取本地文件lib/origins.js:197
manifest = JSON.parse(readFileSync(join(packageDir, 'package.json'), 'utf8')) - 发起网络请求src/client.js:170
const response = await fetch(url, init) - 读取本地文件src/index.js:61
const text = await readFile(paths.config, 'utf8') - 写入本地文件src/index.js:72
await mkdir(dirname(paths.config), { recursive: true }) - 写入本地文件src/index.js:74
await writeFile(temporary, `${JSON.stringify(next, null, 2)}\n`, 'utf8') - 写入本地文件src/index.js:75
await rename(temporary, paths.config) - 读取本地文件src/origins.js:96
top = readdirSync(nodeModules, { withFileTypes: true }) - 读取本地文件src/origins.js:106
scoped = readdirSync(join(nodeModules, entry.name), { withFileTypes: true }) - 读取本地文件src/origins.js:143
if (!statSync(path).isFile()) continue - 读取本地文件src/origins.js:162
if (statSync(path).size > MAX_FILE_BYTES) return - 读取本地文件src/origins.js:163
text = readFileSync(path, 'utf8') - 读取本地文件src/origins.js:197
manifest = JSON.parse(readFileSync(join(packageDir, 'package.json'), 'utf8'))
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
把一批已注册工具从模型可见的界面里折叠起来,需要时展开直调,或交给聚合组代执行。
README
由 DeepSeek 最新模型翻译生成dsh-tool-fold
写给人看:
你是否热衷于给 dsh 装各种插件,注册一堆 MCP?
不过你要是还装了 dsh-context,并关注过会话极简预设外的会话的工具定义占用:
可能我的算少的了
可见,装得多了,模型的工具列表会一路涨到几十上百条,每条都带着自己的描述和参数 schema 占着上下文(一句话你好吃掉 50k+ 不是不可能)。
本插件让你自己挑一批从工具列表里摘掉,最好是不常用的,留一个薄薄的查询工具给模型按需使用。把一批已注册工具折叠成一个查询工具:模型需要时才展开直调,或干脆交给聚合组代执行。折叠按代理预设生效——同一批工具可以只在某个预设的会话里消失。
折叠示例
降上下文示例
以 openviking MCP 为例,我只留了常用的 read,其他都折叠进一个聚合工具里,效果如图
好了,具体功能可以看下文 CONTEXT 或是让 ds 给你解释。
展开完整文档(README 剩余 1 节)
dsh-tool-fold 写给人看: 你是否热衷于给 dsh 装各种插件,注册一堆 MCP? 不过你要是还装了 dsh-context,并关注过会话极简预设外的会话的工具定义占用: 可能我的算少的了 可见,装得多了,模型的工具列表会一路涨到几十上百条,每条都带着自己的描述和参数 schema 占着上下文(一句话你好吃掉 50k+ 不是不可能)。 本插件让你自己挑一批从工具列表里摘掉,最好是不常用的,留一个薄薄的查询工具给模型按需使用。把一批已注册工具折叠成一个查询工具:模型需要时才展开直调,或干脆交给聚合组代执行。折叠按代理预设生效——同一批工具可以只在某个预设的会话里消失。 折叠示例 降上下文示例 以 openviking MCP 为例,我只留了常用的 read,其他都折叠进一个聚合工具里,效果如图 好了,具体功能可以看下文 CONTEXT 或是让 ds 给你解释。欢迎贡献 两种组 | 类型 | 模型看到什么 | 模型怎么用那些工具 | | 折叠组 | 一个查询工具,op 可取 list/find、expand、retract | expand 后工具回到工具列表,下一轮直接调用;retract 收回 | | 聚合组 | 一个查询工具,op 可取 find、call | 从不展开;call 由宿主代执行,走完整的审批与 guard 管道 | 折叠组是「临时放出来」:展开只影响当前会话,重启后回到全折叠。聚合组是「永久代理」:原工具永远不可见,模型只能通过 call 间接使用,适合那些只想让它在明确指令下被调用、不希望它常驻工具列表的工具。 安装 需要 DeepSeek Harness 0.2.1-rc.2 或更高(Cordis 4.x),并且只在 Web 界面提供设置页。 dsh plugin --profile web add github:Sodapopper-pixel/dsh-tool-fold 装完重启一次 Host(这是 Host 侧插件,装载发生在启动时),然后打开 设置 → 工具折叠。 配置 配置界面截图 在设置页里:新增折叠组或聚合组 → 填查询工具名 → 选查询形态(列举工具名 / 概括加搜索)→ 勾生效的代理预设 → 勾要折叠的工具 → 保存。 - 配置存在 ~/.dsh/tool-fold/config.json(遵循 DSH_HOME),由页面写入,Host 校验通过才落盘;写入是临时文件加重命名,不会留下半个文件。 - 一个工具最多绑一个组,折叠组与聚合组之间也互斥;已经绑到别处的工具在选择列表里置灰。 - 查询工具名与任何已注册工具重名时保存会被拒并标红——宿主同一作用域里的同名注册会遮蔽原工具,静默覆盖是最坏的结果。 - 改动保存后对新会话生效;已开着的会话要另开一个才会带上折叠。 行为细节 - 按预设生效:一个组只对勾选的预设生效,判定依据是宿主报给会话的预设 id;没勾预设的组不生效。 - 折叠与展开:折叠走宿主的作用域级工具限制(ctx.tools.restrict),模型看不到被折叠的工具,也无法调用;展开即撤销限制,下一轮工具列表里就回来了。插件自己的查询工具不受限制影响。 - 晚注册与缺失:绑定的工具在会话创建时还不存在(MCP 没连上、插件后注册),先跳过并在页面上标出来;宿主工具表变化后,新出现的绑定工具会被补上折叠。 - 代执行:聚合组的 call 通过宿主的工具执行入口转发,parent 带上当前调用令牌,所以参数校验、审批、guard、结果渲染都与模型直接调用时一致。被代理的工具在会话里始终是折叠状态,插件只在这一次转发期间临时放开它、转发结束立刻收回,宿主的全局工具表本身不变。 - 卸载即还原:工具限制挂在会话自己的作用域上,所以插件被卸载或热重载时会把折叠全部撤销、连同查询工具一起注销,不会留下一个「看不见也调不动」的工具。 已知边界 - 闲置自动收回还没接上轮次信号:页面上的「闲置若干轮后自动收回」可勾选、阈值可调,但插件还没拿到可订阅的轮次边界,这项设置目前不改变行为。 - 工具目录依赖装配回调:第三方插件拿不到宿主的作用域键,schemas() 只能看到全局层的工具;预设作用域里的工具要等会话装配过一次才进目录。目录里还没有的工具可以手动输入名字绑定。 - 折叠名单读自宿主的一句校错文案:第三方插件没有别的枚举途径,只能故意提交一个不存在的限制名,从宿主报错的 known global tools: 列表里读出可折叠的名字。宿主换掉这句文案时折叠会失效,插件会写一条 warn 日志,但页面上看不出来。 - 来源徽标是推断的:宿主登记工具时不记录提供方。内置工具靠名字表认,插件工具靠扫描已安装包的入口代码;压缩或动态拼名的包扫不到,会显示为「内置或插件工具」。 - 折叠只影响工具可见性,不减少会话日志。 开发 node scripts/build.mjs # 生成 lib/(Host 模块逐个复制 + 单文件浏览器 bundle) node --test "tests/*.test.mjs" # 单元测试 node scripts/sync-installed.mjs --check # 本地开发:安装副本是否过期 node scripts/sync-installed.mjs --apply # 本地开发:把本源目录镜像进 web profile tests/ 下另有几个 Playwright 脚本,用来在真机页面上核对保存路径、来源标签、未保存提示与工具详情。 文档 - CONTEXT.md:术语表 - docs/design.md:宿主机制、实现路径与验收方式 - docs/adr/:架构决策记录 许可 MIT,见 LICENSE。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Sodapopper-pixel/dsh-tool-fold
把不常用工具折叠成查询入口,按需展开或代执行
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,173已汉化DeepSeek 客户端
74.4
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,197已汉化DSH
71.7
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,308已汉化DSH
71.3
智能体运行框架路由HarnessRouter/harnessrouter
智能体运行框架的统一接口。
★ 3,897已汉化DSH
71.2