dsh-napcat-tools:把 NapCat OneBot 11 HTTP API 接到 DeepSeek Harness

前言

在 Windows 上跑 NapCat 並開啓 OneBot 11 HTTP 服務後,模型或自動化腳本要發消息、查羣、調官方 action,往往需要自己拼 URL、對照文檔填參數,還要處理返回 JSON。手工 curl 或零散腳本難以在 Harness 對話裏複用,也不利於覆蓋官方文檔裏的大量接口。

下面介紹維護者 EviMing 發佈的聯網工具插件 dsh-napcat-tools(GitHub:EviMing/dsh-napcat-tools)。它把本機 NapCat 的 HTTP API 封裝成 Harness 可調用的工具,並附帶零第三方依賴的 Python CLI,當前快照對齊 NapCat 官方文檔 4.18.42 的 204 個 action。插件本身不實現 QQ 協議,只負責組參、啓動倉庫內 Python 包,並把 --json 結果交回 Harness。

這是什麼

dsh-napcat-tools 提供兩層能力:

  1. DeepSeek Harness Host 插件:註冊 napcat_call、napcat_send 兩個模型工具;
  2. 獨立 Python 包 napcat_api:可通過 python -m napcat_api 使用,不依賴 DSH。

NapCat 的地址、token、QQ 號由 Python 包自動發現:掃描 <NapCat>/napcat/config/onebot11_*.json 裏啓用的 httpServers;也可用環境變量 NAPCAT_ROOT、NAPCAT_HTTP、NAPCAT_TOKEN、NAPCAT_QQ 覆蓋。許可證爲 MIT(package.json 版本 1.0.0)。

核心功能

Harness 工具

napcat_call

調用任意官方 action,返回 { ok, action, data }。參數名不在官方文檔裏時默認拒絕,可加 "force": true 跳過校驗。

napcat_send

羣聊/私聊快捷發送,支持 text、images、files、at、reply、record、video、face、markdown、jsonCard、dryRun 等。target 形如 group:羣號 或 user:QQ號;本地媒體由 Python 側讀成 base64://,也可直接給 http(s):// 或 base64://。

Python CLI

覆蓋官方 spec 中的 204 個 action,並提供 version、whoami、groups、history、send、call、actions、doc、sync-docs 等子命令。倉庫內 docs/ACTIONS.md 爲 action 參考,docs/QZONE.md 爲 28 個 QQ 空間接口,docs/TOOLS.md 爲 DSH 工具說明。

架構要點

DSH 側 index.js 註冊工具,lib/runner.mjs 通過 spawn python -m napcat_api 收集並解析 JSON。napcat_api/spec.json 爲 4.18.42 的 action 裁剪快照;NapCat 升級後可執行 python -m napcat_api sync-docs 更新 spec,再運行 python tools/gen_docs.py 重新生成文檔。

前置條件

安裝與使用前需確認:

  • Windows 上的 NapCat 已登錄,並啓用 OneBot 11 HTTP 服務(默認常見爲 127.0.0.1:3000);
  • Python 3.9+,無需安裝第三方包;
  • 可選 Node.js:僅在 sync-docs 解析官方 OpenAPI 分塊時需要;
  • DeepSeek Harness,且本機 profile 支持安裝 Host 插件 bundle。

安裝與啓用

1. 準備倉庫路徑

將 dsh-napcat-tools 源碼放到本機目錄,記下根路徑(下文以該路徑作爲 bundle 目標)。

2. 驗證 Python CLI

在倉庫根目錄執行:

python -m napcat_api version --check
python -m napcat_api whoami

若輸出包含 NapCat 版本、文檔版本與在線探測等信息,說明自動發現或環境變量配置正常。更多命令見倉庫內 napcat_api/README.md。

3. 安裝 DSH 插件 bundle

編輯 cordis.patch.yml,將 cwd 改爲本倉庫根目錄:

config:
  cwd: 'D:\path\to\dsh-napcat-tools'
  python: ''
  timeoutMs: 120000

隨後通過插件管理安裝(路徑替換爲實際目錄):

plugin_manager action=install_bundle target=D:\path\to\dsh-napcat-tools

新安裝的 bundle 立即生效;之後若修改 index.js,需重啓 DSH 纔會重新加載。

典型用法

在 Harness 中調用 action

查詢登錄信息:

{ "action": "get_login_info" }

查羣信息與發羣消息:

{ "action": "get_group_info", "params": { "group_id": 1103136906 } }
{ "action": "send_group_msg", "params": { "group_id": 1103136906, "message": "hello" } }

快捷發消息

羣聊帶 @:

{ "target": "group:1103136906", "text": "晚上好", "at": ["10001"] }

私聊帶圖片路徑:

{ "target": "user:10001", "text": "看圖", "images": ["D:\\pics\\a.png"] }

回覆某條消息:

{ "target": "group:1103136906", "text": "回覆你", "reply": "123456789" }

命令行速查

python -m napcat_api version --check
python -m napcat_api whoami
python -m napcat_api groups
python -m napcat_api history -g 1103136906 -n 20
python -m napcat_api send -g 1103136906 -t "你好" --image D:\pics\a.png
python -m napcat_api call get_group_list --json
python -m napcat_api actions --search group
python -m napcat_api doc send_group_msg
python -m napcat_api sync-docs

version --check 會同時對照本地 version.json、在線 NapCat 與官方文檔三方版本。

適用場景與注意

適合誰:已在 Windows 本機部署 NapCat,希望在 DSH 對話裏讓模型查羣、發消息或調用完整 OneBot action;或希望用同一套 Python CLI 做腳本化操作而不綁死 Harness。

運行權限:插件隨當前 DSH 進程在本機執行,會調用本地 Python 與 NapCat HTTP 接口。安裝前應閱讀倉庫源碼與 MIT 許可證,確認路徑與 cordis.patch.yml 中的 cwd、python、timeoutMs 符合你的環境。

安全:napcat_call 不做業務風控,set_group_ban、set_group_kick、退羣等操作會直接執行。access token 僅存在於 NapCat 本地配置,倉庫不包含 token 或賬號密碼。建議只在可信網絡暴露 OneBot HTTP 端口。

生態說明:DeepSeek Harness 採用「一切皆插件」的擴展方式;社區目錄 SkillHub 插件頁 爲獨立收錄站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

經過上面的步驟,你可以把 NapCat 的 204 個官方 action 與快捷發消息能力接到 Harness,同時保留可獨立使用的 napcat_api CLI。進一步參數與返回值見倉庫 docs/TOOLS.md、docs/ACTIONS.md。

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

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

小夜