- DSH
- 0.1.2-rc.1
- 系统
- Windows / macOS / Linux
- 风险
- high
本页目录(14)
先查看功能、兼容性、权限和同类选择,再按本文操作。
dsh-im 4.15.0 把九种消息渠道接入 DSH,新增默认关闭的飞书分步直推、渠道标题标识,并修复文件回传与旧投递目标加载。
如果你的目标是把飞书、微信、Telegram 等消息平台安全接入 DSH 并限制远程权限,本教程会说明如何在 DeepSeek Harness(DSH)中准备、安装、配置、验证和回退 dsh-im。本文锁定作者仓库提交 e4b501377901;已复核固定提交的原始资料,未进行运行实测。
对应插件:查看 dsh-im 的功能、权限与兼容性说明。先确认它适合你的工作流,再执行安装。
新版候选复核(2026-09-12)
4.20.0 暂缓替换安装目标。 4.20.0 增加会话专属工作区;跨项目路由与重启恢复尚未验收。
群线程和私聊如何选择工作区
候选 4.20.0 新增 /conv:为当前对话设置显式工作区,清除后跟随 bot 默认;/workspace 仍管理 bot 默认。不要把修改 bot 默认理解为只影响当前群线程。
固定源码将 conversationWorkspaces 持久化,并保存切换代际;显式 Session 绑定、异步选模和旧菜单都需要围绕有效工作区核对。试验时应使用两个合成项目,验证切换后新消息不会进入旧项目,并检查写入失败和重启后的实际归属。本站没有执行这些渠道试验。
精确 npm 包 integrity 通过,本轮抽取的 334 个文本文件与固定 tag 一致(不代表独立重建编译产物)。包的兼容表仍未列 0.1.5-rc.1,这不是已证实不兼容;真实宿主和飞书、Telegram、微信等渠道仍待验收。微信错误分类与诊断改进来自候选发行说明,不把旧安装版本说成已经具备。
保留 DSH 0.1.2-rc.1 + IM 4.15.0 原安装组合和允许用户/工作区限制,不将生产 Bot 用于排障试验。
候选固定源码:证据 1(外部链接,在新标签页打开)、证据 2(外部链接,在新标签页打开)、证据 3(外部链接,在新标签页打开)、证据 4(外部链接,在新标签页打开)。以下安装步骤继续对应 4.15.0。
先选渠道,再准备账号
DSH IM 把手机消息转交给运行在电脑上的 DSH。电脑、DSH Host 和对应渠道连接需要持续运行;关掉 Host 后,手机上的 Bot 不能替它执行任务。本教程完整展开飞书扫码路径;微信与 Telegram 提供接入差异,均以 DSH 0.1.2-rc.1 + IM 4.15.0 为依据,以下“预期结果”不是本站实测。
| 渠道 | 账号与凭据 | 消息交互 | 开始前确认 |
|---|---|---|---|
| 飞书 | 能完成应用创建/授权的飞书账号;扫码创建或已有应用的 App ID + App Secret | 长连接、流式卡片、问题与审批 | 租户允许创建或安装应用;审核所申请权限;本页按扫码流程 |
| 微信 | 微信扫码绑定的腾讯 iLink Bot 会话 | 长轮询、正在输入提示、最终文本分段 | 以当前账号扫码引导是否可完成为准,不承诺所有账号可接入;这不是企业微信 |
| Telegram | 从 BotFather 获取 Bot Token | Bot API 长轮询;私聊草稿预览,平台不支持时回退文字 | 本机能访问 Bot API;兼容模式默认接受私聊,首次应切到安全模式并配置数字 User ID |
企业微信是另一条渠道,使用企业微信智能机器人的 Bot ID + Secret 与 WebSocket,不能把它填进微信 iLink 或飞书字段。飞书、Lark 同类插件也不等于本插件,安装前核对包名 @xmanrui/dsh-im。
先完成一个私聊任务,再决定是否开放群聊、上下文增强、文件回传或双向同步。工作区绑定帮助选择任务目录,但不代替 DSH 的工具与文件权限控制。
先确认是否适合你
- 分类:通知远程
- 风险等级:high
- 核验证据:source_reviewed
- 兼容性边界:4.15.0 要求 Node.js >=22.19,清单列出 DSH 0.1.2-rc.1、0.1.3-alpha.1 等 Web 组合,未列 alpha.2;本站固定 rc.1 静态审阅,未运行真实渠道或模型任务。
- 主要权限关注:需要平台凭据和远程会话访问权;逐 Bot 核对私聊/群聊白名单、特权绑定账号、命令权限与工作区。Telegram 兼容模式默认允许私聊。附件发送可读取 Harness 可读文件,插件不额外提供工作区路径隔离;管理 RPC 默认 loopback。 分步直推会发送工具参数摘录与错误片段,截断不等于脱敏;飞书群内其他 Bot 的明确 @ 可进入访问策略检查。
如果你准备在重要工作区使用,先阅读插件详情页的权限和数据流说明;“源码已审阅”或“资料已整理”都不等于安全认证。
安装前准备
本页 DSH 命令版本: 0.1.2-rc.1。4.15.0 要求 Node.js >=22.19,清单列出 DSH 0.1.2-rc.1、0.1.3-alpha.1 等 Web 组合,未列 alpha.2;本站固定 rc.1 静态审阅,未运行真实渠道或模型任务。
- 测试 Bot:只使用单个平台的测试 Bot、测试联系人和可撤销凭据。
- 隔离工作区:准备不含生产代码与秘密的独立工作区。
- 安装 Node.js 22.19、Node.js 24 或项目当前声明支持的更高版本,并确认
pnpm可用。 - 使用独立的
webProfile 和可丢弃测试工作区,不直接连接生产目录。 - 备份当前 Profile 配置,并记录安装前的
--dump-config输出。 - 核对固定来源中的外部服务、账号、运行时和平台限制。
- 需要凭据时只准备测试凭据;本页识别到的候选变量包括
DSH_IM_INTERACTION_CARDS。
安装 dsh-im
52DSH 使用目录中记录的精确安装目标,避免直接跟随可能变化的默认分支:
npx --yes @deepseek-ai/[email protected] plugin --profile web add @xmanrui/[email protected]
GitHub 源码插件如果被 pnpm 拦截构建脚本,先检查终端提示的具体包和脚本。只在 web Profile 中放行确实需要的构建项,不要全局放行未知依赖。
插件专属配置
配置目标
profiles/web:加载 dsh-im 4.15.0;管理 RPC 保持默认 loopback。DSH Web → 设置 → IM机器人:选择飞书渠道,添加 Bot,再逐 Bot 设置工作区与访问模式。
环境变量
DSH_IM_INTERACTION_CARDS(可选):设为 0 可关闭飞书交互卡片并使用纯文本流程。
固定版本安装与配置检查
证据:固定来源(外部链接,在新标签页打开)。将路径、账号和凭据占位符替换为测试值。
npx --yes @deepseek-ai/[email protected] plugin --profile web add @xmanrui/[email protected]
npx --yes @deepseek-ai/[email protected] --profile web --dump-config
安装后设置
- 安装后重启 DSH Web,进入“设置 → IM机器人”;先只接入一个飞书测试 Bot。
- 完成下方飞书路径后再启用其他渠道;上下文增强和双向同步先保持关闭。
- 模型和 Agent preset 改动只作用于新 Session;用 /new 后发送普通消息创建新会话,再检查实际模型。
飞书最小接入路径
- 准备平台账号与测试目录。 选择你能管理应用的飞书租户,准备不含密钥的可丢弃目录。没有应用创建/安装权限时,先由租户管理员按组织流程处理,不跳过平台审批。
- 进入准确入口。 重启本页版本的 DSH Web,打开“设置 → IM机器人 → 飞书”,点击“扫码接入机器人”。使用飞书扫码,核对租户、应用与权限再确认;保持设置页打开,等待新机器人的长连接就绪。
- 已有应用走另一条绑定入口。 “使用 App ID 和 App Secret 绑定飞书机器人”接收飞书开放平台中的这两个字段;不要填写 Telegram Token 或群自定义机器人的 Webhook。本页完整示例采用扫码自动创建;手动应用的消息事件与权限应按插件内置引导核对,不照搬一个公网回调 URL。
- 核对平台权限。 新建扫码流程会申请消息和卡片能力。读取用户消息内的图片/文件需要
im:message:readonly(平台显示“获取单聊、群组消息”),上传文件需要im:resource,原生命令面板涉及application:app_slash_command:read/write,交互卡片涉及card.action.trigger回调。已有应用缺项时使用 Bot 的“补全权限”或私聊/repair,看清增量申请项并完成平台要求的审批;不为文本试用额外开启群内全部消息接收。 - 限定访问。 在 Bot 的访问设置中分别检查“私聊”“群聊”,选择白名单模式;本例只允许测试私聊,群聊不新增用户。用户字段是该应用对应的“飞书 Open ID”,不能用显示名代替。绑定的 owner 账号另有特权识别,即使普通白名单为空也不代表它已被禁用。需要
/new、/stop等命令时,仅给相应测试用户命令权限。 - 绑定工作区。 在该 Bot 卡片选择测试目录;新 Bot 默认工作区来自 Host 启动目录,必须主动核对。保持上下文增强与 Session 双向同步关闭,用
/new后发送普通消息创建新 Session,避免沿用原会话目录。 - 检查连接与消息链。 等待 Bot 长连接显示就绪,再从允许账号发下方最小任务。在 DSH 中查看对应 Session、目录和任务状态,最后对照飞书回复。只出现“在线”说明连接已建立,不能证明任务或回传完成。
本机 Host 默认直接复用 DSH 内部服务,不要求开放公网端口或另配远程 Harness 地址。管理 RPC 保持 loopback;trusted-host 只复用 Host/Origin 防护,不提供用户认证。
依据:飞书设置入口与权限补全(外部链接,在新标签页打开)、访问模式字段(外部链接,在新标签页打开)及特权账号与初始化策略(外部链接,在新标签页打开)。
微信与 Telegram 的配置差异
| 项目 | 微信 iLink | Telegram |
|---|---|---|
| 入口与必需字段 | “IM机器人”的微信渠道,按二维码绑定;不填 App ID/Secret | Telegram 渠道填 BotFather 的 Bot Token |
| 首次访问约束 | 核对实际绑定账号及逐 Bot 访问设置;不沿用企业微信账号概念 | 主动启用安全模式(私聊白名单),数字 User ID 每行一个;空名单拒绝全部入站 |
| 群聊与命令 | 不把其他平台群聊/Topic 行为推导给 iLink | 安全模式忽略群聊;兼容模式群聊需提及或回复 Bot |
| 长任务与重连 | 4.15.0 另存按凭据关联的 context token,仍需平台允许回传 | 先确认 Bot API 网络可达,不用反复重新生成 Token 代替排障 |
飞书网络若依赖代理,源码长连接读取 HTTPS_PROXY(兼容小写与 HTTP_PROXY 回退),不读取 ALL_PROXY / NO_PROXY;修改后重启 Host。Telegram 代理条件与 Node 版本另见固定 README,不把两渠道代理规则混用。
飞书分步直推与新增权限
在“设置 → IM机器人 → 飞书”的对应 Bot 卡片开启“分步直推”;默认关闭,按 Bot 保存并即时应用,不需要重连。首次只在测试私聊开启,用无敏感的目录概括任务查看工具过程与最终回复。关闭后恢复原有流式卡片路径。
过程消息可能包含工具参数前 400 字符和错误片段。截断不是脱敏,不要把含凭据、客户路径或私密内容的任务用于测试。每轮最多 200 条计数过程消息,并有 250ms 最小发送间隔;达到上限仍会尝试最终回答,不代表平台必定接收。
4.15.0 的扫码新建和“补全权限”//repair 增量申请 im:message.group_at_msg.include_bot:readonly,用于接收群内其他机器人明确 @ 当前机器人的消息。仍需通过群聊访问策略和命令权限;未明确 @、自发消息与机器人私聊继续忽略。首次保持群聊关闭或严格白名单,不要为了看到过程开放全部群消息。
配置验证与成功结果
先导出配置,再启动同一版本的 DSH Web:
npx --yes @deepseek-ai/[email protected] --profile web --dump-config
npx --yes @deepseek-ai/[email protected] web
-
使用授权测试账号发送下方只读目录请求,依次对照平台消息、DSH Session 和最终回复。
期望结果:三个位置对应同一次请求,目录与 Bot 绑定一致;仅显示已连接不算任务完成。
-
在受控测试中用未列入白名单、也不是绑定特权账号的账号发送普通消息。
期望结果:请求不进入 DSH Session;若进入,立即停用 Bot 并重新检查私聊与群聊策略。
-
若确需双向同步,仅对当前 Host 的测试私聊开启,从 Web 发一条不含敏感信息的文字,再关闭。
期望结果:只有指定私聊收到同步文本;关闭后停止新增同步,不把群聊、Topic/Thread 或远程 harness 当作覆盖范围。
第一次使用
- 在可丢弃目录放入一个自己创建的 notes.txt;从允许账号发送:“只读取当前工作区第一层的文件名称与类型,用三行概括。不要递归、修改、下载、执行脚本或发送附件。”
- 记录输入时间、Bot、工作区、DSH Session、最终回复;如果出现写入或审批请求,拒绝并停止,保留错误原文后排查。
长任务、停止与双向同步
| 情况 | 4.15.0 的行为 | 你需要做什么 |
|---|---|---|
| 前台回复等待超时 | 为原路由、Session、Turn、prompt 保存补发记录,后台继续检查原任务,不重新提交请求 | 先在 DSH 看原 Session,不重复发送相同任务 |
| 原任务完成 | 尝试把终态文字送回原目标;不补发附件、问题或审批交互 | 对照 Session 完整产物,必要时单独处理附件 |
使用 /stop | 对待补发任务核对原始身份后尝试取消;Host 不支持该安全取消路径时提示人工处理 | 检查 Session 已结束;“发过 stop”不等于已停止 |
| 换绑或清理会话 | 投递前重新核对绑定,旧任务结果不会因此转发到新绑定 | 在旧 Session 核对任务是否仍运行,换绑本身不是取消任务 |
| 正常重启 Host | 保存补发记录,重启后继续检查 | 不把重启当作清空队列 |
| 网络失败或崩溃 | 有界重试;不确定是否已送达时不自动反复重发,仍有崩溃后重复投递窗口 | 对照原回复与 Session,不能依赖“恰好一次”保证 |
每条会话路由最多保留 4 条待补发记录,更多记录可能挤掉最旧项;不应把 Bot 当作可靠任务队列。补发机制依据固定版本设计与边界(外部链接,在新标签页打开)。
双向同步是另一个功能。 默认关闭;开启后会把 Web 侧用户文本和完成的助手文本发送到所选 IM 私聊。它限当前 Host 的私聊文本,不覆盖群聊、Topic/Thread、显式远程 Harness,也不等同于 IM 发起任务的正常回复。关闭同步后 Bot 仍可能接收新任务或完成旧任务。
渠道标识和文件回传怎样验证
本机 IM 会话标题可出现“飞书 · 标题”等渠道前缀,兼容的 Web 列表用渠道图标展示;不识别的页面结构保留文字。标题由 Host 追加 session/title 事件,保持原有标题来源,不等同于调用手动重命名锁定标题。显式远程 harnessBaseUrl 连接需在目标 Host 安装插件。卸载会撤销浏览器图标样式,不会自动删除已保存的标题前缀事件。
用自己创建的无敏感小文件测试 dsh_im_return_file,同时核对当前 Session、当前 Turn 和平台附件。新版优先从 snapshotEvents() 找当前回合,并保留旧 events 路径;该修复不扩大文件系统隔离能力,也不保证所有 alpha.2 组合可用。
数据、权限与凭据
**数据流:**平台文本、引用与附件 → 本机渠道 Host → 访问策略、工作区与 DSH Session → 工具及模型 Provider → 文本、审批卡片和文件返回平台。超时补发会持久化路由、Session、Turn、原始 prompt 标识;微信另存按凭据关联的 context token 缓存。 分步直推将工具参数和助手过程文本发送到飞书;渠道标识通过追加 session/title 事件持久化,浏览器图标只是展示层。
**权限关注:**需要平台凭据和远程会话访问权;逐 Bot 核对私聊/群聊白名单、特权绑定账号、命令权限与工作区。Telegram 兼容模式默认允许私聊。附件发送可读取 Harness 可读文件,插件不额外提供工作区路径隔离;管理 RPC 默认 loopback。 分步直推会发送工具参数摘录与错误片段,截断不等于脱敏;飞书群内其他 Bot 的明确 @ 可进入访问策略检查。
**数据存储:**平台保存消息;DSH 保存 Session 和凭据,插件按渠道、Bot 保存配置、工作区绑定及补发状态。默认渠道根目录在 DSH Home 的 integrations 下,例如 dsh-feishu、dsh-weixin,显式 dataDir 可改变位置。微信 context token 缓存与凭据 hash 关联,不能把状态文件当作完全无敏感信息。入站附件另有 TTL,默认 168 小时,0 为回合结束、-1 为永久;不保证清理未知旧目录或外发文件。 渠道标题前缀可进入 Session 日志,过程消息保存在飞书;插件卸载不自动撤回这些内容。
真实 Token、API Key、Cookie 和账号 ID 不应写进 Git 仓库、网页截图或公开 Issue。测试结束后撤销临时凭据。
卸载、回退与清理
停止 DSH 后,从同一个 Profile 移除包:
npx --yes @deepseek-ai/[email protected] plugin --profile web remove @xmanrui/dsh-im
- 关闭 Session 双向同步只停止 Web → IM 的新增同步,Bot 仍可接收入站消息;要停止远程任务须停用/断开该 Bot,必要时停止 DSH Host。
- 先在原会话处理 /stop 与待补发记录,核对任务确已结束,再断开 Bot。普通 Host 重启会保留补发记录;不要把重启当作取消。
- 停止 DSH 后按上方命令从同一 web Profile 移除包,重启核对 Bundle 与插件设置入口;再按实际 dataDir 定位附件、状态与缓存,备份后选择性清理。
- 到平台撤销或轮换 App Secret、Bot Token、扫码会话;核对本机凭据引用及其他 Bot 是否共用,单独处理平台留存。卸载依赖不会完成这些撤销。
- 回退时恢复升级前 Profile、锁文件、插件版本及匹配状态副本。程序和数据的处理见 更新与卸载指南。
- 分步直推关闭不撤回平台已发送的过程消息;回退到 4.13.0 前恢复匹配 Profile 与状态备份,并单独处理新增飞书授权。
按症状排查
| 症状 | 按顺序检查 | 预期现象与停止条件 |
|---|---|---|
| 完全收不到消息 | Bot 是否连接 → 发件账号/私聊群聊模式 → 平台安装与消息权限 | 允许消息进入对应 Session;身份不明时停用 Bot,不直接改开放模式 |
| 已连接但不回复 | Session 是否收到 → Provider/模型错误 → 平台回传权限与网络 | 同一请求有终态与回复;出现鉴权错误先修对应凭据 |
| 执行目录不对 | Bot 工作区 → 原 Session 绑定 → /new 后新请求 | 新任务使用测试目录;目录异常立即停止任务 |
| 等待审批 | 在 DSH 核对具体工具、路径与请求 → 飞书卡片权限/回调 → 命令权限 | 仅处理自己发起的请求;不认识的操作拒绝,不关闭全部审批 |
| 长任务一直没结果 | 原 Session 状态 → 是否进入补发 → Host 在线与当前绑定 → 平台发送错误 | 先核对原任务,不重复提交;需要结束时 /stop 后复查 |
| 更新后设置入口消失 | 固定版本组合 → 同一 Profile 的 Bundle → 重启 Host | 仍失败就恢复升级前完整备份,不通过增加权限修复 |
排查时保留脱敏错误原文、Bot 与 Session 对应关系。凭据、二维码和包含个人消息的状态文件不进入公开工单。
有过程消息却没有最终回答
先查看同一 Session 的任务终态,再查飞书发送失败与权限。长回答按富文本 JSON 字节分段,失败从失败分段恢复,另有文字降级路径;不要把看到工具消息当成最终投递成功。群聊已有话题内的回复按真实话题结构投递,“群话题回复”开关只决定普通群消息是否新建话题。
常见问题
飞书白名单为空,为什么绑定账号仍可操作?
绑定的 owner Open ID 属于特权账号,源码在普通访问策略之外识别它;空白名单不是停用 Bot。要完全停止访问,应断开 Bot 并按需撤销凭据。
机器人可以回答文本,为什么附件仍需谨慎?
文件回传对已连接 Bot 默认可用;插件不额外限制 Harness 可读的文件路径。允许用户与工作区绑定不等于文件系统沙箱,应同时核对 DSH 的工具权限与可读目录。
分步消息出现了,最终结果却没收到
核对 Session 终态和飞书投递错误;过程成功不等于最终成功,不重复提交原任务。
卸载后渠道文字前缀还在
图标样式与持久化标题事件不同;卸载不撤销已追加的 session/title,不手工删除会话日志。
安装成功但页面或命令没有出现
先运行 --dump-config 确认 Bundle 已进入 web Profile,再重启 DSH Web 并硬刷新浏览器。不要通过反复扩大权限来解决加载问题。
插件运行后没有得到预期结果
把问题缩小到本页的最小验证任务,检查作者文档要求的变量、外部服务和平台限制。保存终端错误原文,并核对当前安装目标是否仍对应本页固定提交。
作者固定资料中未识别到独立故障章节。遇到插件特有错误时,应先停止 DSH、保留日志并回退插件。
固定来源证据
以下资料是本文配置结论的依据:
继续查看:返回 dsh-im 插件详情页,重新核对兼容性、权限、同类插件和来源状态。
来源与维护信息
本文根据以下原始资料整理。版本变化后,请以官方资料和页面标注的验证日期为准。
- GitHub:xmanrui/dsh-im(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 package.json(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 bot-workspace-store.mjs(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 workspace-command.mjs(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 conversation-workspace-races.test.mjs(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 README.md(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 index.js(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 access-policy-settings.js(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 access-policy-production.mjs(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 deferred-delivery.md(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 state-store.mjs(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 session-title-prefix.mjs(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 index.mjs(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 session-channel-logos.js(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 rpc.mjs(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 plugin-config-store.mjs(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 repair-manager.mjs(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 plugin-controller.mjs(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 harness-client.mjs(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 bot-workspace-store.mjs(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 artifact.mjs(外部链接,在新标签页打开)
- GitHub:xmanrui/dsh-im 固定提交 package.json(外部链接,在新标签页打开)