Telegram 远程对话 congchuanling-dot/DSH-Telegram-Relay
DeepSeek Harness用 Telegram 私聊远程操控 Agent 并接收回复
29.4/100
综合分
4
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add congchuanling-dot/DSH-Telegram-Relay该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · platform
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 82 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/6) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-telegram-relay(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/22 17:51:47
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 5 处,展示前 5 条)
- 读取本地文件src/offset-store.ts:31
content = await readFile(this.stateFile, 'utf8') - 写入本地文件src/offset-store.ts:56
await mkdir(directory, { recursive: true, mode: 0o700 }) - 写入本地文件src/offset-store.ts:60
await writeFile(temporary, `${JSON.stringify(document)}\n`, { - 写入本地文件src/offset-store.ts:65
await rename(temporary, this.stateFile) - 删除本地文件src/offset-store.ts:68
await unlink(temporary).catch((error: unknown) => {
扫描于 2026/11/4(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-default-model@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-session-persistence给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 接收通知
DSH Relay 让你通过 Telegram 远程与 DeepSeek Harness 对话、接收通知,把 Telegram 变成 DeepSeek Harness 的远程对话与通知渠道。
README
由 DeepSeek 最新模型翻译生成DSH Telegram Relay
让 Telegram 成为 DeepSeek Harness 的移动端对话入口。
插件在本机通过 Telegram Bot API 长轮询接收私聊文本,将消息交给 DSH Agent 处理,并把最终回答发送回原会话。每个 Telegram chat_id 对应一个持久化 DSH Session,因此连续追问和进程重启后都能保留上下文。
效果展示
同一条对话由 DSH Session 持久化管理。Telegram 负责移动端收发,Web UI 可查看同一套 Agent 能力和执行过程。
Telegram 移动端 DeepSeek Harness Web
核心能力
| 能力 | 实现 |
| Telegram 私聊入口 | 使用 getUpdates 长轮询,无需公网 IP、域名或 Webhook |
| DSH 完整能力 | 消息进入真实 DSH Agent,可使用当前 profile 已启用的模型和工具 |
| 连续上下文 | String(chat_id) 直接作为 DSH Session ID |
| 重启恢复 | 从 DSH Session persistence 恢复历史对话 |
| 安全访问 | 只允许显式配置在 allowlist 中的私聊 |
展开完整文档(README 剩余 1 节)
DSH Telegram Relay
让 Telegram 成为 DeepSeek Harness 的移动端对话入口。
插件在本机通过 Telegram Bot API 长轮询接收私聊文本,将消息交给 DSH Agent 处理,并把最终回答发送回原会话。每个 Telegram chat_id 对应一个持久化 DSH Session,因此连续追问和进程重启后都能保留上下文。
效果展示
同一条对话由 DSH Session 持久化管理。Telegram 负责移动端收发,Web UI 可查看同一套 Agent 能力和执行过程。
Telegram 移动端 DeepSeek Harness Web
核心能力
| 能力 | 实现 |
| Telegram 私聊入口 | 使用 getUpdates 长轮询,无需公网 IP、域名或 Webhook |
| DSH 完整能力 | 消息进入真实 DSH Agent,可使用当前 profile 已启用的模型和工具 |
| 连续上下文 | String(chat_id) 直接作为 DSH Session ID |
| 重启恢复 | 从 DSH Session persistence 恢复历史对话 |
| 安全访问 | 只允许显式配置在 allowlist 中的私聊 |
| Update 去重 | 成功回复后原子持久化 Telegram offset |
| 长文本回复 | 按 Telegram 4096 字符限制进行 Unicode 安全分片 |
| 生命周期管理 | 插件卸载时中止 polling,并释放本插件持有的 Agent |
工作原理
Telegram 用户 │ │ 私聊文本 ▼ Telegram Bot API │ getUpdates 长轮询 ▼ DSH Telegram Relay │ allowlist 校验 │ chat_id -> Session ID ▼ DeepSeek Harness Agent │ 模型推理 / 工具调用 / Session 持久化 ▼ DSH Telegram Relay │ sendMessage ▼ Telegram 用户
等待 getUpdates 返回时使用异步网络 I/O,不会通过 CPU 忙等持续轮询。
快速开始
1. 准备 Bot
1. 在 Telegram 联系 @BotFather。
2. 执行 /newbot 创建 Bot。
3. 保存 Bot Token。
4. 给新 Bot 发送一条消息,并通过 getUpdates 查询自己的私聊 chat_id。
node -e 'fetch(https://api.telegram.org/bot${process.env.TELEGRAM_BOT_TOKEN}/getUpdates).then(r => r.json()).then(x => console.dir(x, { depth: null }))'
结果中的 message.chat.id 就是 allowlist 所需的 chat_id。
2. 配置环境变量
Token 和 allowlist 只通过环境变量传入。不要将 Token 写入代码、YAML、README 或 Git。
export TELEGRAM_BOT_TOKEN=''
export TELEGRAM_ALLOWED_CHAT_IDS=''
允许多个私聊时使用英文逗号分隔:
export TELEGRAM_ALLOWED_CHAT_IDS='123456789,987654321'
export 只对当前终端会话及其启动的子进程生效。关闭终端或新开终端后,需要重新设置。Bot Token 通常保持不变,只有通过 BotFather 重新生成后才会变化;个人私聊 chat_id 通常也不会变化。
为了避免每次启动前重复设置,可以写入 deepseek-harness 根目录的 .env:
TELEGRAM_BOT_TOKEN=
TELEGRAM_ALLOWED_CHAT_IDS=
deepseek-harness/.gitignore 已忽略 .env,但仍需确认不要将该文件或其中的 Token 提交到 Git。插件卸载后可以保留这些配置,重新安装插件时会继续使用。
3. 安装依赖并构建
当前开发方式假设 DSH-Telegram-Relay 与 deepseek-harness 位于同一父目录:
myOwnProject/
├── deepseek-harness/
└── DSH-Telegram-Relay/
首次开发时安装依赖,并将 DSH peer dependencies 链接到本地 Harness:
cd DSH-Telegram-Relay
pnpm install --config.auto-install-peers=false
pnpm link \
../deepseek-harness/vendor/cordis \
../deepseek-harness/packages/core/agent \
../deepseek-harness/packages/core/agent-default-model \
../deepseek-harness/packages/llm/llm \
../deepseek-harness/packages/core/session \
../deepseek-harness/packages/session/session-persistence
pnpm run build
pnpm link 只用于本机开发,不要提交它写入的本机 link: 路径。
4. 安装到 DSH
将插件加入 web profile:
pnpm --dir ../deepseek-harness \
dsh plugin --profile web add \
"$(pwd)"
确认插件已经安装:
pnpm --dir ../deepseek-harness \
dsh plugin --profile web list
输出中应包含:
dsh-telegram-relay@link:.../DSH-Telegram-Relay
5. 启动
必须在设置环境变量的同一个终端启动 DSH:
cd ../deepseek-harness
pnpm dsh web
现在给 Bot 发送文本即可开始对话。首次消息会创建 Session,后续消息继续复用该 Session。
配置
插件 bundle 默认配置位于 cordis.patch.yml:
- insert:
- id: telegram-relay
name: dsh-telegram-relay
config:
tokenEnv: TELEGRAM_BOT_TOKEN
allowedChatIds: !!js process.env.TELEGRAM_ALLOWED_CHAT_IDS?.split(',')
cwd: !!js process.cwd()
stateFile: !!js dshHomePath('telegram-relay/state.json')
| 字段 | 说明 | 默认值 |
| tokenEnv | 保存 Bot Token 的环境变量名 | TELEGRAM_BOT_TOKEN |
| allowedChatIds | 允许访问 DSH 的私聊 ID,不能为空 | 从 TELEGRAM_ALLOWED_CHAT_IDS 读取 |
| cwd | 新建 Telegram Session 的工具工作目录 | 启动 DSH 时的当前目录 |
| pollTimeoutSeconds | 单次长轮询等待时间 | 30 |
| retryMinMilliseconds | 网络错误后的最短退避时间 | 1000 |
| retryMaxMilliseconds | 网络错误后的最长退避时间 | 30000 |
| stateFile | Telegram offset 状态文件 | $DSH_HOME/telegram-relay/state.json |
需要固定工具工作目录时,在 profile 的后置 patch 中将 cwd 覆盖为绝对路径。
安全边界
- Bot Token 仅从环境变量读取。
- allowlist 不能为空,且只接受 Telegram private chat。
- 未授权 chat 不创建 Session,不触发模型,也不触发工具。
- 日志不记录 Token、完整 Telegram Update 或用户消息正文。
- offset 文件不保存 Token、聊天内容或 DSH Session 数据。
- DSH 处理失败时只向 Telegram 返回稳定错误文案,不暴露本机路径和调用栈。
Session 与状态
插件不维护额外的 chat-to-session 数据库:
DSH Session ID = String(Telegram chat_id)
对话历史、模型消息和工具调用记录全部由 DSH Session persistence 管理。插件只额外保存下一个 Telegram Update offset:
$DSH_HOME/telegram-relay/state.json
offset 只在 DSH turn 完成且 Telegram 回复成功后推进。正常运行时 Update 不会重复处理;进程在回复成功后、offset 落盘前崩溃时可能重复一次,因此 P0 提供至少一次交付,不承诺严格 exactly-once。
开发与验证
pnpm test
pnpm run typecheck:test
pnpm run typecheck
pnpm run build
测试覆盖:
- 配置与 allowlist 校验
- Telegram 错误分类和重试
- 长轮询与 Update 去重
- offset 原子持久化
- Session 创建、复用与恢复
- 当前 turn 的回答关联
- Telegram 长文本分片
- 未授权访问和失败回传
详细设计见 P0_TECHNICAL_DESIGN.md。
常见问题
启动时报 TELEGRAM_BOT_TOKEN is required
当前终端没有 Token。重新设置后,在同一个终端执行 pnpm dsh web:
export TELEGRAM_BOT_TOKEN=''
getUpdates 返回 result: []
当前没有未消费消息。停止其他 polling 进程,给 Bot 发送一条新消息后再次查询。
Telegram 返回 409 Conflict
同一个 Bot Token 正被另一个 polling 进程使用,或者 Bot 仍配置了 webhook。确保只运行一个 DSH 实例,并删除 webhook:
node -e 'fetch(https://api.telegram.org/bot${process.env.TELEGRAM_BOT_TOKEN}/deleteWebhook).then(r => r.json()).then(console.log)'
Bot 没有回复
1. 确认 Web 插件列表中的 telegram-relay 已启用且没有加载错误。
2. 确认 TELEGRAM_ALLOWED_CHAT_IDS 与 message.chat.id 完全一致。
3. 确认 DSH Web 本身可以正常调用模型。
4. 确认没有其他进程消费同一 Bot 的 Update。
P0 边界当前版本仅实现 Telegram 私聊文本对话。主动通知、Schedule 定时提醒、群聊、图片、文件、语音和 Webhook 将作为后续能力独立设计。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
congchuanling-dot/DSH-Telegram-Relay
用 Telegram 私聊远程操控 Agent 并接收回复
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,792已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,170已汉化DeepSeek 客户端
71
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,041已汉化DSH
70.7
这是你的仓库?认领条目