DSH Telegram 插件:安装、权限与凭据风险

审计 DSH Telegram 社区插件的安装方法、机器人认领、权限控制、凭据存储、媒体能力与已知限制。

社区整理已复核原始来源
DSH
0.1.1-rc.2
风险
high

这是什么插件

@ashafizullah/dsh-telegram 是一个把 DeepSeek Harness 会话接入 Telegram 的社区插件。它可以从 Telegram 创建或恢复 Session、切换模型与工作目录、发送图片和文本文件,并在聊天中处理 Agent 的提问与授权请求。它不是 DeepSeek 官方插件,也不等同于 52DSH 的安全认证。

本文在 2026 年 8 月 22 日审阅了插件 0.5.1 的仓库、npm 元数据、中文 README 和关键权限代码,并以 DSH 0.1.1-rc.2 作为站点版本基线。编辑部尚未连接真实机器人完成端到端运行,因此当前状态是“源码已审阅、社区收录”。

项目审计结果
npm 包@ashafizullah/dsh-telegram@0.5.1
仓库与 npm 发布者npm 元数据指向 ashafizullah/dsh-telegram
许可证MIT
Node.js>=22
外部网络默认连接 https://api.telegram.org
凭据需要 Telegram Bot Token
本地能力Session 状态、工作目录、文件、可选 OCR 与截图
编辑验证未安装、未连接真实 Telegram Bot

安装前要理解的安全边界

这个插件不是简单的消息通知器。Telegram 用户发出的内容会进入 DSH Agent,而 Agent 能做什么取决于 Profile 的工具和权限预设。若 Profile 允许执行命令或写文件,获得机器人访问权的人可能间接操作运行 DSH 的电脑。

安装前至少应做到:

  1. 创建专用 Telegram Bot,不与其他生产机器人共用 Token。
  2. 使用独立 DSH Profile 和受限工作目录,不把家目录作为默认 cwd
  3. 为 Telegram 会话选择只读或最小权限 preset,再按任务逐步放开。
  4. 保持 screenshot.enabled: false,确认确有需要后再开启。
  5. 使用认领流程或明确的 allowFrom 用户 ID,不公开认领码。
  6. 明确消息、附件和模型上下文会经过 Telegram、DSH 以及所选模型 Provider。

有关 Profile、Bundle 和安装脚本的通用检查方法,先阅读DSH 插件安装指南插件目录验证标签

如何安装

下面把 DSH 版本固定为本站核验基线,便于复现。插件仍是社区项目,建议先在测试 Profile 中安装:

npx --yes @deepseek-ai/dsh@0.1.1-rc.2 \
  plugin --profile web add -w @ashafizullah/dsh-telegram@0.5.1

安装完成后,把 Bot Token 写入 DSH credentials 域,不要写进 Profile 配置或提交到 Git:

npx --yes @deepseek-ai/dsh@0.1.1-rc.2 \
  credentials set TELEGRAM_BOT_TOKEN

然后检查配置层并启动 Web Profile:

npx --yes @deepseek-ai/dsh@0.1.1-rc.2 \
  --profile web --dump-config

npx --yes @deepseek-ai/dsh@0.1.1-rc.2 web

预期结果是控制台出现一次性 /claim <码> 提示。把该命令发给自己的机器人后,首个成功认领者会成为属主。认领前机器人默认不处理其他消息。

访问控制应该怎样配置

插件提供两种入口控制方式:

  • 默认认领:每次启动产生新的认领码,第一次正确认领后持久记录属主;
  • allowFrom:显式填写允许访问的 Telegram 数字用户 ID,跳过认领流程。

访问检查发生在消息进入 Agent 之前。即便如此,也不应只依赖机器人属主身份:还要限制 Agent 权限、工作目录和工具集合。/permission 可以查看或切换当前 Telegram 会话的权限 preset,/cd 能切换工作目录,因此两者都是高风险入口。

建议首次测试保留以下策略:

allowFrom              只填自己的 Telegram 数字 ID
permissionPreset       选择只读或最小权限预设
cwd                    指向专用测试工作区
requireMentionInGroups true
screenshot.enabled     false
media.enabled          按实际需要决定

不要在公开群组中测试高权限 Profile。Telegram 用户名可以修改,允许名单应使用 /whoami 返回的数字 ID。

支持哪些操作

仓库 README 列出的常用命令包括:

命令作用主要风险
/new/sessions创建或恢复会话会话上下文可能包含敏感信息
/cd查看或切换工作目录可能扩大文件访问范围
/model/effort切换模型和思考强度费用、数据出口可能改变
/permission查看或切换权限 preset可能扩大命令与写入权限
/screenshot返回运行机器的屏幕截图可能暴露其他窗口和个人信息
/status/diag查看运行状态与故障可能透露路径、版本和部署信息
/stop取消当前 Agent 任务中止中的任务可能留下中间状态

插件支持图片和文本文件,但 README 明确说明暂不支持语音、音频和视频。没有视觉模型时可以调用本机 tesseract 做 OCR;这会额外启动本地进程。截图功能默认关闭,在 macOS 上还需要授予运行 DSH 的进程“屏幕录制”权限。

凭据、文件与网络风险

源码把 tokenRef 与真实 Token 分开,默认凭据名是 TELEGRAM_BOT_TOKEN。Web 设置页只查询凭据是否存在,不应返回 Token 明文。这个设计降低了误显示风险,但不能替代主机权限控制:能够读取 DSH 凭据存储或进程环境的本地用户仍可能取得 Token。

插件还会在 $DSH_HOME/dsh-telegram/ 保存属主、会话绑定、状态和故障信息。认领码文件被设计为仅属主可读,但仍应检查实际文件权限。图片、文本、Agent 回复和必要的回调数据会通过 Telegram Bot API;Agent 使用远程模型时,相关内容还可能发送给模型 Provider。

如何验证安装结果

不要以“插件安装成功”作为验收。至少检查:

  1. --dump-config 中确实出现 Telegram Bundle,且没有意外配置层。
  2. 未认领用户无法触发 /status、普通对话或 Agent 工具。
  3. 正确用户认领后,/status 显示预期 Session、目录、模型和权限。
  4. cwd 不能越过预定工作区;高风险命令会触发授权或被拒绝。
  5. screenshot.enabled 关闭时 /screenshot 明确拒绝执行。
  6. 日志、status.json 和 Web 设置页均不出现 Bot Token。
  7. 重启 DSH 后所有权与允许名单行为符合预期。

本站尚未完成上述端到端测试,所以不建议直接接入生产机器。

卸载与回滚

在同一个 Profile 中卸载:

npx --yes @deepseek-ai/dsh@0.1.1-rc.2 \
  plugin --profile web remove @ashafizullah/dsh-telegram

随后再次运行 --dump-config,确认 Telegram Bundle 已消失,再重启 Profile。卸载 npm 包不等于删除 Telegram Bot、撤销 Bot Token 或清理 $DSH_HOME/dsh-telegram/ 状态;这些动作应分别审核。若 Token 曾经暴露,应在 BotFather 中立即撤销并重新生成。

如果你还不熟悉 DSH 的沙箱和权限边界,先阅读DSH 权限与沙箱指南,不要从远程聊天入口测试 danger-full-access

来源与维护信息

本文根据以下原始资料整理。版本变化后,请以官方资料和页面标注的验证日期为准。