任务完成后经 OneBot 推送 QQ 私聊或群消息
26.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add kun2-5code/dsh-plugin-onebot该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · platform
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 80 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 2 处,展示前 2 条)
- 发起网络请求src/service.ts:190
return await this.request(action, params) - 发起网络请求src/service.ts:208
res = await fetch(endpoint, {
扫描于 2026/11/3(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-settings@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 任务完成推送QQ通知
- 支持私聊与群消息
- WebGUI修改配置
README
由 DeepSeek 最新模型翻译生成dsh-plugin-onebot
DeepSeek Harness(dsh)插件:任务完成后,通过 OneBot(NapCat / go-cqhttp / Lagrange 等)通知指定的 QQ 用户或群组。
采用「WS 长连接 + HTTP 执行行为」的 OneBot 接入方式:
- WS 长连接(默认 server 模式):插件作为 WebSocket 服务端,等 NapCat 的「反向 WebSocket 客户端」接入,用于接收事件、心跳探活、判断机器人是否在线;也可切换 client 模式主动连接,或 off 关闭。
- HTTP 执行行为:调用 OneBot v11 HTTP API(send_private_msg / send_group_msg / send_msg 等)实际发送通知,支持 Authorization: Bearer 鉴权、超时与指数退避重试。
特性
- 任务完成自动通知:默认监听 agent/status(agent 转为 idle = 整个任务干完)通知一次;可切换 notifyOn: 'turn' 逐回合通知。
- 只通知完成/出错结果(notify.onError 控制是否通知出错),默认跳过子 agent(subagent)避免重复通知。
展开完整文档(README 剩余 1 节)
dsh-plugin-onebot
DeepSeek Harness(dsh)插件:任务完成后,通过 OneBot(NapCat / go-cqhttp / Lagrange 等)通知指定的 QQ 用户或群组。
采用「WS 长连接 + HTTP 执行行为」的 OneBot 接入方式:
- WS 长连接(默认 server 模式):插件作为 WebSocket 服务端,等 NapCat 的「反向 WebSocket 客户端」接入,用于接收事件、心跳探活、判断机器人是否在线;也可切换 client 模式主动连接,或 off 关闭。
- HTTP 执行行为:调用 OneBot v11 HTTP API(send_private_msg / send_group_msg / send_msg 等)实际发送通知,支持 Authorization: Bearer 鉴权、超时与指数退避重试。
特性
- 任务完成自动通知:默认监听 agent/status(agent 转为 idle = 整个任务干完)通知一次;可切换 notifyOn: 'turn' 逐回合通知。
- 只通知完成/出错结果(notify.onError 控制是否通知出错),默认跳过子 agent(subagent)避免重复通知。
- 通知模板:支持 {sessionId} {summary} {status} {time} 占位符;摘要自动取最后一条 assistant 文本并按 maxLength 截断。
- 模型可主动调用 notify_onebot 工具,把结果推给指定用户/群,支持 CQ 码(如 [CQ:at,qq=123])。
- 以 Service(ctx.onebot)形式提供,其他插件可复用。
- GUI 配置页:Web UI「设置 → 插件 → Configurable」里可直接编辑全部配置(HTTP / WS / 通知目标),保存即写入 settings.yaml,notify/http 改动即时生效。
目录结构
dsh-plugin-onebot/
├── package.json # npm 包清单 + dsh.bundle / dsh.client 声明 + prepare 构建脚本 ├── tsconfig.json # 严格模式类型检查配置(tsc --noEmit) ├── tsdown.config.ts # 构建配置:Node 库(lib/)+ 浏览器 client bundle(lib/client.js) ├── cordis.patch.yml # bundle 配置层:插入插件行 ├── dev/cordis.yml # 本地开发 overlay(只加载 host 半边,见「本地开发」) ├── src/ │ ├── index.ts # 主插件:Config schema + settings 命名空间 + 事件监听 + 工具 │ ├── service.ts # OneBotService(ctx.onebot):WS 长连接 + HTTP 行为 │ ├── client.ts # 浏览器半边:设置页里的可点击配置卡片(settings.plugin.item 插槽) │ ├── notify.ts # 摘要提取 / 模板渲染 / 截断(对外最小结构类型) │ └── types.ts # 配置类型 └── test/smoke.mjs # 冒烟测试(含 settings 接线单测)
架构
flowchart LR
subgraph dsh["DeepSeek Harness (dsh)"]
P["dsh-plugin-onebot"]
P -->|"ctx.on('agent/status' / 'session/event')"| EV["任务完成信号"]
EV --> N["通知调度器摘要 + 模板渲染 + 截断"]
N --> C["OneBotService (ctx.onebot)"]
C -->|"HTTP POST /send_private_msg|send_group_msg"| H["NapCat HTTP API"]
C -->|"WS 长连接 接收事件/探活"| W["NapCat 反向 WS 客户端"]
P -->|"defineTool: notify_onebot"| M["模型主动发消息"]
end
安装
本地目录
dsh plugin --profile demo add /path/to/dsh-plugin-onebot
或从 GitHub 安装(会拉源码并自动构建 lib/)
dsh plugin --profile demo add github:you/dsh-plugin-onebot
安装后验证配置层并启动:
dsh --profile demo --dump-config # 应看到 "# == dsh-plugin-onebot" 层
dsh --profile demo
想看/编辑 GUI 配置卡片,需要安装进带完整界面的 web profile(dsh plugin --profile web add ...),见「配置页(GUI 设置)」。
NapCat 配置
在 NapCat WebUI 的「网络配置」中,按你选定的 ws.mode 配置其中一套(HTTP 服务器两者都要开):
方式 A:ws.mode: client —— 插件连 NapCat 正向 WS(NapCat 是 WebSocket Server)
1. HTTP 服务器:开启,端口如 3000(与插件 http.url 一致);token 填到插件 http.token。
2. WebSocket 服务器(正向 WS):新建一条,端口如 3001(与插件 ws.port 一致);token 填到插件 ws.token。
- 插件以 client 模式主动连接 ws://:3001/ws(ws.host / ws.path 保持一致,同机可用 127.0.0.1)。
- 连接成功后插件日志(verbose: true)显示 WS connected to ...,并会收到 NapCat 的 lifecycle/connect 事件。
方式 B:ws.mode: server —— 插件做 WS 服务端,等 NapCat 反向 WS 连入(默认)
1. HTTP 服务器:同上。
2. WebSocket 客户端(反向 WS):新建一条,地址填 ws://:8080/ws(与插件 ws.port / ws.path 一致;dsh 与 NapCat 同机可用 127.0.0.1);token 与插件 ws.token 一致。
- 连接成功后插件日志显示 WS client connected。
两种方式任选其一即可;HTTP 行为(发消息)始终走 HTTP API,与 WS 方向无关。
dsh 配置
安装后,在 profile 的 cordis.yml 里覆盖默认配置(不写则用默认值):
plugins:
dsh-plugin-onebot:
http:
url: http://127.0.0.1:3000 # NapCat HTTP API 地址 token: '' # 与 NapCat HTTP token 一致;留空不携带 timeoutMs: 10000 ws: mode: server # server | client | off host: 0.0.0.0 # server 模式监听地址 port: 8080 # server 模式监听端口 path: /ws # WS 路径,NapCat 反向 WS 地址要一致 token: '' # 与 NapCat 反向 WS token 一致;留空不鉴权 reconnectInterval: 3000 # 仅 client 模式断线重连间隔(ms) notify: notifyOn: idle # idle:整个任务完成通知一次;turn:逐回合通知 onError: true # 出错时也通知 includeSubagents: false # 是否包含子 agent 完成事件 targets: # 默认通知目标
- type: private # private = QQ 号 id: '10001'
- type: group # group = 群号 id: '20002' template: '【任务完成】\n会话: {sessionId}\n状态: {status}\n\n{summary}' maxLength: 2000 retries: 3 # HTTP 失败重试次数(指数退避) retryDelayMs: 1000 verbose: false # 调试日志
注意:targets 为空时自动通知会跳过(避免误发),但 notify_onebot 工具仍可用显式 targetId 发送。
配置页(GUI 设置)
配置已接线到 dsh 的 settings 命名空间 dsh-plugin-onebot(host 半边 src/index.ts 用 installSettingsSection 注册,浏览器半边 src/client.ts 在 settings.plugin.item 插槽渲染卡片)。
在 Web GUI(dsh web,默认 http://127.0.0.1:3080)左下角 设置 → 插件 → Configurable,应看到一张 dsh-plugin-onebot 卡片,分三段:
- HTTP 连接:url / token / timeoutMs
- WS 长连接:mode / host / port / path / token / reconnectInterval
- 通知设置:notifyOn / 消息模板 / 长度限制 / 重试 / 通知目标列表(可增删私聊/群聊)
保存后:
- notify. 与 http. 改动即时生效(host 通过配置 thunk 实时读取);
- ws.* 连接参数在下次启动时生效(避免频繁断连重连);
- 想恢复某个分段的默认值,点该段标题右侧的「重置本节」。
⚠️ harness 一次性设置(必读):卡片能否显示还取决于 harness 的 packages/host/apiproxy/src/api-proxy.ts 里 WEB_SETTINGS_NAMESPACES 白名单——不在名单里的命名空间,即使插件注册了,settings.describe 也会当它"not exposed",卡片因此不渲染。需要在你的 harness 检出里加一行:
const WEB_SETTINGS_NAMESPACES = [
'agent-loop', 'shell', 'locale', 'permission', 'ui-conversation', 'ui-theme', 'web-search-deepseek',
'dsh-plugin-template', 'dsh-plugin-onebot', // ← 加 dsh-plugin-onebot ] as const
这是 harness 当前的注册决策点,更新/重装 harness 检出新代码后会丢失,需要重新加。
另外 client 半边只在插件以包名安装进 profile 时加载(dsh plugin --profile web add ...), --patch 源码路径挂载不会加载配置卡片。
notify_onebot 工具
任务过程中/结尾,模型可主动调用:
{
"message": "任务完成,结果见附件 [CQ:at,qq=10001]", "targetType": "group", "targetId": "20002" } targetType / targetId 可省略,省略时发给配置的默认目标。
本地开发
pnpm install
pnpm typecheck
pnpm build
node test/smoke.mjs
在 deepseek-harness 源码根目录用 overlay 直接加载本仓库源码(免安装、免构建):
pnpm dsh web --patch /absolute/path/to/dsh-plugin-onebot/dev/cordis.yml
(dev/cordis.yml 里的 name 是绝对路径,需改成你机器上的实际路径。)
⚠️ --patch overlay 只加载 host 半边(模块解析到源码文件,发现不了包级的 dsh.client 声明),所以配置卡片不会出现。要测试浏览器半边的卡片,必须把包按包名安装进带 GUI 的 web profile:
pnpm dsh plugin --profile web add /absolute/path/to/dsh-plugin-onebot && pnpm dsh web
并且要确保 harness 的 WEB_SETTINGS_NAMESPACES 白名单里有 dsh-plugin-onebot (见「配置页(GUI 设置)」),否则卡片不渲染。
发布
- npm:pnpm publish(files 已包含构建产物与补丁)
- tarball:pnpm pack,用户 dsh plugin --profile demo add ./dsh-plugin-onebot-0.1.0.tgz
- git:dsh plugin add github:you/dsh-plugin-onebot。pnpm ≥10/11 对 git 依赖的 prepare 构建脚本有白名单限制,首次安装会报 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED,需要把该仓库加进 profile 的 pnpm-workspace.yaml 的 allowBuilds——用 git 仓库键(任何 commit 都匹配,不用跟着哈希改):
allowBuilds:
dsh-plugin-onebot@git+https://github.com/you/dsh-plugin-onebot.git: true
注意:裸包名(dsh-plugin-onebot: true)对 git 依赖不生效,pnpm 只会匹配精确的 name@ 键或上面的 name@git+.git 仓库键。
相关文档
- 插件开发入门
- 插件配置
- 事件系统
- OneBot v11 协议预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
kun2-5code/dsh-plugin-onebot
任务完成后经 OneBot 推送 QQ 私聊或群消息
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,792已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,110已汉化DeepSeek 客户端
70.9
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,031已汉化DSH
70.7
这是你的仓库?认领条目