mirror of
https://github.com/hansjone/dsh-im-ops.git
synced 2026-10-09 03:03:24 +08:00
95 lines
4.9 KiB
Markdown
95 lines
4.9 KiB
Markdown
# dsh-im
|
||
|
||
## 中文
|
||
|
||
通过扫码把 IM 机器人接入 DeepSeek Harness。一个插件、一个设置入口,统一管理飞书、微信和钉钉机器人。
|
||
|
||
> GitHub 简介:通过扫码把IM机器人接入DeepSeek Harness(支持飞书、微信、钉钉等)。
|
||
|
||
## 界面
|
||
|
||

|
||
|
||
## 当前内置渠道
|
||
|
||
- 飞书:扫码创建并绑定机器人,使用长连接收发消息;
|
||
- 微信:扫码绑定微信机器人,使用腾讯 iLink 长轮询收发消息;
|
||
- 钉钉:扫码创建并授权机器人,使用钉钉 Stream 长连接收消息,并通过 AI Card 流式显示 Harness 回答。
|
||
|
||
其他 IM 平台可继续按同一渠道适配器结构接入。
|
||
|
||
## 安装
|
||
|
||
```sh
|
||
npx -y github:xmanrui/dsh-im install
|
||
```
|
||
|
||
重启 `dsh web`,然后打开「设置 → 插件 → IM机器人」。安装器会用 `dsh-im` 替换 profile 中直接安装的 `dsh-feishu`、`dsh-weixin` 和 `dsh-dingtalk`,但不删除任何渠道数据;原有渠道凭据和扫码绑定会继续使用。
|
||
|
||
钉钉接入时,请使用已加入企业/组织且有权创建机器人的钉钉账号扫描页面二维码,再在钉钉授权页点击「一键创建新机器人」。若提示“该账号还未加入组织”,请先创建组织或换用已加入组织的账号后重新扫码。钉钉当前可能在该官方授权页显示 OpenClaw 品牌;扫码后的机器人连接、凭据和消息均由 DeepSeek Harness 管理。插件不设置本机二次批准流程,钉钉中的机器人可见范围就是入站访问范围,请只开放给信任的组织、群或成员。
|
||
|
||
## 设计
|
||
|
||
- Harness 中只注册一个「IM机器人」设置页;
|
||
- 飞书、微信和钉钉的 Host、客户端与运行时源码都在本仓库维护,不依赖外部 `dsh-feishu`、`dsh-weixin` 或 `dsh-dingtalk` 插件;
|
||
- 左侧使用渠道 Logo 切换微信、飞书和钉钉,不使用启用/停用开关;
|
||
- 三个渠道保持独立的 RPC、凭据、连接监督和会话映射;
|
||
- 浏览器只获得二维码和脱敏状态,不获得 App Secret、`bot_token`、钉钉 `client_secret` 或原始 staff ID。
|
||
|
||
## 本地开发
|
||
|
||
```sh
|
||
npm install
|
||
npm run check
|
||
node bin/dsh-im.mjs install --source .
|
||
```
|
||
|
||
`npm run check` 运行单元测试、构建 Host/Client 产物,并验证发布包不包含凭据或独立渠道设置页注册。
|
||
|
||
---
|
||
|
||
## English
|
||
|
||
Connect IM bots to DeepSeek Harness by scanning a QR code. One plugin and one settings entry provide unified management for Feishu, WeChat, and DingTalk bots.
|
||
|
||
> GitHub description: Connect IM bots to DeepSeek Harness by scanning a QR code (supports Feishu, WeChat, DingTalk, and more).
|
||
|
||
## Interface
|
||
|
||

|
||
|
||
## Built-in channels
|
||
|
||
- Feishu: create and bind a bot by scanning a QR code, then send and receive messages over a persistent connection.
|
||
- WeChat: bind a WeChat bot by scanning a QR code, then send and receive messages through Tencent iLink long polling.
|
||
- DingTalk: create and authorize a bot by scanning a QR code, receive messages through DingTalk Stream, and stream Harness replies through AI Cards.
|
||
|
||
Other IM platforms can be added through the same channel-adapter structure.
|
||
|
||
## Installation
|
||
|
||
```sh
|
||
npx -y github:xmanrui/dsh-im install
|
||
```
|
||
|
||
Restart `dsh web`, then open **Settings → Plugins → IM Bot**. The installer replaces directly installed `dsh-feishu`, `dsh-weixin`, and `dsh-dingtalk` entries in the profile with `dsh-im` without deleting channel data.
|
||
|
||
For DingTalk, scan with an account that belongs to an enterprise or organization and can create bots, then choose **Create a new bot** on the authorization page. If DingTalk reports that the account has not joined an organization, create one or switch to an account that has, then scan again. That DingTalk-hosted page may currently display OpenClaw branding; the resulting connection, credentials, and messages are managed by DeepSeek Harness. There is no second local sender-approval flow: the bot's DingTalk visibility is its inbound access scope, so restrict it to trusted organizations, groups, or members.
|
||
|
||
## Design
|
||
|
||
- Registers a single **IM Bot** settings page in Harness.
|
||
- Maintains the Feishu, WeChat, and DingTalk Host, client, and runtime sources in this repository without external `dsh-feishu`, `dsh-weixin`, or `dsh-dingtalk` plugin dependencies.
|
||
- Uses channel logos for WeChat, Feishu, and DingTalk navigation without enable/disable switches.
|
||
- Keeps RPC endpoints, credentials, connection supervision, and session mappings isolated by channel.
|
||
- Sends only QR codes and redacted status data to the browser, never App Secrets, `bot_token`, DingTalk `client_secret`, or raw staff IDs.
|
||
|
||
## Local development
|
||
|
||
```sh
|
||
npm install
|
||
npm run check
|
||
node bin/dsh-im.mjs install --source .
|
||
```
|
||
|
||
`npm run check` runs unit tests, builds the Host and Client artifacts, and verifies that the published package contains neither credentials nor standalone channel settings-page registrations.
|