Telegram 远程控制 datit309/dsh-telegram-bridge
DeepSeek 客户端v0.1.3为 DeepSeek HarnessDSH提供完整的 Telegram 双向远程控制、实时进度跟踪,以及系统原生通知。
36.2/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/23 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/datit309/dsh-telegram-bridge.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态插件
可安装,未声明 dsh 能力
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意npm 同名包「dsh-telegram-bridge」归属 joycate/dsh-telegram-bridge,装到的可能不是本插件
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-telegram-bridge @ 0.1.3
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 15:42:52
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 90 处,展示前 37 条)
- 请求外部主机api.telegram.orgindex.js:77
await fetch(`https://api.telegram.org/bot${token}/setMyCommands`, { - 发起网络请求index.js:77
await fetch(`https://api.telegram.org/bot${token}/setMyCommands`, { - 执行外部命令固定命令index.js:102
execFile('afplay', ['-v', String(volume), file], () => {}); - 执行外部命令固定命令index.js:106
execFile('paplay', [file], (err) => { - 执行外部命令固定命令index.js:107
if (err) execFile('aplay', [file], () => {}); - 执行外部命令固定命令index.js:112
execFile('powershell', ['-c', `[System.Media.SystemSounds]::${soundType}.Play()`], () => {}); - 执行外部命令固定命令index.js:120
execFile('osascript', ['-e', script], () => {}); - 执行外部命令固定命令index.js:122
execFile('notify-send', [title, `${subtitle ? subtitle + '\n' : ''}${message}`], () => {}); - 读取密钥环境变量index.js:160
if (process.env.BEE_ROUTER_API_KEY) return process.env.BEE_ROUTER_API_KEY; - 读取本地文件index.js:164
if (existsSync(yamlPath)) { - 读取本地文件index.js:165
const content = readFileSync(yamlPath, 'utf8'); - 读取本地文件index.js:277
if (existsSync(configFilePath)) { - 读取本地文件index.js:278
fileConfig = JSON.parse(readFileSync(configFilePath, 'utf8')); - 读取密钥环境变量index.js:282
const rawToken = readVolatile(config.token) || config.telegram?.token || process.env.TELEGRAM_BOT_TOKEN || fileConfig.token || ''; - 写入本地文件index.js:289
writeFileSync(filePath, JSON.stringify({ token, chatId }, null, 2), 'utf8'); - 读取本地文件index.js:335
if (ws.path && existsSync(ws.path)) { - 读取本地文件index.js:345
if (c && existsSync(c) && !set.has(c)) { - 请求外部主机api.telegram.orgindex.js:492
const r = await fetch(`https://api.telegram.org/bot${effective.token}/getMe`); - 发起网络请求index.js:492
const r = await fetch(`https://api.telegram.org/bot${effective.token}/getMe`); - 请求外部主机api.telegram.orgindex.js:527
const r = await fetch(`https://api.telegram.org/bot${botToken}/getMe`); - 发起网络请求index.js:527
const r = await fetch(`https://api.telegram.org/bot${botToken}/getMe`); - 请求外部主机api.telegram.orgindex.js:565
const r = await fetch(`https://api.telegram.org/bot${testToken}/sendMessage`, { - 发起网络请求index.js:565
const r = await fetch(`https://api.telegram.org/bot${testToken}/sendMessage`, { - 请求外部主机api.telegram.orgindex.js:606
const res = await fetch(`https://api.telegram.org/bot${botToken}/sendMessage`, { - 发起网络请求index.js:606
const res = await fetch(`https://api.telegram.org/bot${botToken}/sendMessage`, { - 请求外部主机api.telegram.orgindex.js:618
const fallback = await fetch(`https://api.telegram.org/bot${botToken}/sendMessage`, { - 发起网络请求index.js:618
const fallback = await fetch(`https://api.telegram.org/bot${botToken}/sendMessage`, { - 写入本地文件index.js:738
writeFileSync(ogaPath, audioBuffer); - 删除本地文件index.js:752
if (existsSync(ogaPath)) unlinkSync(ogaPath); - 删除本地文件index.js:753
if (existsSync(wavPath)) unlinkSync(wavPath); - 写入本地文件index.js:1011
mkdirSync(uploadDir, { recursive: true }); - 写入本地文件index.js:1015
writeFileSync(localFilePath, imgBuffer); - 写入本地文件index.js:1071
mkdirSync(uploadDir, { recursive: true }); - 写入本地文件index.js:1074
writeFileSync(localFilePath, docBuffer); - 发起网络请求client.js:121
fetch('/api/dsh-telegram-bridge/config') - 发起网络请求client.js:145
const res = await fetch('/api/dsh-telegram-bridge/config', { - 发起网络请求client.js:169
const res = await fetch('/api/dsh-telegram-bridge/test', {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
涉及外部主机:api.telegram.org
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 实时进度跟踪
- 原生系统通知
README
由 DeepSeek 最新模型翻译生成dsh-telegram-bridge
为 DeepSeek Harness(DSH)提供完整的 Telegram 双向远程控制、实时进度跟踪,以及系统原生通知。
把手机变成本地 DSH 智能体的远程编程驾驶舱:发送文本提示词、语音消息、截图,查看实时 diff,切换模型/会话,执行 shell 命令,审批工具,下载生成的交付物。
核心功能
1. 通过 Telegram 双向远程控制
- 💬 远程提示:在 Telegram 里发送任意文本消息,Mac 上活跃的智能体立即接收并执行。
- 🎙 语音转文本:按住录制语音消息(.ogg)。机器人用 ffmpeg + Gemini 语音转文本,把音频转成干净的文本提示词交给智能体。
- 📷 视觉 / 截图:发送终端或 UI 的 bug 截图,可附说明文字;智能体解析图片并修复代码。
- 📁 文档上传:把 .pdf、.sql、.json、.py、.js、.txt 文件直接发到智能体工作区。
- ⚡ 实时进度卡片:在单条消息里动态更新工具执行步骤(read、edit、bash、serena 等),配合输入状态提示,避免通知刷屏。
展开完整文档(README 剩余 1 节)
dsh-telegram-bridge
为 DeepSeek Harness(DSH)提供完整的 Telegram 双向远程控制、实时进度跟踪,以及系统原生通知。
把手机变成本地 DSH 智能体的远程编程驾驶舱:发送文本提示词、语音消息、截图,查看实时 diff,切换模型/会话,执行 shell 命令,审批工具,下载生成的交付物。
核心功能
1. 通过 Telegram 双向远程控制
- 💬 远程提示:在 Telegram 里发送任意文本消息,Mac 上活跃的智能体立即接收并执行。
- 🎙 语音转文本:按住录制语音消息(.ogg)。机器人用 ffmpeg + Gemini 语音转文本,把音频转成干净的文本提示词交给智能体。
- 📷 视觉 / 截图:发送终端或 UI 的 bug 截图,可附说明文字;智能体解析图片并修复代码。
- 📁 文档上传:把 .pdf、.sql、.json、.py、.js、.txt 文件直接发到智能体工作区。
- ⚡ 实时进度卡片:在单条消息里动态更新工具执行步骤(read、edit、bash、serena 等),配合输入状态提示,避免通知刷屏。
- 🔘 回合结束操作栏:每轮完成后附带一键内联按钮:[ 📄 View Diff ]、[ 📁 Modified Files ]、[ 🚀 Git Status ]、[ 🔇 Mute/Unmute ]、[ 🔄 New Session ]。
2. 源码与系统管理
- 📄 实时 Git Diff(/diff):在当前工作区内查看已暂存和未暂存的详细代码改动。
- 🚀 Git 提交与推送(/commit <message>):直接在手机上运行 git add -A && git commit -m <msg> && git push。
- 💻 直接执行 Shell(/sh <command>):在本地运行终端命令(如 git status、pnpm test、docker ps、pm2 status),不消耗任何 LLM token。
- 📥 一键下载文件(/get <file>):在 /files 里一键下载宿主机文件,或用 /get <path> 指定路径。
- 🎁 交付物自动发送:智能体调用 present 工具时,生成的交付物自动上传到你的 Telegram 聊天。
3. 会话与工作区导航
- 📋 会话切换(/sessions、/switch <index>):列出所有打开的 DSH 会话,用内联按钮或索引切换当前目标。
- 📂 工作区切换(/workspaces、/cd <path>):浏览项目目录,随时切换工作目录。
- 🧠 模型切换(/model):用交互式内联按钮在多个模型之间切换(Gemini 3.8 Flash、Claude 4.6 Sonnet、GPT-6 Astra 等)。
- 🔄 新建会话(/new):在当前工作区里开一个新会话。
4. 交互式权限与安全
- 🛡 工具审批按钮:智能体申请更高权限(approval/asked)时,机器人弹出 [ ✅ Allow ] 和 [ ❌ Reject ] 提示。
- ❓ 用户提问(ask_user_question):智能体提问时,提供交互式单选/多选按钮。
- 🔒 Chat ID 锁定:只有授权的 Telegram chat ID 才能交互;未授权访问会收到 403 响应。
5. 原生系统音频与桌面通知
- 🔊 系统音频:通过 afplay 播放 macOS 原生提示音(成功时 Hero.aiff,出错时 Basso.aiff,提示词/审批时 Ping.aiff)。
- 🔔 桌面横幅:macOS 通知中心横幅,显示项目名、执行时长和修改过的文件列表。
- 🔇 远程静音(/mute、/unmute):需要安静时,用手机把 Mac 扬声器静音。
Telegram 命令参考
| 命令 | 说明 |
| 发送语音消息 | 把语音转成文字,作为提示词派发 |
| 发送图片 + 说明文字 | 附上截图,让智能体看图修 bug |
| 发送文档 | 把代码或文档上传到工作区做分析 |
| /diff | 显示当前工作区的 git diff |
| /commit <msg> | 提交改动并推送到 git 远程仓库 |
| /sh <command> | 直接在宿主机上运行 shell 命令(0 token) |
| /get <file> | 从宿主机下载文件到 Telegram |
| /files | 列出最近修改的文件,附一键下载按钮 |
| /workspaces | 列出可用工作区,附快速切换按钮 |
| /cd <path> | 切换智能体的工作目录 |
| /model | 打开交互式模型选择菜单 |
| /sessions | 列出已打开的会话,附快速切换按钮 |
| /switch <index> | 按索引或 ID 切换会话 |
| /mute | 静音 Mac 扬声器声音 |
| /unmute | 取消静音 Mac 扬声器声音 |
| /new | 新建会话 |
| /status | 显示智能体、会话、工作区和扬声器的状态 |
| /stop | 立即中止智能体当前回合 |
| /help | 显示帮助信息和命令列表 |
前置条件
1. Telegram Bot Token:通过 @BotFather 创建。
2. 音频 / 语音转文字(可选):
- 宿主机上已安装 ffmpeg(例如 brew install ffmpeg)。
- 本地运行 BeeRouter,监听端口 20128(或使用兼容 OpenAI 的语音/对话端点),用来转写收到的语音消息。
3. 安全与 Chat ID 锁定:
- 如果没配置 chatId,第一个给机器人发消息的人会被自动认领并锁定为所有者。
- 公开或共享的机器人,启动前要显式配置 chatId,防止被他人抢先认领。
DSH 安装指南
方式 1:通过 DSH 命令行(推荐)
在终端运行标准的 dsh plugin add 命令:
Install directly from GitHub into your active profile (e.g. web)
dsh plugin --profile web add github:datit309/dsh-telegram-bridge
或者从本地检出安装:
Clone the repository
git clone https://github.com/datit309/dsh-telegram-bridge.git ~/dsh-telegram-bridge
Install into DSH profilebash
dsh plugin --profile web add ~/dsh-telegram-bridge
dsh plugin add 会自动把依赖写进 ~/.dsh/profiles/web/package.json,并在 dsh.profile.bundles 中启用对应的 bundle 层。
方式 2:通过 DSH Web GUI
1. 打开 DeepSeek Harness Web GUI(http://127.0.0.1:3080)。
2. 点击最左侧边栏的 插件图标(拼图)。
3. 点击右上角的 Add plugin。
4. 输入 GitHub 仓库标识: text github:datit309/dsh-telegram-bridge
5. 点击 Install。插件会自动下载、打包并启用。
方式 3:手动配置(本地开发)
1. 把包加进 ~/.dsh/profiles/web/package.json: json {
"dependencies": {
"dsh-telegram-bridge": "file:/path/to/dsh-telegram-bridge"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-telegram-bridge"
]
}
}
}
2. 软链到 node_modules(本地开发、没跑 pnpm install 时用):bash ln -sf /path/to/dsh-telegram-bridge ~/.dsh/profiles/web/node_modules/dsh-telegram-bridge
3. 在 ~/.dsh/profiles/web/cordis.patch.yml 中启用:yaml
- id: dsh-telegram-bridge
name: "dsh-telegram-bridge"
配置
方式 1:~/.dsh/telegram.json(推荐)创建或编辑 ~/.dsh/telegram.json:json { "token": "YOUR_TELEGRAM_BOT_TOKEN", "chatId": "YOUR_TELEGRAM_CHAT_ID" }
自动配对:chatId 留空,然后用手机给机器人发 /start。机器人会自动锁定你的 chat ID。
方式 2:DSH Web GUI 进入 Settings(左下角齿轮图标)➔ Telegram & Notifier:配置 Token、Chat ID、声音与通知开关,然后点击 Save。
方式 3:环境变量bash
export TELEGRAM_BOT_TOKEN="YOUR_TELEGRAM_BOT_TOKEN"
export TELEGRAM_CHAT_ID="YOUR_TELEGRAM_CHAT_ID"
运行
重启 DSH web 服务: bash
If dsh web is currently running, stop it with Ctrl+C, then:
dsh web
在手机上打开 Telegram,找到你的机器人,发送 /start。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
datit309/dsh-telegram-bridge
为 DeepSeek HarnessDSH提供完整的 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
这是你的仓库?认领条目