- 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 的电脑。
安装前至少应做到:
- 创建专用 Telegram Bot,不与其他生产机器人共用 Token。
- 使用独立 DSH Profile 和受限工作目录,不把家目录作为默认
cwd。 - 为 Telegram 会话选择只读或最小权限 preset,再按任务逐步放开。
- 保持
screenshot.enabled: false,确认确有需要后再开启。 - 使用认领流程或明确的
allowFrom用户 ID,不公开认领码。 - 明确消息、附件和模型上下文会经过 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。
如何验证安装结果
不要以“插件安装成功”作为验收。至少检查:
--dump-config中确实出现 Telegram Bundle,且没有意外配置层。- 未认领用户无法触发
/status、普通对话或 Agent 工具。 - 正确用户认领后,
/status显示预期 Session、目录、模型和权限。 cwd不能越过预定工作区;高风险命令会触发授权或被拒绝。screenshot.enabled关闭时/screenshot明确拒绝执行。- 日志、
status.json和 Web 设置页均不出现 Bot Token。 - 重启 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。
来源与维护信息
本文根据以下原始资料整理。版本变化后,请以官方资料和页面标注的验证日期为准。
- https://x.com/adamshafizullah/status/2090808427375477183
- https://github.com/ashafizullah/dsh-telegram/tree/183c53e1098ab49ee8985fa9631aa39b60a803d4
- https://www.npmjs.com/package/@ashafizullah/dsh-telegram/v/0.5.1
- https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/apps/cli/README.zh.md