DeepSeek Harness Hub
← 返回列表

Kevin66Z0/dsh-telegram

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

🤖 dsh-telegram

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/2 · 已提供中文文档

从 Telegram 远程控制 DeepSeek Harness:流式回复、一键键盘、白名单安全保护、零入站端口。

综合分
30.4
GitHub 分
30.4
用户评分
★ Stars
3
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Kevin66Z0/dsh-telegram
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-host-apiproxy@deepseek-ai/dsh-invariants@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-settings@deepseek-ai/dsh-user-questions@deepseek-ai/schemastery
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

🤖 dsh-telegram

DeepSeek Harness 的 Telegram 遥控台——把你的 Agent 装进口袋。

在 Telegram 里遥控你的 dsh 会话:列会话、绑定、发消息、看实时流式回复、
一键作答 Agent 提问、停止或切换会话——走的是与 Web UI 完全同一条通道,
任何白名单内的聊天都能用。

License: MIT
Node
English

✨ 特性

- 完整会话遥控台——/attach 绑定会话、/status 查看详情、普通文字直接当 prompt 发出,直播式回复在同一条消息上原地更新。
- 实时流式回复——助手输出流式写入单条消息并随回合原地编辑(每步附带 💭 Think / 🔧 工具 动作行),完成后渲染为 Telegram HTML 并以 token 用量脚注收尾。
- 提问变成按钮——Agent 调用 ask_user_question 时弹出可作答的内联键盘:点一下就作答或取消;与 Web UI 按先到先得竞争,不冲突。
- 一键键盘操作——回复键盘承载 /create /archive /attach 与 /stop /close 动作行;会话列表、工作区选择器都是内联按钮。几乎全是点按,敲字也全兼容。
- 安全默认——只有 allowChatIds 里的聊天能使用;其他人一律回 ⛔ 无权访问。 且拿不到任何会话信息。插件不监听任何端口:全部流量是出站的 Telegram 长轮询(可选经 CONNECT 代理)。
- 密钥零落地——botToken 以 !!js process.env.TELEGRAM_BOT_TOKEN 引用,token 只存在于环境变量(或 $DSH_HOME/.env,0600)。
- 冷会话恢复——绑定与发消息都走宿主 apiProxy,即 Web UI 同款通道,含冷会话恢复与排队语义。

📸 效果展示

2. 用回复键盘一路点按:/create → /new → 派个任务 → /stop 取消

3. Agent 提问 → 点内联答案按钮 → Agent 继续干活

录制工具:macOS QuickTime / OBS;GIF 用 ffmpeg 或 gifski 导出。
单文件控制在 2 MB 内,放在 docs/demo/ 目录。
-->

Telegram 里的实机使用效果:

Telegram 实机效果

| 绑定 + 流式回复 | 一键键盘 | 点按回答提问 |
| --- | --- | --- |
| 绑定与流式回复 | 一键键盘 | 回答提问 |

🚀 快速开始

前提

- 一份 dsh 源码检出(插件会装进它)——或已经跑起来的 dsh 部署(走方式二)。
- Node.js ≥ 22.19、pnpm、git。
- @BotFather 创建的 bot token,且能出网访问 api.telegram.org(或可配 CONNECT 代理)。

方式一(推荐):装进你的 dsh 源码

git clone https://github.com/Kevin66Z0/dsh-telegram.git dsh-telegram
cd dsh-host-telegram
./install.sh /path/to/deepseek-harness     # 你已有的 dsh 检出

install.sh 把插件同步到 src/packages/host/telegram、注册进 workspace,并在设置了
DSH_HOME 时把挂载行写进 $DSH_HOME/profiles/web/cordis.patch.yml。脚本幂等——以后
git pull 更新后重跑即可。

然后只需三步(一次):

1) 注入 token(明文不落任何文件)
echo 'TELEGRAM_BOT_TOKEN=' >> "$DSH_HOME/.env"; chmod 600 "$DSH_HOME/.env"

2) 白名单你的聊天(热加载,按字段覆盖插件行)— 写在 $DSH_HOME/settings.yaml:
telegram:
allowChatIds: [123456789]            # 你的 chat id(查法见下)
proxy: 'http://127.0.0.1:7890'     # 仅当 api.telegram.org 被墙时才需要

3) 重启 dsh 服务(用你惯用的启动/部署命令)

怎么查我的 chat id:白名单留空时首次运行会在日志里打印所有被拒的 chat id——抄进
allowChatIds 即刻生效,无需重启。

验证:日志出现 telegram: bot @ listening;给 bot 发 /start 有响应。

方式二:已有 dsh 部署

不从源码运行的用户可直接把插件包装进 profile:

dsh plugin --profile web add git+https://github.com/Kevin66Z0/dsh-telegram.git

