🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

IM 远程操控桥接 ZhuoSir/dsh-chatops

DeepSeek Harness
ZhuoSir53 天前有提交已提供中文文档扫描:含敏感能力

在微信飞书里发消息,远程驱动会话并审批危险操作

30.3/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ZhuoSir/dsh-chatops
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · market
装得上吗
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 53 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(dependency_conflict · 2026/11/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-chatops(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/7 04:11:09

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 52 处,展示前 25 条)
  • 写入本地文件
    index.js:139
    mkdirSync(this.storageDir, { recursive: true });
  • 发起网络请求
    index.js:352
    response = await fetch(url, {
  • 发起网络请求
    index.js:524
    const response = await fetch(url, {
  • 写入本地文件
    index.js:638
    mkdirSync(storageDir, { recursive: true });
  • 读取本地文件
    index.js:712
    if (!existsSync(this.stateFile)) return;
  • 读取本地文件
    index.js:714
    const raw = JSON.parse(readFileSync(this.stateFile, "utf8"));
  • 读取本地文件
    index.js:726
    if (existsSync(this.stateFile)) raw = JSON.parse(readFileSync(this.stateFile, "utf8"));
  • 读取本地文件
    index.js:726
    if (existsSync(this.stateFile)) raw = JSON.parse(readFileSync(this.stateFile, "utf8"));
  • 写入本地文件
    index.js:731
    writeFileSync(this.stateFile, JSON.stringify(raw, null, 2), { mode: 384 });
  • 读取本地文件
    index.js:738
    const raw = JSON.parse(readFileSync(this.stateFile, "utf8"));
  • 读取本地文件
    index.js:747
    if (existsSync(this.stateFile)) raw = JSON.parse(readFileSync(this.stateFile, "utf8"));
  • 写入本地文件
    index.js:754
    writeFileSync(this.stateFile, JSON.stringify(raw, null, 2), { mode: 384 });
  • 写入本地文件
    index.js:806
    appendFileSync(join(this.storageDir, "ilink-debug.log"), `${( new Date()).toISOString()} ${message}\n`);
  • 发起网络请求
    index.js:1417
    const info = await this.client.request({
  • 发起网络请求
    index.js:1812
    const response = await fetch(new URL("v1.0/oauth2/accessToken", API_BASE), {
  • 发起网络请求
    index.js:1841
    const response = await fetch(new URL(isGroup ? "v1.0/robot/groupMessages/send" : "v1.0/robot/oToMessages/batchSend", API_BASE), {
  • 发起网络请求
    index.js:1865
    const response = await fetch(url, {
  • 写入本地文件
    index.js:2133
    mkdirSync(storageDir, { recursive: true });
  • 发起网络请求
    lib/client.js:237
    const [cfg, st] = await Promise.all([fetch("/chatops/api/config").then((r) => r.json()), fetch("/chatops/api/status").then((r) => r.json())]);
  • 发起网络请求
    lib/client.js:265
    if ((await fetch("/chatops/api/config", {
  • 发起网络请求
    lib/client.js:278
    await fetch("/chatops/api/rebind", { method: "POST" });
  • 发起网络请求
    lib/client.cjs:232
    const [cfg, st] = await Promise.all([fetch("/chatops/api/config").then((r) => r.json()), fetch("/chatops/api/status").then((r) => r.json())]);
  • 发起网络请求
    lib/client.cjs:260
    if ((await fetch("/chatops/api/config", {
  • 发起网络请求
    lib/client.cjs:273
    await fetch("/chatops/api/rebind", { method: "POST" });
  • 读取本地文件
    test-file-send.mjs:6
    const state = JSON.parse(readFileSync(process.env.HOME + '/.dsh/storages/dsh-chatops/ilink-state.json', 'utf8'))
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 微信扫码绑定机器人
  • 飞书自建应用接入
  • 手机IM驱动会话
展开完整介绍(179 字)↓

dsh-chatops 是 DeepSeek Harness 的 IM 桥接插件:微信扫码绑定官方 ClawBot 机器人(腾讯 iLink 协议),或接入飞书自建应用,即可在手机 IM 里列出/切换/驱动所有 DSH 会话——发文字就是发 prompt,任务完成自动推送结果,危险操作推送审批(飞书支持卡片按钮一键批准)。多通道并行、纯官方接口、零公网部署

README

由 DeepSeek 最新模型翻译生成
dsh-chatops 用微信、飞书、钉钉、企业微信远程操控 DeepSeek Harness——IM 机器人直连全部工作区与会话,任务完成推送,危险操作远程审批。 Drive DeepSeek Harness from WeChat, Feishu, DingTalk and WeCom — IM bots bridged to every workspace and session, with completion push and remote approval. License: MIT DSH Profile Node 四通道并行的 IM 桥接插件:机器人和你私聊(或群 @)即可操作所有工作区和会话——发文字就是发 prompt,任务完成自动推送,危险操作推审批(飞书支持卡片按钮一键批准),生成的报告/图片/文件可直接回传到 IM。
展开完整文档(README 剩余 1 节)
dsh-chatops

用微信、飞书、钉钉、企业微信远程操控 DeepSeek Harness——IM 机器人直连全部工作区与会话,任务完成推送,危险操作远程审批。

Drive DeepSeek Harness from WeChat, Feishu, DingTalk and WeCom — IM bots bridged to every workspace and session, with completion push and remote approval.

License: MIT
DSH Profile
Node

四通道并行的 IM 桥接插件:机器人和你私聊(或群 @)即可操作所有工作区和会话——发文字就是发 prompt,任务完成自动推送,危险操作推审批(飞书支持卡片按钮一键批准),生成的报告/图片/文件可直接回传到 IM。

架构

截图

设置页「IM 通道」

功能特性

- 🔀 四通道并行:微信 / 飞书 / 钉钉 / 企业微信同时在线,指令集完全一致
- 📱 微信(ClawBot / iLink):官方机器人平台,扫码绑定即用,普通微信里出现机器人联系人;bot_token 长效,重启免扫码
- 🐦 飞书(自建应用):WS 长连接;审批发交互卡片(按钮一键批准);任务发流式进度卡原地更新为结果
- 🟦 钉钉(企业内部应用):Stream 长连接,文本/文件回传齐备
- 🟩 企业微信(智能机器人):官方 aibot SDK 长连接(仅企业内成员可见)
- 🗂 指令集:/sessions(含 📦 冷会话自动唤醒)、/use、/status、/log(完整输出)、/send 、/approve /reject
- 🚀 普通文字直接作为 prompt 发给绑定会话(首次自动绑定最近活跃会话)
- 📎 文件回传:模型可调用内置 im_send_file 工具主动把成果文件发到 IM(图片内联显示,其他为文件卡片);/log 超长输出自动转 txt 文件
- 🖥 设置页 GUI:「设置 → IM 通道」面板——通道开关、凭据填写、状态监控、微信扫码绑定全部可视化(主题跟随深浅色)
- 🔐 安全模型:owner/白名单、工作区路径围栏、凭据入 DSH 凭据存储、全量审计日志、陌生人消息静默忽略

安装

从 GitHub 安装(推荐)
dsh plugin --profile web add github:ZhuoSir/dsh-chatops

或本地源码安装
dsh plugin --profile web add /path/to/dsh-chatops

重启生效
dsh web

然后打开 设置 → IM 通道,在面板上启用通道并填写凭据(微信无需凭据,直接面板内扫码)。

兼容性与 profile

| 项 | 要求 |
| DSH profile | web(完整功能);headless profile 可跑通 Bot 收发,但无设置页/扫码页 |
| Node.js | ≥ 22(AbortSignal.any / fetch 依赖) |
| 操作系统 | macOS / Linux / Windows(wechaty 备选通道的 xp puppet 仅 Windows) |
| 网络 | 仅需主动出站 HTTPS/WebSocket,零公网回调、零端口转发 |
| DSH 版本 | 0.1.0-rc.x(peer: @deepseek-ai/cordis ^4、dsh-llm/dsh-tools rc.6) |

各通道官方 SDK 均为可选依赖(@larksuiteoapi/node-sdk / dingtalk-stream / @wecom/aibot-node-sdk / wechaty),随主包安装;未装时对应通道空转并在日志给出指引,不影响其他通道。

权限说明

插件自身的安全边界

- 网络:仅出站连接各 IM 平台官方域名(ilinkai.weixin.qq.com / open.feishu.cn / api.dingtalk.com / 企微 WS 网关);本机回环端口只暴露 /chatops/ 只读状态与配置端点(loopback 校验);
- 凭据:微信 bot_token 写入 DSH 凭据存储(ctx.credentials,文件兜底 0600 权限);飞书/钉钉/企微凭据保存在本机 profile 配置中,不上传任何第三方;
- 文件:文件回传只允许发送当前会话工作区内的文件(路径逃逸拒绝 + 审计);大小上限默认 100MB(可配);
- 访问控制:微信扫码绑定者 / 飞书钉钉企微首个私聊用户自动成为 owner;其余人消息静默忽略并写审计日志(storages/dsh-chatops/audit.jsonl);可用 security.allowContacts / allowRooms 收敛白名单;
- 审计:绑定、指令、审批决策、文件发送全部留痕。

各通道需要的平台权限

| 通道 | 平台准备 | 权限/能力 |
| 微信 ilink | 无(扫码即建机器人) | 无需配置权限 |
| 飞书 | 开发者后台建自建应用 + 机器人能力 | im:message、im:message:send_as_bot、im:resource(文件回传);事件订阅(长连接):im.message.receive_v1 + card.action.trigger(审批按钮必需);发版生效 |
| 钉钉 | 开放平台建企业内部应用 + 机器人 | 消息接收选 Stream 模式;机器人消息收发权限;文件回传需媒体上传权限 |
| 企业微信 | 管理后台建智能机器人 | 无额外权限项;仅企业内成员可见 |
⚠️ wechaty 备选通道(个人号协议)违反《微信软件许可及服务协议》,存在封号风险,仅限自用、务必小号,默认关闭。

快速开始

微信(ilink,默认)

设置 → IM 通道 → 微信卡片内扫码绑定(或打开 http://127.0.0.1:3080/chatops/qr),手机确认后机器人和你打招呼:

/help → 查看指令 /sessions → 1. 修复登录bug 💤空闲 2. 写周报 🔄运行中 …(📦=冷会话,自动唤醒) /use 1 → ✅ 已绑定会话:修复登录bug 把 README 翻译成英文 → 🚀 已发送… →(完成后)✅ 任务完成:…
/send reports/a.md → 📤 文件发送中…
"把结果整理成报告发给我" → 模型自动调用 im_send_file 推文件给你

飞书 / 钉钉 / 企业微信

1. 按上表在对应开放平台建好应用/机器人、拿到凭据;
2. 设置 → IM 通道 → 填凭据、勾选启用 → 保存(cordis 自动热重载,无需重启;无反应则重启 dsh web);
3. 在对应 IM 里私聊机器人发 /help——首个私聊用户自动成为管理员(审计留痕);
4. 群聊:拉机器人入群,security.allowRooms 填群 id(飞书 chat_id / 钉钉 conversationId / 企微 chatid),群里 @机器人 下指令。

配置

面板可配全部常用项;完整配置见 cordis.patch.yml(每个键都有注释)。关键项:

| 键 | 说明 |
| channels | 启用的通道列表:[ilink, feishu, dingtalk, wecom] |
| feishu. / dingtalk. / wecom. | 各平台凭据 |
| security.allowContacts / allowRooms | 额外信任的用户/群(owner 始终受信) |
| push.onApproval / approvalTimeoutSec | 审批推送与超时(超时转 GUI 处理) |
| push.longOutputAsFile | 超长输出转 txt 文件(默认开) |
| reply.maxChunkBytes / rateLimitMs / maxFileMB | 分段大小 / 发送节流 / 文件上限(100MB) |

架构

微信用户 ──私聊──► ClawBot(iLink,35s 长轮询)飞书用户 ──私聊/群@──► 飞书开放平台(WS 长连接)钉钉用户 ──私聊/群@──► 钉钉开放平台(Stream 长连接)企微用户 ──私聊/群@──► 企业微信(aibot WS 长连接) ▲ 均为主动出站,零公网部署 src/host/ ├─ index.ts apply(ctx):多通道装配 + 生命周期 + /chatops/* API + 工具注册 ├─ manager.ts ChannelManager:windowKey 前缀路由(多通道并行) ├─ ilink/ 微信 iLink 通道(api / store / channel / qrimg) ├─ feishu/ 飞书通道(channel + cards:审批/进度卡) ├─ dingtalk/ 钉钉通道(Stream SDK) ├─ wecom/ 企业微信通道(aibot SDK) ├─ channel.ts [备选] wechaty 个人号通道 ├─ auth.ts 来源过滤(owner/白名单) + 窗口↔会话绑定 + 审计 ├─ bridge.ts SessionBridge:指令路由、prompt 投递、审批 answerer、文件回传 └─ src/client/ 设置页「IM 通道」面板(settings.section 插槽,主题跟随)

协议致谢

iLink / 飞书 / 钉钉 / 企微各通道的协议与 SDK 用法参考了 xmanrui/dsh-im(MIT)的实现,致谢。本插件的通道实现为独立编写。

许可证

MIT © ZhuoSir
预览分享卡片长什么样 ↓ZhuoSir/dsh-chatops
分享 · DeepSeek Harness Hub
ZhuoSir/dsh-chatops

在微信飞书里发消息,远程驱动会话并审批危险操作

这是你的仓库?认领条目

回到顶部