前言¶
在 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 分頁拉取結果。