dsh-channel-gateway

DSH PLUGIN通知与集成

仓库 wowyuarm/dsh-channel-gateway · npm @wowyuarm/dsh-channel-gateway

通知与集成 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

为 DeepSeek Harness 提供频道网关,把 Telegram 与微信消息统一成一套消息契约,在传输边界完成鉴权并广播 channel/inbound 事件,消费者可经 ctx.channels.send 按原路由回复。

一句话选型结论

按资料字段整理

dsh-channel-gateway 是通知与集成类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,列出 5 项功能,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类通知与集成 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-09-27 创建于 2026-09-22
README 7.0 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add @wowyuarm/dsh-channel-gateway@0.1.4
  1. 1
    确认版本与运行环境

    兼容的 DSH 版本为 0.2.0-rc.2 等 4 个;版本不匹配时安装会报错。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本0.2.0-rc.2 等 4 个版本版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名@wowyuarm/dsh-channel-gateway可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-channel-gateway:DeepSeek Harness 的聊天渠道接入网关

  • 统一入站出站消息契约
  • Telegram 与微信适配器
  • 传输边界白名单鉴权
  • channel/inbound 事件广播
  • 按 route 原路回复

适用场景

通知

上游标签

channelcordisdeepseekdeepseek-harnessdshdsh-plugingatewaytelegramwechatweixin

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
  • L4.4_RESOLVED_ARTIFACT 安装版本已解析 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 标注了兼容的 DSH 版本(0.2.0-rc.2 等 4 个),按版本装不容易报错。
  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在通知与集成场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-channel-gateway当前 L5 · 运行验证通过 低风险 0 0.2.0-rc.2 等 4 个 有
treg L3 · 安装规范通过 低风险 4,976 未标注 无
dsh-purge 未做沙盒验证 未标注 3,412 未标注 有
dsh-im L5 · 运行验证通过 低风险 1,837 0.1.7-rc.2 等 10 个 有
dsh-aurabot-qq 未做沙盒验证 未标注 633 未标注 有
dsh-dafeiyu L5 · 运行验证通过 低风险 425 0.1.7-rc.2 等 10 个 有

仓库档案

通知与集成
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方wowyuarm仓库 dsh-channel-gateway · 默认分支 master
分类通知与集成notify
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言TypeScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-09-22 · 2026-09-27最后推送 2026-09-27
本站收录2026-09-27首次进入本站目录的时间

README 全文

7.0 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-channel-gateway

> [!IMPORTANT]
> This repository has moved. Development now happens in the
> wowyuarm/dsh-plugins monorepo, under
> packages/channel-gateway. This repo is archived and read-only; the published
> @wowyuarm/dsh-channel-gateway npm package is unchanged. File issues and PRs against the monorepo.

A channel gateway plugin for DeepSeek Harness.
A channel adapter normalizes provider traffic into one message contract, the
gateway authorizes it and announces a single channel/inbound event, and a
consumer answers through ctx.channels.send with the route the inbound message
carried.

The package covers the transport half of a chat integration: it fixes the
message contract and the seam between a provider and a consumer. What a message
means, whether it was seen before, and where it goes next are decided above it.

Contract

Five surfaces, and they are the public API — keep them small, stable and
versionable. Field-by-field reference in docs/architecture.md.

Surface Shape
Inbound InboundMessage { channel, providerMessageId, actor, place, visibility, text, attachments?, timestamp, replyTo?, raw? }
Outbound OutboundMessage { channel, route, text, attachments?, replyTo?, format? }
A transport Channel { name, capabilities, start(inbox), stop(), send(message), resolveAttachment? }
The gateway ctx.channels.register(channel) · ctx.channels.send(message) · ctx.channels.resolveAttachment(channel, attachment) · event channel/inbound
Authorization ChannelAuth { authorize(request) }, defaulting to an allowlist

Three parts of the contract exist because a consumer needs them and a provider
does not supply them in a usable form:

  • actor / place / visibility — who spoke, where, and in front of whom.
  • providerMessageId — the provider's stable id, so a consumer can
    deduplicate and accept durably.
  • place.route — an opaque, channel-minted destination. A consumer stores
    the route it saw and hands it back as OutboundMessage.route; no layer above
    the adapter composes a provider address.

Install

The package is a DSH bundle: adding it inserts the gateway service row.

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

Channel adapters are opt-in rows, because each needs its own credentials. A
profile adds the ones it wants:

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

Who may speak is the gateway row's own configuration, not the adapter's:

- id: channel-gateway
config:
allow:
- telegram:123456789   # one actor of one channel
- weixin:*             # every actor of one channel
# - '*'                # everyone

An empty allow list admits nobody.

Consuming it

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) => {
// Deduplicate on (message.channel, message.providerMessageId), accept it
// durably, route it.
void handle(message)
})
}

async function handle(message: InboundMessage) {
// ... later, answer it:
await ctx.channels.send({ channel: message.channel, route: message.place.route, text: 'ok' })
}

