dsh-icp:在 DSH 里直连工信部 ICP 备案查询

前言

在 DeepSeek Harness(DSH)里做安全调研、合规核对或域名/App 背景核查时,经常需要查工信部 ICP 备案与违法违规黑名单。常见做法是单独开浏览器查官网,或挂一个 MCP 服务、第三方 API,再让 Agent 间接调用——多一层部署、多一层凭据与网络依赖。

dsh-icp(维护者 keyblues)是 DSH 社区目录中的「联网工具」类原生插件:在 Node 进程内复现工信部备案查询协议(访问令牌、滑块验证码、条件查询与 App 详情补全),注册 icp_query / `icp_query_types 两个工具,无需 MCP、外部中继或 API Key。下文介绍它的能力、安装方式与使用注意。

这是什么

一句话:dsh-icp 是 DSH bundle,直连官方接口 https://hlwicpfwc.miit.gov.cn/icpproject_query/api,本地求解滑块验证码后查询网站 / APP / 小程序 / 快应用备案,以及四类违法违规黑名单;结果在会话里以官方样式的可展开工具卡片呈现。

插件未发布到 npm;npm 上另有同名无关包,README 明确不要通过 npm 安装本插件。

核心功能

两个 Agent 工具

  1. icp_query — 按类型与关键词查询一类备案或黑名单数据,普通备案类型支持分页。
  2. icp_query_types — 无参数,返回 8 种查询类型的说明、官方基地址、当前生效配置与使用提示。

工具名即为上述名称,没有 MCP 前缀。

支持的查询类型

type 含义 search 可填 分页
web 网站备案 域名 / 主办单位名称 / 备案号 支持
app APP 备案 应用名称 / 主办单位 / 备案号 支持(可自动补详情)
mapp 小程序备案 同上 支持(可自动补详情)
kapp 快应用备案 同上 支持(可自动补详情)
bweb 违法违规网站 域名 单条,忽略分页参数
bapp 违法违规 APP APP 名称 单条
bmapp 违法违规小程序 小程序名称 单条
bkapp 违法违规快应用 快应用名称 单条

普通查询只有一个 search 参数承担域名、单位名、备案号、应用名等条件,没有单独的 domain / unitName 字段。

实现上的几个要点

  • 直连官方:无中转、无第三方数据商;凭据为进程内匿名令牌,不需 API Key。
  • 验证码:本地解码 PNG 并定位滑块缺口;令牌与会话在插件生命周期内缓存,连续查询时 README 称首查约 0.9 秒、后续约 0.2–0.4 秒(以实际网络为准)。
  • App 类详情:列表结果可再调 queryDetailByAppAndMiniId 补全服务名称等,可用配置 includeDetails: false 关闭以提速。
  • 模型可见输出:精简为一行一条记录,并提示下一页 page_num;完整字段与分页信息在工具返回 schema 与会话卡片中。
  • 零 npm 运行时依赖:仅用 Node 内置 fetch / crypto / zlib 等,无构建步骤。

与典型「DSH → MCP → 第三方接口」方案相比,本插件查询链路是 Node 进程直接访问工信部接口,不部署 MCP Server。

安装与启用

社区插件通过 DSH 侧边栏安装,不要用 dsh plugin add github:... 这类自行拼接的命令(除非你的环境文档明确支持且与 README 一致;本插件 README 给出的方式如下)。

从 GitHub 安装(推荐)

  1. 打开 DSH 侧边栏「插件」页。
  2. 点「添加插件」→「安装第三方插件」。
  3. 在「包名或地址」中填写:
https://github.com/keyblues/dsh-icp
  1. 安装完成后,icp_query / icp_query_types 自动注册。

也可让 Agent 执行:

plugin_manager(action: "install_bundle", target: "github:keyblues/dsh-icp")

安装后检查

  • application 应为 applied,bundle 行 dsh-icp 激活。
  • 无 pnpm、无构建、无 approvedBuilds 额外步骤。
  • 首次安装或升级后若修改了 client.js,需刷新浏览器页面才能看到工具卡片;Host 侧工具无需刷新。
  • 若改了 index.js 或 lib/**,在插件页禁用再启用该 bundle,或重启 DSH,以重载 Host 模块。

卸载可在插件页操作,或:

plugin_manager(action: "remove_bundle", target: "@local/dsh-icp")

典型用法

查网站备案

在对话中让 Agent 调用工具,或直接理解参数含义自行构造调用。示例语义:

  • type: web
  • search: baidu.com(也可填主办单位全称或备案号如 京ICP证030173号)
  • 可选 page_num(从 1 起)、page_size(默认受 maxPageSize 限制,默认 10,最大 26)

查 APP / 小程序 / 快应用

  • type 分别为 app / mapp / kapp
  • search 可填应用名(如 微信)、主办单位或备案号

查违法违规黑名单

  • type 为 bweb / bapp / bmapp / bkapp 之一
  • search 填域名或对应应用名称;不分页

先看类型与配置

调用 icp_query_types,参数 {},可得到 8 类 search_hint、官方 endpoint 以及当前 config(如 timeout_ms、include_details)。

返回中的 hasNextPage 由插件根据官方 pageNum / pages 推导;README 说明官方返回的同名字段恒为 false,不可直接依赖。

配置

配置写在 bundle 的 cordis.patch.yml,也可在 profile 的 cordis.patch.yml 里用行 id dsh-icp 覆盖:

- id: dsh-icp
  config:
    timeoutMs: 45000
    includeDetails: false
配置项 默认 作用
captchaMaxAttempts 5 单次查询内滑块最大尝试次数
timeoutMs 30000 单次上游 HTTP 超时(毫秒)
maxPageSize 10 每页条数上限(1–26)
detailConcurrency 5 并发拉取 App 类详情的数量
includeDetails true 是否补全 App / 小程序 / 快应用详情

修改后需重启 DSH 或重载该 bundle 行;本 bundle 无插件设置表单,非法值会回退默认并在范围内截断。

适用场景与注意

适合谁

  • 已在用 DSH、希望 Agent 在会话内查备案与黑名单、且能直连 hlwicpfwc.miit.gov.cn 的环境。
  • 不想维护 MCP 或购买第三方 ICP API 的个人或小团队。

环境与权限

  • 平台:macOS / Windows / Linux(纯 JS)。
  • 网络:需能访问工信部上述域名;README 的 icp_query_types 说明里会提到验证码成本与反爬、限频,频繁调用需自行节制。
  • 安全:插件以当前 DSH Host(Node)进程权限运行,会向外网发起 HTTP 请求;安装前请阅读仓库源码与 MIT 许可证,确认符合你的合规要求。社区目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系,仅作发现入口。

卡片与持久化

Client 半通过 tool.call.toolview 注册折叠/展开卡片;Host 写入 output.presentationMeta,fork 或重开会话后卡片仍可重绘。运行中、失败、用户停止等状态在 UI 上有区分。

结尾

dsh-icp 把工信部 ICP 查询流程收进 DSH 原生 bundle:两个工具、八种类型、本地过验证码、零 npm 依赖。若你在 Harness 里做备案与黑名单核查,可按 README 从 GitHub 安装,用 icp_query_types 对齐参数,再用 icp_query 分页拉取结果。

羽毛球分组比赛记分
小程序二维码

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

小夜