通用消息协议
66.9/100
综合分
263
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/28 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add satorijs/satori该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 6 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@root/satori(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 09:38:43
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 46 处,展示前 31 条)
- 发起网络请求adapters/kook/src/bot.ts:48
return (await this.http.get(path, { params: data, headers }))?.data - 发起网络请求adapters/kook/src/bot.ts:57
await this.request('POST', '/user-chat/delete-msg', { msg_id }) - 发起网络请求adapters/kook/src/bot.ts:59
await this.request('POST', '/message/delete', { msg_id }) - 发起网络请求adapters/kook/src/bot.ts:66
await this.request('POST', '/user-chat/update-msg', { msg_id, content }) - 发起网络请求adapters/kook/src/bot.ts:68
await this.request('POST', '/message/update', { msg_id, content }) - 发起网络请求adapters/kook/src/bot.ts:74
return adaptMessage(await this.request('GET', '/user-chat/view', { msg_id })) - 发起网络请求adapters/kook/src/message.ts:63
const result = await this.bot.request('POST', this.path, params) - 发起网络请求adapters/kook/src/message.ts:85
const { data: { url } } = await this.bot.http.post('/asset/create', payload) - 发起网络请求adapters/kook/src/message.ts:96
const { data: { url } } = await this.bot.http.post('/asset/create', payload) - 发起网络请求adapters/kook/src/ws.ts:22
const { url } = await this.bot.request('GET', '/gateway/index?compress=0') - 发起网络请求adapters/lark/src/ws.ts:66
const { code, data: { URL: url, ClientConfig: config }, msg } = await this.bot.http.post(`${baseUrl}/callback/ws/endpoint`, { - 发起网络请求adapters/mail/src/bot.ts:79
const mails = this.imap.fetch(uids, { bodies: '' }) - 发起网络请求adapters/matrix/src/types.ts:490
return (await this.bot.http.post(`/media/v3/upload?filename=${filename}`, buffer, { headers })).content_uri - 发起网络请求adapters/matrix/src/types.ts:545
return await this.bot.http.get(`/client/v3/rooms/${roomId}/event/${eventId}`) - 发起网络请求adapters/matrix/src/types.ts:554
return await this.bot.http.get(`/client/v3/profile/${userId}`) - 发起网络请求adapters/matrix/src/types.ts:567
const response = await this.bot.http.post('/client/v3/createRoom', creation) - 发起网络请求adapters/matrix/src/types.ts:572
const response = await this.bot.http.post(`/client/v3/join/${roomId}`, { reason }) - 发起网络请求adapters/matrix/src/types.ts:577
const response = await this.bot.http.post(`/client/v3/rooms/${roomId}/leave`, { reason }) - 发起网络请求adapters/slack/src/bot.ts:44
return await this.http.get(path, { params: data, headers }) - 发起网络请求adapters/slack/src/ws.ts:16
const data = await this.bot.request('POST', '/apps.connections.open', {}, {}, true) - 发起网络请求adapters/wechat-official/src/bot.ts:201
await this.http.post('/customservice/kfaccount/add', { - 发起网络请求adapters/wechat-official/src/bot.ts:210
return await this.http.get('/cgi-bin/media/get', { - 发起网络请求adapters/wechat-official/src/message.ts:55
await this.bot.http.post('/cgi-bin/message/custom/send', { - 发起网络请求adapters/wecom/src/bot.ts:140
return await this.http.get('/cgi-bin/media/get', { - 发起网络请求adapters/wecom/src/bot.ts:154
const data = await this.http.get('/cgi-bin/user/get', { - 发起网络请求adapters/wecom/src/bot.ts:200
await this.http.post('/cgi-bin/message/recall', { - 发起网络请求adapters/wecom/src/message.ts:33
const { msgid } = await this.bot.http.post('/cgi-bin/message/send', { - 发起网络请求adapters/whatsapp/src/internal.ts:23
await this.http.post(`/${selfId}/messages`, { - 发起网络请求adapters/zulip/src/message.ts:30
const { id } = await this.bot.http.post('messages', form) - 发起网络请求packages/server/src/index.ts:128
res.body = await ctx.http.get(url.href, { responseType: 'stream' }) - 发起网络请求packages/server/src/index.ts:225
ctx.http.post(webhook.url, body, {
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成Satori
通用消息协议
路线图
- 基础设施
- [x] @satorijs/core
- [x] @satorijs/element
- [x] @satorijs/satori
- [x] @satorijs/protocol
- [x] @satorijs/plugin-server
- 生态
- [x] DingTalk(钉钉)
- [x] Discord
- [x] KOOK(开黑啦)
- [x] Lark(飞书)
- [x] Line
- [x] Mail
- [x] Matrix
- [x] QQ Guild
- [x] Slack
- [x] Telegram
- [x] WhatsApp
- [x] WeCom(企业微信)
- [x] Wechat Official(微信公众号)
- [x] Zulip
示例
基本用法
import { Context } from '@satorijs/core'
import discord from '@satorijs/adapter-discord'
// create a new context
const ctx = new Context()
// configure a Discord account
ctx.plugin(discord, {
token: 'xxxxxx',
})
展开完整文档(README 剩余 1 节)
Satori
通用消息协议
路线图
- 基础设施
- [x] @satorijs/core
- [x] @satorijs/element
- [x] @satorijs/satori
- [x] @satorijs/protocol
- [x] @satorijs/plugin-server
- 生态
- [x] DingTalk(钉钉)
- [x] Discord
- [x] KOOK(开黑啦)
- [x] Lark(飞书)
- [x] Line
- [x] Mail
- [x] Matrix
- [x] QQ Guild
- [x] Slack
- [x] Telegram
- [x] WhatsApp
- [x] WeCom(企业微信)
- [x] Wechat Official(微信公众号)
- [x] Zulip
示例
基本用法
import { Context } from '@satorijs/core'
import discord from '@satorijs/adapter-discord'
// create a new context
const ctx = new Context()
// configure a Discord account
ctx.plugin(discord, {
token: 'xxxxxx',
})
// listen to message events
ctx.on('message', (session) => {
console.log(session.content)
})
// start application
await ctx.start()
指定协议
import { Context } from '@satorijs/core'
import router from '@cordisjs/plugin-server'
import telegram from '@satorijs/adapter-telegram'
// your application will be listening http://localhost:8080
// and be available at https://example.com
const ctx = new Context({
port: 8080,
selfUrl: 'https://example.com',
})
// you need a router plugin to handle http requests
ctx.plugin(router)
ctx.plugin(telegram, {
// telegram supports two ways of connection: server and polling
protocol: 'server',
path: '/telegram',
token: 'xxxxxx',
})
多个账号
// specify multiple accounts with different platforms and protocols
ctx.plugin(discord, {
token: 'xxxxxx',
})
ctx.plugin(telegram, {
protocol: 'server',
token: 'yyyyyy',
})
ctx.plugin(telegram, {
protocol: 'polling',
token: 'zzzzzz',
})
移除账号
基于 cordis。
const fork = ctx.plugin(discord, {
token: 'xxxxxx',
})
fork.dispose()预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
satorijs/satori
通用消息协议
相关插件 · 其他
模型破甲清洗YuJunZhiXue/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,148已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,266已汉化DSH
70.7