dsh-im
xmanrui
通过扫码或机器人凭据把IM机器人接入DeepSeek Harness(支持飞书、微信、钉钉、企业微信、QQ、Slack、Telegram、Discord和WhatsApp)。 Connect IM bots to DeepSeek Harness via QR code or credentials (9 channels).
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:wsz987/dsh-channels
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
将微信、QQ、钉钉、飞书和 Telegram 接入 DeepSeek Harness
多渠道集成,统一配置,并在各平台与 Agent 对话
支持图片与文件收发,Agent 可直接读取 PDF、DOCX、XLSX 和文本内容
English | 简体中文
本项目是社区维护的 DeepSeek Harness 渠道扩展,不是 DeepSeek Harness 或各消息平台的官方项目。项目参考各平台面向 OpenClaw 提供的渠道接入方案,结合官方 SDK / API 适配到 DeepSeek Harness;运行时不依赖 OpenClaw。
接入后,在 Harness Web“设置 → 渠道”面板统一配置与扫码授权,并在各平台对话框中直接与 Agent 对话(图片来源:docs/ScreenShot):
Harness Web · 渠道设置与 Telegram 接入示例(图片与文件收发、附件内容读取)
各平台对话框
| 渠道 | 文本 | 图片 | 文件 | 流式回复 | 状态 |
|---|---|---|---|---|---|
| 微信 | 支持 | 收发 | 入站读取 | - | ✅ |
| 支持 | 收发 | 收发 | 支持 | ✅ | |
| 钉钉 | 支持 | 收发 | 收发 | 支持 | ✅ |
| 飞书 | 支持 | 收发 | 收发 | 支持 | ✅ |
| Telegram | 支持 | 收发 | 收发 | 支持 | ✅ |
npx @deepseek-ai/dsh 可运行,且 Harness Web 普通会话可正常对话。0.1.5-rc.2 与 Node 22.19+(版本对照见兼容矩阵)。Workspace Write;仅在确需访问 Workspace 外文件且信任当前任务时启用 Full access。# 安装稳定版 bundle
npx @deepseek-ai/dsh plugin --profile web add -w @wsz987/dsh-channels@latest
# 检查 bundle 是否合并到 profile
npx @deepseek-ai/dsh --profile web --dump-config
# 启动 Harness Web
npx @deepseek-ai/dsh web
安装完成后,在 Harness Web 的“设置 → 渠道”中配置或登录需要使用的渠道,并完成“安全访问”设置。
安装、更新和卸载时请保留 -w 参数。插件需与 Harness 版本匹配,升级时先升 Harness,再更新插件:
# 升级 Harness(当前基线在 npm 的 next 标签)
npm i -g @deepseek-ai/dsh@next
# 同一版本线内更新插件
npx @deepseek-ai/dsh plugin --profile web update -w @wsz987/dsh-channels
# 跨版本线升级:用 add 重装
npx @deepseek-ai/dsh plugin --profile web add -w @wsz987/dsh-channels@latest
# 卸载
npx @deepseek-ai/dsh plugin --profile web remove -w @wsz987/dsh-channels
各版本要求的 Harness 见兼容矩阵。
| 渠道 | 必要信息 | 登录方式 |
|---|---|---|
| 微信 | 无 | 扫码登录,凭据自动持久化 |
| AppID、AppSecret | QQ 开放平台创建机器人 | |
| 钉钉 | clientId、clientSecret(可选) | 扫码或在钉钉开放平台创建应用 |
| 飞书 | AppId、AppSecret | 在飞书开放平台创建应用,或扫码创建智能体 |
| Telegram | Bot Token | 在 @BotFather 创建机器人并填写 Token |
Telegram:需 Bot API 10.2+;只支持
getUpdates长轮询,启动时会调用deleteWebhook移除该 Bot 已配置的 webhook,不要让同一 Bot 同时承担其他 webhook 消费者。
在 设置 → 渠道 → 安全访问 确认谁可以通过 Bot 使用本机 Agent。默认不会把「能给 Bot 发消息的人」当作已授权用户。
未完成确认时,渠道可能显示已连接,但消息不会进入 Agent。
任意渠道会话内可直接发斜杠指令,由 Harness 官方命令系统解析执行:
部分指令暂不支持在群聊中使用,具体可用范围以当前渠道和会话为准。
| 指令 | 说明 |
|---|---|
/stop |
立即终止当前任务(最高优先级:不等渠道排队消息,直接取消当前 Agent) |
/new |
开启全新会话(遇到 bug 可以尝试使用) |
/help [command] |
查看当前会话实际生效的命令,或单个命令的用法 |
/status |
查看当前 Session / Agent / 模型状态 |
/version |
查看当前 bundle 版本、Harness 兼容基线与新版本提示 |
/models [provider] |
查看 Harness 当前注册的模型 Provider 及其模型 |
/model [<provider> <model> [<reasoningEffort>]] |
查看或切换当前会话模型 |
/mirror [on\|off] |
开关镜像模式:开启后,在 Web / CLI 发起的回复也会同步发送到本会话(默认关闭,状态持久化) |
/bind <会话ID> [confirm] |
把本对话重绑到一个已存在的会话(先解析并列出影响,确认后加 confirm 执行) |
/help 会列出当前可用的全部指令(含宿主加载的官方插件指令);未识别的斜杠指令直接提示「未知命令」,不会发给模型。/model 示例/model # 查看当前会话解析到的模型
/model deepseek deepseek-chat
/model openai gpt-5.6 high # 指定 reasoning effort
/model切换当前会话,并同步写入 Harness 的全局默认模型,供后续新会话使用。
默认已按「渠道 / 账号」自动隔离各渠道会话的文件,无需配置。如需复用 Harness 启动目录或关闭隔离,编辑 $DSH_HOME/profiles/web/cordis.patch.yml:
- id: channels-harness
name: '@wsz987/dsh-channels/harness'
inject: [channels, agents, agentDefaultModel, agentPresets, llm, commands]
config:
workspace:
mode: channel-account # channel-account(默认)| host-cwd | disabled
autoCreate: true
git clone https://github.com/wsz987/dsh-channels.git
cd dsh-channels
pnpm install
pnpm build
pnpm channels
pnpm web:debug
pnpm channels 可指定渠道,例如 pnpm channels weixin qq。pnpm channels:clean。提交前运行完整门禁:
pnpm ci:check
packages/*/README.md(每个包的安装、配置、开发说明)参考主流开源项目(Koishi / Wechaty 风格)的分层约定:适配器层零侵入核心,核心层不感知平台。
| 目录 | 职责 |
|---|---|
packages/channels |
对外 bundle @wsz987/dsh-channels(聚合 patch) |
packages/channel-core |
Channel Contract:类型 + ctx.channels Service + defineChannelAdapter |
packages/channel-harness |
渠道 ↔ Harness 桥;只保留可选 ChannelAttachmentProvider 端口(旧名 ChannelFileProvider 为兼容别名) |
packages/channel-files |
Generic Attachment compatibility backend:会话隔离存储、legacy 兼容解析、read_channel_attachment 兼容工具 |
packages/channel-control |
控制面:配置 / 凭据 / 扫码授权 / 运行时生命周期 |
packages/channel-{weixin,qq,dingtalk,lark,telegram} |
五个内置渠道适配器 |
packages/channel-{compat,testkit,verify,web} |
契约验证 / 测试工具 / Web 可视化 |
templates/channel-adapter |
新渠道脚手架 |
适配器只需实现 ChannelAdapter 契约,核心自动完成注册 / 挂载 / 回执 / 健康检查:
import { defineChannelAdapter } from '@wsz987/channel-core';
export default defineChannelAdapter({
id: 'my-channel',
capabilities: {
text: true, image: false, file: false,
audio: false, video: false, markdown: false,
cards: false, reactions: false, threads: false,
streaming: 'buffered', // native | edit | buffered
},
async start(ctx) { /* 连接平台、ctx.emit('message', ...) */ },
async stop() { /* 幂等清理 */ },
async send(target, message) { /* 发送 */ },
// 可选:createReply 流式 / beginAuth+pollAuth 扫码 / getHealth 健康
});
三条红线(详见 docs/adapter-authoring.md):
capabilities 协商处理ctx.agents...)MessagePart,禁止直塞给模型契约表达不了的需求 → 上报 contract gap,禁止改 channel-core / channel-harness。
templates/channel-adapter 为 packages/channel-<name>,实现 defineChannelAdapter(含 config / transport / mapper)packages/channels/cordis.patch.yml 加一行(pnpm channels 自动识别新渠道)pnpm build && pnpm typecheck && pnpm testpnpm verify packages/channel-<name> --test 跑契约验证(fixtures + manifest + 测试套件)指令以 factory 形式放在 packages/channel-harness/src/commands/,加入 commandFactories 数组即随 Agent 自动注册(官方 @deepseek-ai/dsh-commands 格式,无需改 bridge):
// packages/channel-harness/src/commands/reset.ts
export function createResetCommand(deps: ChannelCommandDependencies): CommandDefinition {
return {
name: 'reset',
description: 'Reset the current session',
async handler(invocation) {
if (invocation.rawInput.trim().length > 0) return { kind: 'error', text: '用法:/reset' };
if (invocation.agent.status !== 'idle') return { kind: 'error', text: '当前会话仍在运行,请稍后再试。' };
// ...调用 deps 提供的 bridge 能力
return { kind: 'success', text: '已重置会话。' };
},
};
}
commandFactories 是唯一注册点:['createNewCommand', createResetCommand]ChannelCommandDependencies 加一个方法(平台无关),bridge 侧实现即可feat(scope): ... / fix(scope): ... / docs: ...),scope 用包名(如 channel-qq)pnpm changeset 记录变更 → CI 合入后 pnpm release(Changesets 自动发版,见 docs/release.md)本项目基于以下开源项目:
@deepseek-ai/*)@dingtalk-real-ai/dingtalk-connector)@tencent-connect/openclaw-qqbot)@larksuite/openclaw-lark)@tencent-weixin/openclaw-weixin)CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: feishu、telegram、weixin。