在 Telegram 里收发消息、图片并切换模型
35.1/100
综合分
0
GitHub 星标
297
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-telegramnpm 源 · dsh-telegram 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · vision
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 76 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-telegram @ 0.2.0
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/31 17:44:22
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件读取剪贴板或密钥环境变量
查看扫描证据(共 7 处,展示前 7 条)
- 读取密钥环境变量lib/index.js:656
const fromEnv = process.env.TELEGRAM_BOT_TOKEN; - 读取本地文件lib/bindings.js:35
const raw = await readFile(this.file, 'utf8'); - 写入本地文件lib/bindings.js:118
await mkdir(path.dirname(this.file), { recursive: true }); - 写入本地文件lib/bindings.js:120
await writeFile(temp, payload, 'utf8'); - 写入本地文件lib/bindings.js:121
await rename(temp, this.file); - 读取本地文件lib/media.js:129
const info = await stat(absolute); - 读取本地文件lib/media.js:131
const data = await readFile(absolute);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 收发消息与图片
- 内联键盘提问
- 聊天内切换模型
DeepSeek Harness 的 Telegram 频道——支持富文本表格、双向图片、内联键盘提问、聊天内切换模型
最近更新
在 GitHub 查看全部 →v0.2.02026-08-18
Telegram 会话里提出的问题,现在会在 Telegram 里回答。
宿主在整个进程范围内只允许一个用户问题服务商,而 Web 桥接在 web 配置档里先占用了它,于是从 Telegram 会话提出的问题被浏览器回答,机器人看起来在回合中途停住了。
现在这个频道在原有服务商之上装了一个路由器:绑定到聊天的会话拿到内联键盘,其他会话照旧走到浏览器。把 routeQuestions 设为 false 可恢复旧行为。
这共用了一个宿主视为独占的槽位,所以每一步都安全失败——先确认字段可写、原有服务商可识别,再动任何东西;无法解析的会话全部交给原有服务商;原服务商的拒绝原样透传;销毁时恢复它。将来某个 DSH 把这个字段设为私有,代价是失去这个功能,而不是启动失败。
同时补上了内联键盘流程本身的首批测试:共 133 个测试。
v0.1.12026-08-18
修复启动竞态,此前它可能悄悄让设置卡片失效。registerSettings 在 apply 里同步读取 ctx.get('settings'),而只要提供该服务的 fiber 尚未激活,cordis 就返回 undefined。在稍后才启动设置服务的组合里,通道会丢掉设置卡片,/start 也无法再记录 owner,而且没有任何地方说明原因。现在改为从 ctx.inject(['settings'], ...) 注册,与所有官方插件一致。settings 仍刻意不放进插件自己的 inject 列表,这样即使组合里没有设置服务,通道也能按入口配置运行。112 项测试。
v0.1.02026-08-18
首个发布版本。
安装:
dsh plugin --profile web add dsh-telegram
· 通过 sendRichMessage 发送富表格和列表,背后有 HTML 兜底
· 图片双向收发:收到的照片能传给模型,发出的文件能上传
· 问题以行内键盘呈现
· /model、/preset、/mode、/status、/stop、/compact
· 首次 /start 认领未认领的机器人并关闭允许列表
· 设置卡片带 token 输入框;支持越南语或英语
已在 DSH 0.1.0-rc.7 上用真实机器人验证。111 项测试。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-telegram
npm
一个用于 DeepSeek Harness 的 Telegram 频道。
编写此插件是为了修复通用频道桥接的四个具体故障:
| 问题 | 原因 | 修复 |
| 粗体、链接和表格被渲染为字面 markdown | 从未设置 parse_mode | Markdown 被编译为 Telegram 的富文本块——真正的表格和列表——背后还有一条 HTML 路径 |
| 智能体无法发送图片 | 回复路径始终只传递 { text } | 回复中的文件引用会变成真正的 sendPhoto / sendDocument 上传 |
| 问题没有答案按钮 | 未注册 UserQuestionProvider | 问题会渲染为内联键盘,支持多选和自由文本答案 |
| 无法从聊天中更改模型 | 只有 /new 存在 | /model、/preset、/mode、/status、/stop、/compact |
状态:早期。 已在 DSH 0.1.0-rc.7 上针对一个实时机器人进行了端到端验证,但尚未经过其他人测试,也未针对其他 DSH 版本测试。请预期 0.1.0 版本的粗糙边缘。
展开完整文档(README 剩余 1 节)
dsh-telegram
npm
一个用于 DeepSeek Harness 的 Telegram 频道。
编写此插件是为了修复通用频道桥接的四个具体故障:
| 问题 | 原因 | 修复 |
| 粗体、链接和表格被渲染为字面 markdown | 从未设置 parse_mode | Markdown 被编译为 Telegram 的富文本块——真正的表格和列表——背后还有一条 HTML 路径 |
| 智能体无法发送图片 | 回复路径始终只传递 { text } | 回复中的文件引用会变成真正的 sendPhoto / sendDocument 上传 |
| 问题没有答案按钮 | 未注册 UserQuestionProvider | 问题会渲染为内联键盘,支持多选和自由文本答案 |
| 无法从聊天中更改模型 | 只有 /new 存在 | /model、/preset、/mode、/status、/stop、/compact |
状态:早期。 已在 DSH 0.1.0-rc.7 上针对一个实时机器人进行了端到端验证,但尚未经过其他人测试,也未针对其他 DSH 版本测试。请预期 0.1.0 版本的粗糙边缘。
安装
dsh plugin --profile web add dsh-telegram
dsh plugin 会转发到配置文件目录中的 pnpm,因此上述已发布的包、
git URL(github:Gum97/dsh-telegram)或本地路径
(file:../dsh-telegram)都可以使用。
然后将该 bundle 添加到配置文件的 package.json 中:
{
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-telegram"]
}
}
}
存储机器人令牌——它永远不会从插件配置中读取:
$DSH_HOME/.credentials.yaml
TELEGRAM_BOT_TOKEN: "123456:ABC-DEF..."
或者在配置文件运行后,将其粘贴到 Settings → Plugins → Telegram 中。
设置页面
该插件注册了 telegram 设置命名空间,并附带一个以它为键的浏览器卡片,因此机器人令牌、允许用户列表、工作目录和显示开关都可以在 Settings → Plugins 中编辑,而无需触碰文件。
有两个行为值得了解:
- 令牌不会存储在设置文档中。 机密会从每个网络响应中剥离,因此卡片只能报告是否配置了令牌,而永远无法显示令牌。它通过凭据域写入,空白字段会保留已存储的令牌不变。
- 并非每项更改都会实时生效。 允许用户列表和显示开关会在下一条消息时生效。
令牌引用、工作目录和开/关开关在频道启动时读取,因此它们会在 DSH 重启后生效——卡片会在你保存前说明这一点,日志会在保存后重复说明。
在配置文件的 cordis.patch.yml 中固定的值会成为该命名空间的 base 层,因此部署时的选择会一直保留,直到用户有意覆盖它,并且字段上的 Reset 会将其恢复为该值。
从源码构建 Host 那一半是纯 ESM JavaScript,按原样运行。浏览器那一半是唯一的构建步骤,因为 DSH 的页面加载器接收的是注册的 CJS 工厂,而不是 ES 模块:
npm install
npm run build:client # emits lib/client.js
npm test
prepublishOnly 会同时运行这两者,因此发布的 tarball 始终携带与其源码匹配的 bundle。React 和 DSH 客户端包保持为外部 require 调用,由页面解析——打包 React 会让卡片拥有第二个 React 实例,并在运行时破坏其 hooks。
上游的 clientBundle 构建预设未发布,因此这里的 tsdown.client.ts 复现了它的契约。这是仓库外插件故事中的一个已知缺口,记录在 dsh-client-ui-settings-plugins 自己的 README 中。
命令
| 命令 | 效果 |
| /start | 认领一个未被认领的 bot(见下文) |
| /new | 为此聊天启动一个新会话 |
| /model | 从按钮中选择提供商/模型,或使用 /model provider/model |
| /preset | 选择下一个会话使用的 agent 预设 |
| /mode | 设置沙箱模式(read-only、workspace-write、danger-full-access) |
| /status | 会话 id、模型、预设、沙箱模式、工作目录 |
| /stop | 取消正在运行的回合 |
| /compact | 压缩对话历史 |
| /help | 列出命令 |
谁可以使用该 bot
由 allowedUsers 决定,空列表意味着该 bot 处于未被认领状态,而不是对所有人开放。
第一个向未被认领的 bot 发送 /start 的人会被记录为其所有者,门随后在其身后关闭——就像首次运行的设备设置那样。之后每一个陌生人都会被拒绝,并显示其自己的用户 id 以供转达,所有者则从 Settings → Plugins → Telegram 扩大访问权限。
这一点很重要,因为 bot 的用户名是可被发现的。一个接受任何人的 bot,会把一个在所有者机器上运行 shell 命令的 agent 交给任何发现它的人。
语言
该频道使用越南语或英语,由 language 设置选择,并可从设置卡片切换。它同时管理两个方面——bot 的消息和卡片自身的标签——因为一个用越南语回答、却来自英文标签卡片的 bot,是一个对用户说着两种语言的产品。
这是频道设置而非宿主 locale,是有意为之:DSH 只提供 zh 和 en,其 locale schema 正是这两者的联合,因此 vi 偏好会被直接拒绝。跟随宿主就意味着把越南语藏在中文选项后面。
配置
| 键 | 默认值 | 含义 |
| enabled | true | 在不移除频道的情况下将其关闭 |
| tokenRef | TELEGRAM_BOT_TOKEN | 保存 bot token 的凭据名称 |
| allowedUsers | [] | 允许与 bot 对话的 Telegram 用户 id;为空表示未被认领 |
| language | vi | vi 或 en,用于 bot 消息和设置卡片 |
| workspaceRoot | process.cwd() | 频道会话的工作目录 |
| routeQuestions | true | 在 Telegram 中回答 Telegram 会话的问题,而不是在浏览器中 |
| streaming | true | 在答案流式传输时就地编辑同一条消息 |
| showToolActivity | true | 在预览中显示正在运行的工具 |
| rich | true | 使用真正的表格和列表(sendRichMessage) |
| preset | — | 新频道会话的 agent 预设 |
| bindingFile | $DSH_HOME/dsh-telegram/bindings.json | 聊天→会话映射的存放位置 |
除 preset 和 bindingFile 外,以上所有内容也可在设置页面中由用户编辑;这两项仍属于部署层面的关注点,因为将频道指向一个不可写的绑定文件会使其损坏且无法恢复。
设计说明
转义只发生一次。 原始文本会预先进行 HTML 转义;随后内联模式针对转义后的文本运行。由于转义会移除所有 ,任何用户内容都无法伪造标签。代码片段和围栏会在转义前被提取出来,并在转义后恢复,因此其内容永远不会经历强调处理。
分块拆分的是源文本,而不是 HTML。 按 4096 字节切分已渲染的 HTML 会把消息从标签中间截断,Telegram 会拒绝整个发送。拆分 markdown 并分别渲染每一块可保证标签平衡,跨越边界的围栏会被关闭并重新打开。
媒体永远不会逃出工作区。 引用的路径会相对于会话的工作区根目录进行解析,如果落在外部则会被拒绝;该引用会保留为文本,而不是上传任意文件。
HTML 失败会降级,但绝不会丢弃。 如果 Telegram 拒绝已渲染的负载,客户端会以纯文本重试一次。格式错误只会损失格式,而不会损失消息。
只有频道拥有的轮次才会被投递。 会话也可以从 Web UI 驱动。回复路由器会跟踪它开启了哪些轮次,这样这些回复就不会被重复发送到聊天中。
Web 配置文件中的问题
宿主在整个进程范围内只允许一个用户问题提供程序,而在 Web 配置文件中,Web 桥接(dsh-host-apiproxy)会先注册。如果不加处理,这意味着在 Telegram 轮次中提出的问题会在浏览器中被回答,而机器人看起来会在轮次中途停止——对于手持手机的人来说,这是最糟糕的结果。
因此,该频道会在持有该槽位的任何提供程序之上安装一个路由器:绑定到 Telegram 聊天的会话会获得内联键盘,而其他所有会话都像以前一样到达浏览器。设置 routeQuestions: false 可将其关闭并恢复普通行为。
这共享了一个宿主建模为独占的槽位,因此其编写方式确保安全失败:在触碰任何内容之前,它会检查该字段是否可写以及现有提供程序是否可识别,将每个它无法解析的会话交给现有提供程序,原样传递该提供程序的拒绝,并在处置时恢复它。未来的 DSH 如果将该字段设为私有,代价是失去此功能,而不是启动失败。
测试
node --test 'test/*.test.js'
涵盖渲染器(转义、强调、表格、分块平衡、注入尝试)和媒体提取(分类、工作区限制、去重、相册分组),且不接触 Telegram。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Gum97/dsh-telegram
在 Telegram 里收发消息、图片并切换模型
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,359已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,514已汉化DSH
71.8
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,289已汉化DSH
71.6
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 92,675已汉化DSH
71.2
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,522已汉化DSH
71
这是你的仓库?认领条目