Adapters

Adapter Transport Entry Notes
Telegram Bot API long poll (getUpdates) @wowyuarm/dsh-channel-gateway/telegram Text and media. An attachment sends from local bytes (data), else a provider ref or url; resolveAttachment reads an inbound attachment's bytes by download. format: 'markdown' renders as Telegram HTML. DSH_TELEGRAM_TOKEN is the fallback for config.token.
Weixin WeChat iLink long poll (ilink/bot/getupdates) @wowyuarm/dsh-channel-gateway/weixin Text and media. A reply quotes the inbound context_token, which WeChat expires after roughly two minutes; the adapter refreshes a stale one before sending. format: 'markdown' renders as sanitized WeChat Markdown. The media download/upload path follows the reference iLink protocol and is not yet verified against a live account. Starts from a token it is given — the QR login flow is not implemented yet.

Both adapters honour HTTPS_PROXY/NO_PROXY (Node's own fetch does not, unless
NODE_USE_ENV_PROXY is set).

Compatibility

A DSH release can reach this package only through the two published packages it
imports: @deepseek-ai/cordis (the plugin and service API) and
@deepseek-ai/schemastery (row config). No @deepseek-ai/dsh-* package is
imported — npm run check:boundaries fails the build if one appears — so the
host coupling is exactly those two versions.

Runtime cordis schemastery Verified by
DSH 0.1.5-rc.3 (npm latest) 4.0.2 3.18.2 the 0.1.0 release: 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 the same three checks, plus a real row mount in a booted profile
Declared peer floor 4.0.1 3.18.1 the same three checks

The devDependencies pin the second row, so a checkout typechecks, tests and
builds against what the current DSH ships. The declared peers stay at
^4.0.1 / ^3.18.1: the floor admits the older DSH line, the ceiling admits
the current one, and the two ranges overlap, so one published version installs
against either without a second copy of cordis in the profile.

Re-verify against a running DSH:

npm run build
cat > /tmp/channel-gateway.yml <<'EOF'
- insert:
- id: channel-gateway
name: 'file:///absolute/path/to/dsh-channel-gateway/lib/index.js'
EOF
dsh --profile  --patch /tmp/channel-gateway.yml --help

A row that fails to import is reported on stderr as N entry did not activate
with its reason; a clean run prints no such line. To assert the service seam
rather than the import alone, add a second row to the overlay that declares
inject: ['channels'] and reads ctx.channels.send from it.

Development

npm install
npm run typecheck     # tsc, strict
npm test              # boundary guard + vitest
npm run build         # emits lib/

src/ may import only its own relative modules, Node builtins, and
@deepseek-ai/cordis / @deepseek-ai/schemastery; adapters may add undici.
npm run check:boundaries enforces exactly that, so the neutral seam cannot
quietly acquire a host dependency.

License

MIT. The Telegram transport is adapted from
dsh-telegram-channel (MIT);
the WeChat protocol shape follows
openclaw-weixin (MIT) and
nanobot (MIT).

常见问题

8 问
答案由本站依据条目字段整理,不引用上游原文
dsh-channel-gateway 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add @wowyuarm/dsh-channel-gateway@0.1.4` 即可。对应的 npm 包名是 `@wowyuarm/dsh-channel-gateway`。

dsh-channel-gateway 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-channel-gateway 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-channel-gateway 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-channel-gateway 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2、0.2.0-rc.1、0.1.7-rc.2、0.1.7-rc.1。

dsh-channel-gateway 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-channel-gateway 有哪些功能?

统一入站出站消息契约、Telegram 与微信适配器、传输边界白名单鉴权、channel/inbound 事件广播、按 route 原路回复。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

通知与集成
按星标排序,可作替代方案

treg

treg

Treg 是面向 Agent 工具的 OpenRouter,聚合 60 个提供商的 2896 个端点,按调用计费,统一令牌访问,无需注册各供

L3 · 安装规范通过 4,976 星

dsh-purge

dsh-purge

dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚

未标注验证等级 3,412 星

dsh-im

dsh-im

将IM机器人接入DeepSeek Harness,支持飞书、微信、钉钉等九种渠道,通过扫码或凭据配置,统一管理多机器人连接。

L5 · 运行验证通过 1,837 星

dsh-aurabot-qq

dsh-aurabot-qq

让 DeepSeek Harness 里的 AI 以「大肥鱼」人格住进 QQ,通过 OneBot v11 网关聊天、发表情语音、写空间日记并

未标注验证等级 633 星

dsh-dafeiyu

dsh-dafeiyu

DSH 大肥鱼是一款由 DeepSeek Harness 真实工作状态驱动的桌面伴侣插件,以始终置顶的透明窗口实时展示 Agent 的思考、

L5 · 运行验证通过 425 星

dsh-trading

dsh-trading

L3 · 安装规范通过 235 星

wowyuarm 的其它插件

2 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。