🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

主代理工具过滤 Kiol-V/dsh-agent-tool-filter

DeepSeek Harness
Kiol-V10 天前有提交已提供中文文档扫描:含敏感能力

为主智能体裁剪工具集,子代理保留完整工具

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Kiol-V/dsh-agent-tool-filter
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · security
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 10 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 7 处,展示前 7 条)
  • 写入本地文件
    lib/debuglog.mjs:35
    mkdirSync(path.dirname(filePath), { recursive: true })
  • 写入本地文件
    lib/debuglog.mjs:36
    appendFileSync(filePath, `${line}\n`, 'utf8')
  • 读取本地文件
    lib/diagnostics.mjs:173
    const text = patchPath === undefined ? '' : await readFile(patchPath, 'utf8')
  • 读取本地文件
    lib/diagnostics.mjs:191
    version = JSON.parse(await readFile(new URL('../package.json', import.meta.url), 'utf8')).version
  • 写入本地文件
    lib/manage.mjs:432
    await appendFile(patchPath, `\n${serializeInsertRow({ id: rowId, name: source.options.name, config: copy })}`, 'utf8')
  • 读取本地文件
    lib/manage.mjs:464
    const text = await readFile(patchPath, 'utf8')
  • 写入本地文件
    lib/manage.mjs:471
    await writeFile(patchPath, removeRowItem(text, rowId), 'utf8')
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 里给主智能体(编排器)按智能体过滤工具——编排器只留最小工具集,子代理用完整工具集。

README

由 DeepSeek 最新模型翻译生成
dsh-agent-tool-filter 英文版见 README.en.md。 为 DeepSeek Harness 提供主智能体(负责任务调度的那个)的按智能体工具过滤器。 目标是让工具集互相独立:选中的预设只拿到裁剪过的工具集(每个请求里的工具 schema 都省了开销),子代理保留完整工具集,包括 web。DSH 本身没有针对主智能体的按智能体过滤器。 安装前必读 01. 插件能力可能和 DSH 的更新撞车。 按智能体过滤的功能以后可能直接做进平台本身。装插件之前,先看当前 DSH 版本和它的更新列表:如果需要的功能已经原生支持,就不用再装单独的插件了。 02. 过滤只对主智能体生效。 它身上被隐藏的工具会关掉;子代理那边照样能用——插件不会自动把限制带过去。想让限制贯穿全局: - 给每个子代理配一个自己的预设,带上合适的工具集。比如做网页搜索,就给子代理只留 web 工具和 read;其他场景挑各自合适的组合; - 给主智能体写清工作流:任务需要被隐藏的工具时,不要直接去调,而是把任务交给有这个工具的子代理。 不做这些配置,智能体会一头撞在已关闭的工具上,而不是去委派——过滤是生效了,工作流却断了。 用预设限制工具集不适合这个任务:它在创建会话时就固定下来,还会被子代理继承,把子代理和主智能体一起限制住。插件的掩码只作用于主智能体,改动时不受这些约束。
展开完整文档(README 剩余 1 节)
dsh-agent-tool-filter

英文版见 README.en.md。

为 DeepSeek Harness 提供主智能体(负责任务调度的那个)的按智能体工具过滤器。

目标是让工具集互相独立:选中的预设只拿到裁剪过的工具集(每个请求里的工具 schema 都省了开销),子代理保留完整工具集,包括 web。DSH 本身没有针对主智能体的按智能体过滤器。

安装前必读

01. 插件能力可能和 DSH 的更新撞车。 按智能体过滤的功能以后可能直接做进平台本身。装插件之前,先看当前 DSH 版本和它的更新列表:如果需要的功能已经原生支持,就不用再装单独的插件了。
02. 过滤只对主智能体生效。 它身上被隐藏的工具会关掉;子代理那边照样能用——插件不会自动把限制带过去。想让限制贯穿全局:
- 给每个子代理配一个自己的预设,带上合适的工具集。比如做网页搜索,就给子代理只留 web 工具和 read;其他场景挑各自合适的组合;
- 给主智能体写清工作流:任务需要被隐藏的工具时,不要直接去调,而是把任务交给有这个工具的子代理。
不做这些配置,智能体会一头撞在已关闭的工具上,而不是去委派——过滤是生效了,工作流却断了。

用预设限制工具集不适合这个任务:它在创建会话时就固定下来,还会被子代理继承,把子代理和主智能体一起限制住。插件的掩码只作用于主智能体,改动时不受这些约束。

机制

01. 在 agent/created 事件上(listeners 在第一次组装提示词之前就跑完了),插件确定智能体的预设(agentPresets.composedPreset(agent.ctx)),再按「预设 → 配置档」的配置矩阵选出过滤配置档。
02. 限制加在智能体自己的 scope 上:agent.ctx.tools.restrict(...)。只过滤根智能体:in-process 子代理会挂到父级的预设上(composeFrom),显示的是同一个预设——不检查 roots() 的话,过滤器会误伤子代理。SDK 子代理跑在独立进程里,完全不受影响。
03. restrict() 的掩码会叠加,所以改配置时旧限制会先撤掉(disposers),再重新加上新的。状态存在智能体自己身上,插件热重载后依然保留。
04. scope 自己的 registrations(structured-output 之类)restrict() 不会掩码。

配置

包通过 Plugin Manager 以 bundle 形式安装,自身提供插件行。
在 UI 卡片里配置矩阵和配置档;改动即时生效(HMR)。下面是配置值示例:

~~~yaml
- insert:
- id: agent-tool-filter
name: dsh-agent-tool-filter
config:
enabled: true
presets: # 矩阵「预设 id → 配置档名」;留空 = 哪里都不过滤 cordis: cordis-trim standard: minimal-orchestrator profiles: # 自定义配置档与默认配置档的修改(按名称覆盖) my-profile: mode: deny # deny — 移除列出的项;allow — 只保留它们
tools: [web_search, web_fetch]