之后同样走上面的 token / 白名单 / 重启三步。此方式把插件装成独立包(所有
@deepseek-ai/* 依赖由运行中的 dsh 宿主解析)。两种方式不要混用:每个部署只保留一条
id: telegram 插件行。

更新 / 卸载

cd dsh-host-telegram && git pull && ./install.sh /path/to/deepseek-harness   # 更新
或包方式:  dsh plugin --profile web update/remove @deepseek-ai/dsh-host-telegram

⚙️ 配置

| 字段 | 类型 | 默认值 | 含义 |
| --- | --- | --- | --- |
| botToken | string | 必填 | bot token;以 !!js process.env.TELEGRAM_BOT_TOKEN 引用,经环境变量或 $DSH_HOME/.env 注入 |
| allowChatIds | number[] | 必填 | 允许使用该控制台的聊天;留空全部拒绝(首跑日志会打印被拒 id) |
| proxy | string | ALL_PROXY,随后 HTTPS_PROXY | Telegram API 流量的 HTTP CONNECT 代理 |

插件注册 telegram settings 命名空间:$DSH_HOME/settings.yaml(或 Web 设置页「插件 →
Telegram」卡片)里的字段按字段覆盖插件行,保存即热加载重建 bot 会话,无需重启。

🕹️ 命令速查

| 命令 | 作用 |
| --- | --- |
| /attach [范围\|序号\|id\|none\|arc] | 把本聊天绑定到会话(范围选择器 → 内联按钮会话列表),展示最近对话与回合中的动作;之后纯文本即发给该会话 |
| /create | 创建子菜单:/new(新会话)或 /fork(分叉绑定会话) |
| /operate | 操作子菜单:/archive、/stop、/curTasks |
| /new [路径\|序号\|none] | 创建会话(工作区选择器;none = 未分类) |
| /fork [序号\|id] | 从某会话最后一个已完成回合分叉出新会话并立即绑定 |
| /archive [序号\|id] | 归档会话(二次确认;取消分组并解绑) |
| /delete [序号\|id] | 从选择器归档 |
| /stop | 取消绑定会话进行中的回合(未绑定时以内联列表选择) |
| /keyboard | /close 或选择器覆盖后,一键唤回复键盘区 |
| /status [序号\|id] | 会话详情:最近助手输出、状态、用量脚注 |
| /model [模型名] | 设置全局默认模型(点模型列表或敲名字) |
| /rename [标题] | 重命名绑定会话(无参数时交互输入) |
| /curTasks | 打印绑定会话的任务清单(与 Web 侧栏同源) |
| /preset [模式名\|序号] | 选择会话模式(PTC / 标准 / 极简…) |
| /start | 完整帮助;/close 收起键盘 |

🔐 安全与隐私

- 白名单门禁:allowChatIds 之外的聊天收到固定拒答,且了解不到任何会话信息。
- 零入站监听:插件只做出站 Telegram 长轮询——不用开端口、不需要公网 IP,NAT 后也能用。
- 密钥不进配置:token 是环境变量引用,文档与模板只含占位符。
- 轮换成本极低:token 真泄露了去 @BotFather /revoke 重签——真正的访问控制是白名单,不是 token。

🧠 工作原理

Telegram 应用            dsh 进程(同一个 node 进程)
┌───────────┐   HTTPS   ┌──────────────────────────────────────────┐
│ 你的手机   │ ◄───────► │ grammY Bot(长轮询,本插件)              │
└───────────┘  出站     │      │ apiProxy(Web UI 同款通道)         │
│      ▼                                    │
│  会话 / agent loop / LLM / 工具           │
└──────────────────────────────────────────┘

插件是一个 Cordis 函数插件(name: telegram,inject: [apiProxy])——与 dsh 每个组件
相同的插件架构,可组合进任何叠了 dsh-web-app 的 profile(纯 headless 主机没有
apiProxy,无法挂载)。插件不拥有持久化事件流:它像 Web UI 一样读会话/提问事件源。

❓ 常见问题

为什么必须用 web profile? 插件经 apiProxy 驱动会话——那是 Web UI 的 RPC 通道;
纯 headless 的 dsh 没有 apiProxy。

怎么找我的 chat id? 白名单留空,给 bot 发一条消息,日志里"被拒聊天"那行就是。

api.telegram.org 被墙怎么办? 在 telegram: settings 段配 proxy
(默认回退 ALL_PROXY/HTTPS_PROXY)。

我的 dsh 上游已经自带 telegram 包? install.sh 会用本仓库版本覆盖插件源码;
或只用包方式——同一条 telegram 行不要两路混用。

插件启动报错? 通常是 token 没进到进程:写 $DSH_HOME/.env 后重启。配置错误会
在加载时大声失败。

🛠️ 开发

源码与 dsh monorepo 的 packages/host/telegram 同步:贡献者仍在 monorepo 内开发
(遵循其 AGENTS.md),再同步回来:

bash scripts/sync-from-monorepo.sh [monorepo路径]   # 默认 ../dsh/src

README(本文件与英文版)由本仓库本地维护,不会被脚本覆盖。构建产物 lib/ 已提交,
包方式安装的用户无需构建。

📄 许可证

MIT。docs/official/ 是 Telegram 官方 Bot API 文档的离线镜像。基于
DeepSeek Harness 构建。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群