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

渠道网关 wowyuarm/dsh-channel-gateway

DeepSeek 客户端
wowyuarm39 天前有提交已提供中文文档扫描:未发现敏感能力兼容 / 相关生态

统一接入 Telegram 与微信并鉴权分发消息

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

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/wowyuarm/dsh-channel-gateway.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 39 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

发起外部网络请求
查看扫描证据(共 2 处,展示前 2 条)
  • 发起网络请求
    src/adapters/http.ts:28
    const agent = new EnvHttpProxyAgent()
  • 发起网络请求
    src/adapters/http.ts:30
    undiciFetch(input as string | URL, {
扫描于 2026/11/2(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

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

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

功能亮点

  • 归一消息契约
  • 传输边界鉴权

为 DeepSeek Harness 提供频道网关:Telegram 和微信适配器把各服务商的流量归一成同一份消息契约,网关在传输边界完成鉴权,任意消费者按消息携带的路由作答。

README

由 DeepSeek 最新模型翻译生成
dsh-channel-gateway DeepSeek Harness 的 channel 网关插件:适配器把各聊天平台的消息归一成同一套消息契约,网关完成鉴权并分发一个 channel/inbound 事件,消费方用入站消息携带的 route 通过 ctx.channels.send 回复。 本包覆盖聊天接入的传输层:它固定消息契约,以及 provider 与消费方之间的接缝。 一条消息意味着什么、是否见过、下一步去哪,都由上层决定。 契约 五个面就是公开 API,保持小、稳、可版本化。逐字段含义见 docs/architecture.md。 | 面 | 形状 | | 入站 | InboundMessage { channel, providerMessageId, actor, place, visibility, text, attachments?, timestamp, replyTo?, raw? } | | 出站 | OutboundMessage { channel, route, text, attachments?, replyTo?, format? } | | 传输 | Channel { name, capabilities, start(inbox), stop(), send(message), resolveAttachment?
展开完整文档(README 剩余 1 节)
dsh-channel-gateway

DeepSeek Harness 的 channel 网关插件:适配器把各聊天平台的消息归一成同一套消息契约,网关完成鉴权并分发一个 channel/inbound 事件,消费方用入站消息携带的 route 通过 ctx.channels.send 回复。

本包覆盖聊天接入的传输层:它固定消息契约,以及 provider 与消费方之间的接缝。
一条消息意味着什么、是否见过、下一步去哪,都由上层决定。

契约

五个面就是公开 API,保持小、稳、可版本化。逐字段含义见 docs/architecture.md。

| 面 | 形状 |
| 入站 | InboundMessage { channel, providerMessageId, actor, place, visibility, text, attachments?, timestamp, replyTo?, raw? } |
| 出站 | OutboundMessage { channel, route, text, attachments?, replyTo?, format? } |
| 传输 | Channel { name, capabilities, start(inbox), stop(), send(message), resolveAttachment? } |
| 网关 | ctx.channels.register(channel) · ctx.channels.send(message) · ctx.channels.resolveAttachment(channel, attachment) · 事件 channel/inbound |
| 鉴权 | ChannelAuth { authorize(request) },默认 allowlist |

契约中有三处是消费方需要、而 provider 给不出可用形态的:

- actor / place / visibility —— 谁说的、在哪、当着谁。
- providerMessageId —— provider 的稳定 id,供消费方去重与持久接受。
- place.route —— 由 channel 构造的 opaque 目的地:消费方存下见过的 route、作为 OutboundMessage.route 原样交回;适配器之上没有任何一层拼 provider 地址。

安装

本包是一个 DSH bundle,安装即插入 gateway service 行:

dsh plugin add @wowyuarm/dsh-channel-gateway --profile

适配器是可选行(各自需要凭据),由 profile 自己加:

- insert:
- id: channel-telegram
name: '@wowyuarm/dsh-channel-gateway/telegram'
config: { token: '' }
- id: channel-weixin
name: '@wowyuarm/dsh-channel-gateway/weixin'
config: { token: '' }

「谁可以说话」是 gateway 那一行的配置,不是适配器的:

- id: channel-gateway
config:
allow:
- telegram:123456789 # 某 channel 的某个 actor
- weixin:* # 某 channel 的所有 actor
- '' # 所有人

allow 为空即谁都不放行。

消费

import type { Context } from '@deepseek-ai/cordis'
import type {} from '@wowyuarm/dsh-channel-gateway'

export const name = 'my-ingress'
export const inject = ['channels']

export function apply(ctx: Context) {
ctx.on('channel/inbound', (message) => {
// 按 (message.channel, message.providerMessageId) 去重、持久接受、路由。
void handle(message)
})
}

适配器

| 适配器 | 传输 | 入口 | 说明 |
| Telegram | Bot API 长轮询(getUpdates) | @wowyuarm/dsh-channel-gateway/telegram | 文本与媒体。附件优先用本地字节(data)上传,否则用 provider ref 或 URL;resolveAttachment 通过下载取回入站附件的字节。format: 'markdown' 渲染为 Telegram HTML。config.token 缺省回落到 DSH_TELEGRAM_TOKEN。 |
| 微信 | iLink 长轮询(ilink/bot/getupdates) | @wowyuarm/dsh-channel-gateway/weixin | 文本与媒体。回复要带上入站消息的 context_token,微信侧约两分钟后过期,发送前会刷新已过期的 token。format: 'markdown' 渲染为清洗后的微信 Markdown。媒体的上传/下载按 iLink 参考协议实现,尚未在真实账号上验证。需要一个已获得的 token——扫码登录流程尚未实现。 |

两个适配器都尊重 HTTPS_PROXY/NO_PROXY(Node 自带 fetch 默认不读这两个变量)。

兼容性

DSH 的版本变化只可能经由本包 import 的两个已发布包传导到此处:@deepseek-ai/cordis (插件与 service API)和 @deepseek-ai/schemastery(行配置)。本包不 import 任何 @deepseek-ai/dsh- 包——一旦出现,npm run check:boundaries 直接让构建失败——所以宿主耦合就是这两个版本。

| 运行时 | cordis | schemastery | 验证方式 |
| DSH 0.1.5-rc.3(npm latest) | 4.0.2 | 3.18.2 | 0.1.0 发布时:npm run typecheck、npm test、npm run build |
| DSH 0.1.7-rc.1 · 0.1.7-rc.2(npm next) | 4.0.4 | 3.18.4 | 同上三项,外加在真实 profile 里装载该行 |
| 声明的 peer 下界 | 4.0.1 | 3.18.1 | 同上三项 |

devDependencies 钉住第二行,所以检出后的 typecheck/测试/构建跑的就是当前 DSH 实际装载的版本。
peer 区间保持 ^4.0.1 / ^3.18.1:下界容纳旧 DSH 线,上界容纳当前线,两者有交集,因此同一个已发布版本对两条线都能安装,而不会在 profile 里解析出第二份 cordis。

针对正在运行的 DSH 复验:

npm run build
cat > /tmp/channel-gateway.yml --patch /tmp/channel-gateway.yml --help

装载失败的行会在 stderr 报 N entry did not activate 并给出原因;干净运行不会打印这一行。
若要断言 service 接缝而不只是 import,可在 overlay 里再加一行声明 inject: ['channels'] 并从中读取 ctx.channels.send。

开发

npm install
npm run typecheck # tsc,strict
npm test # 边界守卫 + vitest
npm run build # 产出 lib/

src/ 只允许 import 自己的相对模块、Node 内置模块,以及 @deepseek-ai/cordis / @deepseek-ai/schemastery;适配器可额外使用 undici。npm run check:boundaries 强制这条线,避免中立层悄悄长出宿主依赖。

许可

MIT。Telegram 传输改编自 dsh-telegram-channel(MIT);微信协议形状参考 openclaw-weixin(MIT)与 nanobot(MIT)。
预览分享卡片长什么样 ↓wowyuarm/dsh-channel-gateway
分享 · DeepSeek Harness Hub
wowyuarm/dsh-channel-gateway

统一接入 Telegram 与微信并鉴权分发消息

回到顶部