前言¶
在 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 / 小程序 / 快应用备案,以及四类违法违规黑名单;结果在会话里以官方样式的可展开工具卡片呈现。
- 仓库:https://github.com/keyblues/dsh-icp
- 目录页:https://www.skillhub.cn/plugins/keyblues/dsh-icp
- 许可证:MIT(见仓库)
- 当前 bundle 版本:
1.1.1(见package.json) - 运行时:Node.js
>= 20;DSH>= 0.2.1-rc.3 < 0.3.0-0
插件未发布到 npm;npm 上另有同名无关包,README 明确不要通过 npm 安装本插件。
核心功能¶
两个 Agent 工具¶
icp_query— 按类型与关键词查询一类备案或黑名单数据,普通备案类型支持分页。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 安装(推荐)¶
- 打开 DSH 侧边栏「插件」页。
- 点「添加插件」→「安装第三方插件」。
- 在「包名或地址」中填写:
https://github.com/keyblues/dsh-icp
- 安装完成后,
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:websearch:baidu.com(也可填主办单位全称或备案号如京ICP证030173号)- 可选
page_num(从 1 起)、page_size(默认受maxPageSize限制,默认 10,最大 26)
查 APP / 小程序 / 快应用¶
type分别为app/mapp/kappsearch可填应用名(如微信)、主办单位或备案号
查违法违规黑名单¶
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 分页拉取结果。