| 字段 | 默认值 | 含义 |
| enabled | true | false — 插件不生效 |
| presets | 空 | 矩阵「预设 → 配置档」;留空 = 不过滤任何东西(安装不改变预设行为) |
| profiles | 内置(见下文) | 自定义配置档;名称相同会覆盖内置配置档 |
| language | auto | 插件 UI 语言:auto — 跟随应用,或 ru / en |

过滤配置档与模板

默认只装一个通用配置档;其余配置档通过从 UI 卡片直接导入模板包来添加。

| 配置档/包 | 内容(deny) | 思路 |
| balanced(内置) | 管理类:plugin_manager、security_audit、test_drive、drive_report、create_skill、subagent_fork | 适用于任何预设的基础裁剪 |
| 包 gradient | strict(管理 + web)、soft(web) | 围绕 balanced 的逐级限制 |
| 包 roles | focus、no-web、no-admin、minimal | 按用途划分的配置档 |
| 包 layers | no-web、no-admin、no-dev-skills | 一个类别 = 一个配置档,用副本组合 |

任何配置档都能复制后按需修改(自己的 tools 列表、deny/allow 模式);内置的 balanced 可按名称覆盖,但不能删除。

安装做了什么

包不添加预设、工具和别人的配置——只添加插件文件和一行 bundle,带安全的默认配置。首次激活时,插件扫描已安装的 DSH(真实 tools 和预设),拿裁剪配置档与你的集合比对;报告写入日志。在你把预设和配置档关联起来(presets 矩阵)之前,过滤是关闭的。详细说明见 docs/filtering-guide.md。

UI

UI 卡片(v1.0.0)从 Plugin Manager 打开:dsh-agent-tool-filter 行 → Configure。卡片里:

- 「过滤已启用」开关和状态(带掩码的智能体、隐藏的 schema 数);
- 「预设 → 配置档」矩阵,用卡片分两块展示(默认和自定义):关联/替换/解除配置档,复制预设(带描述预览),删除自定义项;
- 配置档:在弹窗里创建/编辑/复制,三组 tools(已启用、
- 受管 / 不受管、导入模板包;
- 扫描工具 —— 按 DSH 调色板给出汇总(「✅ N 个工具可关闭 / ⚠ M 个工具不可关闭」),并给出带原因的警告;
- 诊断 —— 折叠区块,含技术数据(remote、locale、版本、计数器);
- 界面支持俄语和英语(语言切换、「跟随应用」模式);Plugin Manager 里也提供俄语和英语元数据,以及插件原始图标。

名称校验与诊断

- 启动时以及调用 scanTools() 时,插件会把配置档名称与全局工具列表比对。未知名称和不可过滤名称(own-layer registrations:team_task_、spawn_teammate、wait_agent)会进入警告(日志和 UI 卡片),而不是被静默跳过。
- restrict() 在应用时还会额外校验名称:未知名称不会阻塞其余名称(deny 按名称逐个应用),错误会连同被跳过名称的清单写入日志。
- 诊断:「当前过滤器隐藏了多少个 schema」—— 见日志(应用行)和 agentToolFilter.status().agents[].hidden。
- 文件诊断由开关 debugLog 控制(默认关闭),ATF_DEBUG_LOG 可强制开启并指定文件路径。

与服务商的兼容性

插件自动选择工作模式 —— 没有单独设置项。

- 严格服务商会把对话历史里的工具调用与当前工具列表比对:如果工具 schema 被隐藏,而历史里又有它的调用,请求会以服务商错误结束(「服务商返回了错误的工具调用」)。宽松服务商接受这类历史。
- 如果智能体历史里已经含有被隐藏工具的调用,插件会暂时不隐藏 schema,而是拦截被隐藏工具的调用,并提示把任务委派给子代理 —— 这样无论严格还是宽松服务商,历史与工具列表都不会对不上。
- 历史压缩后,聊天切换到常规 schema 隐藏 —— 上下文节省自动生效(已验证:压缩后隐藏的 schema 会从模型请求中消失)。
- 如果被隐藏工具在聊天里从未被调用过,schema 隐藏会立即生效,即使是旧聊天(已验证:聊天无错误运行)。

可逆性(备忘)

- 关闭(enabled: false)和配置修改对新智能体生效(创建 / resume / clear)。对活动会话,可靠做法是重启 DSH 或重建智能体(clear / resume):智能体 scope 会重建,过滤器重新应用。
- 插件还会尝试立即把改动应用到活动智能体(app-boot/config-reload 时 hot-apply),但不要把它当作唯一途径。
- 不重启就移除某个智能体的过滤器:从 presets 矩阵里删除预设并重建智能体;dispose 时限制会自动从智能体 scope 移除。
- restrict() —— 限制模型可见性(并节省 schema),不是 sandbox,也不保证安全。

安装

在 Plugin Manager 中通过 plugin_manager → install_bundle 安装包,指定发布版 .tgz 的路径,或解压后包目录的路径。对于 npm 包,先把它获取到环境可访问的目录,再把包目录的路径传给 install_bundle。管理器会安装并接入 bundle;无需手动修改配置档里的 cordis.patch.yml,也无需把包解压到配置档中。首次激活如有需要,重启 DSH 即可完成。这个包没有依赖;@deepseek-ai/ 模块由宿主提供。
预览分享卡片长什么样 ↓Kiol-V/dsh-agent-tool-filter
分享 · DeepSeek Harness Hub
Kiol-V/dsh-agent-tool-filter

为主智能体裁剪工具集,子代理保留完整工具

回到顶部