D

dsh-im-connect

github.com/MichengAI/dsh-im-connect

v0.1.74 其他 可执行外部程序含混淆或编码代码发起网络请求

DSH IM Connect — 将主流即时通讯平台接入本机 DeepSeek Harness · Connect major messaging platforms to local DeepSeek Harness agents

该插件尚未翻译,显示作者原文。

分类
other
发布
2026-10-12
版本
v0.1.74

检测报告

关注度高。命中了不少能力模式,其中可能有需要留意的。逐条看下面的清单。
1高关注3需留意5一般15未命中
高关注需留意一般

能力清单

  • 可执行外部程序spawns-processes高关注2 处命中
    • lib/plugin-updater.js:1import { spawn } from 'node:child_process';
    • src/plugin-updater.ts:2import { spawn } from 'node:child_process'
    • 看它调用哪些程序。调用本机已有的工具是常见做法。
  • 含混淆或编码代码obfuscated-code需留意198 处命中
    • lib/engine/command-messages.d.ts:3readonly '\u5E8F\u53F7\u65E0\u6548\u6216\u5DF2\u8FC7\u671F\uFF0C\u672C\u6B21\u64CD\u4F5C\u672A\u6267\u884C\u3002\u8BF7\u…
    • lib/engine/command-messages.d.ts:6readonly "\u6682\u672A\u627E\u5230\u53EF\u8865\u53D1\u7684\u7ED3\u679C\uFF0C\u672C\u6B21\u672A\u53D1\u9001\uFF0C\u81EA\u…
    • lib/engine/command-messages.d.ts:7readonly "\u672A\u63D0\u4EA4\u4EFB\u52A1\uFF0C\u4E0D\u9700\u8981\u8865\u53D1": "Task was not submitted; no resend needed…
    • lib/engine/command-messages.d.ts:8readonly "\u8865\u53D1\u6B64\u524D\u4EFB\u52A1\u7684\u7ED3\u679C\uFF08\u4E0D\u4F1A\u91CD\u65B0\u6267\u884C\u4EFB\u52A1\u…
    • 混淆本身不是恶意,但公开源码里出现大段混淆值得问一句为什么。
  • 发起网络请求network需留意55 处命中
    • …annels/channel-image-download.js:139const req = https.request(url, {
    • client.js:630return fetch(API_BASE + path, request).then((r) => r.json()).then((data) => {
    • lib/channels/diagnostics.js:28const response = await fetch(url, { method: body === undefined ? 'GET' : 'POST', headers: { 'content-type': 'application…
    • lib/channels/dingtalk-card.js:153const res = await fetch(new URL('v1.0/oauth2/accessToken', API), {
    • 看请求发往哪些域名。发往作者自己的后端是常见做法。
  • 写入文件writes-files需留意46 处命中
    • lib/engine/atomic-file.js:7mkdirSync(dir, { recursive: true });
    • lib/engine/atomic-file.js:12writeFileSync(fd, data, 'utf8');
    • lib/engine/atomic-file.js:22renameSync(temp, file);
    • lib/engine/atomic-file.js:32unlinkSync(temp);
    • 看写入位置。写自己的配置目录是正常的,写系统目录不是。
  • 接触凭据或密钥credentials一般528 处命中
    • …annels/channel-image-download.js:7/** Only return fixed categories or HTTP status digits; raw SDK errors can hold secrets. */
    • …annels/channel-image-download.js:102if (next.protocol !== 'https:' || next.hostname !== current.hostname || next.username || next.password
    • …annels/channel-image-download.js:108* No ambient proxy/credentials. Same-host redirects are opt-in. IPv4-only intentionally fails closed on IPv6-only hosts.
    • …annels/channel-image-download.js:114if (url.protocol !== 'https:' || url.username || url.password || (url.port && url.port !== '443')
    • 看它读取哪些凭据、发往哪里。用于登录自己的服务是正常的。
  • 读取文件reads-files一般32 处命中
    • lib/engine/atomic-file.js:39if (!existsSync(file))
    • lib/engine/credentials.js:7const parsed = JSON.parse(readFileSync(file, 'utf8'));
    • lib/engine/deferred-delivery.js:47const parsed = JSON.parse(readFileSync(file, 'utf8'));
    • lib/engine/file-input.js:30data = await handle.readFile({ signal });
    • 读文件是绝大多数插件的正常工作方式,本身不构成顾虑。
  • 动态加载模块dynamic-import一般29 处命中
    • lib/channels/dingtalk.js:165const sdk = await import('dingtalk-stream');
    • lib/channels/feishu.js:170sdk = await (loadSdk ? loadSdk() : import('@larksuiteoapi/node-sdk'));
    • lib/channels/qr/render.js:3const QRCode = await import('qrcode');
    • lib/channels/wecom.js:18const { decryptFile } = await import('@wecom/aibot-node-sdk');
    • 动态导入本身无害,但会让依赖关系难以静态审阅。
  • 读取环境变量reads-env一般8 处命中
    • lib/index.js:35: join(process.env.DSH_HOME ?? join(homedir(), '.dsh'), 'dsh-im-connect');
    • lib/plugin-updater.js:148const env = options.env ?? process.env;
    • lib/plugin-updater.js:273cwd: target.profileDir, windowsHide: true, stdio: ['ignore', 'pipe', 'pipe'], env: { ...process.env, NO_COLOR: '1' },
    • lib/plugin-updater.js:301cwd: target.profileDir, windowsHide: true, stdio: ['ignore', 'pipe', 'pipe'], env: { ...process.env, ...manager.env, NO_…
    • 环境变量里常混有密钥。看它是否把整个 env 都读走。
  • 文中出现远程脚本地址remote-url-reference一般2 处命中
    • README.md:17[![Node.js 22 or later](https://img.shields.io/badge/Node.js-22%20or%20later-339933.svg?logo=node.js&logoColor=white)](h…
    • README.zh-CN.md:17[![Node.js 22 or later](https://img.shields.io/badge/Node.js-22%20or%20later-339933.svg?logo=node.js&logoColor=white)](h…
    • 只是文本里出现了远程脚本地址,没有看到加载它的调用。多半是文档或注释;若确实可疑,搜一下这个地址在包里的其他出现位置。
逐条扫描明细
能力标识关注度命中次数
可执行外部程序spawns-processes高关注2
含混淆或编码代码obfuscated-code需留意198
发起网络请求network需留意55
写入文件writes-files需留意46
接触凭据或密钥credentials一般528
读取文件reads-files一般32
动态加载模块dynamic-import一般29
读取环境变量reads-env一般8
文中出现远程脚本地址remote-url-reference一般2

这份报告的口径

扫描读的是包里的源码,全程不执行第三方代码。 本次读了 219 个文件,扫描于 2026-10-14。 命中次数只说明源码里出现过这类调用,不说明行为好坏——一个插件读写文件 500 次和 1 次 都会被记为「读取文件」。这是能力清单,不是信任评分,也不是安全结论: 没扫出来的能力可能只是写法没被规则覆盖。

依赖安全公告

已查询这个插件声明的全部依赖,没有匹配到已公开的安全公告。(含 DSH 框架包在内的 @deepseek-ai/* 不作查询——那是运行时自己的问题,不是插件的。)

← 返回全部插件