Telegram 值班网关 luzhengyangtx/dsh-telegram-duty
DeepSeek Harnessv0.5.0用手机 Telegram 收发任务,让智能体随时待命干活
37.9/100
综合分
5
GitHub 星标
314
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @luzhengyangtx/dsh-telegram-dutynpm 源 · @luzhengyangtx/dsh-telegram-duty 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · platform
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 48 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@luzhengyangtx/dsh-telegram-duty @ 0.5.0
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/31 03:46:33
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 30 处,展示前 29 条)
- 发起网络请求lib/index.js:65
const req = https.request(url, { - 读取本地文件lib/index.js:168
return JSON.parse(fs.readFileSync(file, "utf-8")); - 写入本地文件lib/index.js:176
fs.mkdirSync(dir, { recursive: true }); - 写入本地文件lib/index.js:178
fs.writeFileSync(tmp, JSON.stringify(value, null, 2), "utf-8"); - 写入本地文件lib/index.js:179
fs.renameSync(tmp, file); - 读取本地文件lib/index.js:1809
credentials = JSON.parse(fs.readFileSync(resolved.credentialsFile, "utf-8")); - 写入本地文件lib/index.js:1832
fs.mkdirSync(resolved.dataDir ?? ".", { recursive: true }); - 写入本地文件lib/index.js:1833
fs.writeFileSync(`${resolved.dataDir ?? "."}/startup-error.json`, JSON.stringify({ - 写入本地文件lib/index.js:1856
fs.mkdirSync(runtime.dataDir ?? "", { recursive: true }); - 读取本地文件lib/types/index.js:28
credentials = JSON.parse(fs.readFileSync(resolved.credentialsFile, 'utf-8')); - 写入本地文件lib/types/index.js:59
fs.mkdirSync(resolved.dataDir ?? '.', { recursive: true }); - 写入本地文件lib/types/index.js:60
fs.writeFileSync(`${resolved.dataDir ?? '.'}/startup-error.json`, JSON.stringify({ time: Date.now(), error: error instanceof Error ? error.stack ?? er - 写入本地文件lib/types/index.js:89
fs.mkdirSync(runtime.dataDir ?? '', { recursive: true }); - 写入本地文件lib/types/index.js:90
fs.writeFileSync(`${runtime.dataDir ?? '.'}/startup.json`, JSON.stringify({ time: Date.now(), sessionId: runtime.sessionId, chatId: runtime.chatId }, - 读取本地文件lib/types/storage.js:12
return JSON.parse(fs.readFileSync(file, 'utf-8')); - 写入本地文件lib/types/storage.js:21
fs.mkdirSync(dir, { recursive: true }); - 写入本地文件lib/types/storage.js:23
fs.writeFileSync(tmp, JSON.stringify(value, null, 2), 'utf-8'); - 写入本地文件lib/types/storage.js:24
fs.renameSync(tmp, file); - 发起网络请求lib/types/telegram.js:19
const req = https.request(url, { agent, method: 'GET' }, (res) => { - 读取本地文件src/index.ts:42
credentials = JSON.parse(fs.readFileSync(resolved.credentialsFile, 'utf-8')) as CredentialsFile - 写入本地文件src/index.ts:73
fs.mkdirSync(resolved.dataDir ?? '.', { recursive: true }) - 写入本地文件src/index.ts:74
fs.writeFileSync( - 写入本地文件src/index.ts:113
fs.mkdirSync(runtime.dataDir ?? '', { recursive: true }) - 写入本地文件src/index.ts:114
fs.writeFileSync( - 读取本地文件src/storage.ts:14
return JSON.parse(fs.readFileSync(file, 'utf-8')) as T - 写入本地文件src/storage.ts:23
fs.mkdirSync(dir, { recursive: true }) - 写入本地文件src/storage.ts:25
fs.writeFileSync(tmp, JSON.stringify(value, null, 2), 'utf-8') - 写入本地文件src/storage.ts:26
fs.renameSync(tmp, file) - 发起网络请求src/telegram.ts:63
const req = https.request(url, { agent, method: 'GET' }, (res) => {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-default-model@deepseek-ai/dsh-agent-presets@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-session-projection@deepseek-ai/dsh-settings@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 手机消息任务闭环
- 全局审批转发
- 值班本地切换
Telegram 值班网关,给 DeepSeek Harness 用:手机消息任务闭环、全局审批转发、值班/本地切换、中英双语
README
由 DeepSeek 最新模型翻译生成dsh-telegram-duty(中文说明)
Awesome DSH Plugin npm
把 DeepSeek Harness(DSH)变成随身值班室:手机 Telegram 发消息 → 值班智能体干活 → 结果回复到手机。空闲时零 token(长轮询 getUpdates,消息到达才唤醒智能体)。
版本要求
要求 DeepSeek Harness ≥ 0.1.2-rc.1。 v0.5.0 起插件通过 session.snapshotEvents() 读取会话历史,该接口在 0.1.1-rc.2 及更早版本中不存在(于 dsh-v0.1.2-rc.1 引入)。如果您仍在使用 0.1.1-rc.2 或更早版本,请继续使用 npm 0.4.0——最新版在那上面无法加载。
快速开始(约 10 分钟)
1. 创建机器人:在 Telegram 里找 @BotFather,发送 /newbot,按提示取名,拿到 token(形如 123456:ABC...)。
2. 查自己的 chat id:给 @userinfobot(或你刚建的机器人)发任意消息,它会回复你的数字 id。
展开完整文档(README 剩余 1 节)
dsh-telegram-duty(中文说明)
Awesome DSH Plugin npm
把 DeepSeek Harness(DSH)变成随身值班室:手机 Telegram 发消息 → 值班智能体干活 → 结果回复到手机。空闲时零 token(长轮询 getUpdates,消息到达才唤醒智能体)。
版本要求
要求 DeepSeek Harness ≥ 0.1.2-rc.1。 v0.5.0 起插件通过 session.snapshotEvents() 读取会话历史,该接口在 0.1.1-rc.2 及更早版本中不存在(于 dsh-v0.1.2-rc.1 引入)。如果您仍在使用 0.1.1-rc.2 或更早版本,请继续使用 npm 0.4.0——最新版在那上面无法加载。
快速开始(约 10 分钟)
1. 创建机器人:在 Telegram 里找 @BotFather,发送 /newbot,按提示取名,拿到 token(形如 123456:ABC...)。
2. 查自己的 chat id:给 @userinfobot(或你刚建的机器人)发任意消息,它会回复你的数字 id。
3. 安装插件:在 DeepSeek Harness checkout 目录里执行:
dsh plugin --profile web add @luzhengyangtx/dsh-telegram-duty
4. 填写配置:在 C:\Users\\.dsh\profiles\web\cordis.patch.yml 中加上:
- id: telegram-duty
config:
token: '123456:你的机器人token' # 第 1 步 chatId: 123456789 # 第 2 步(白名单) language: zh # 或 en
5. 重启 dsh web,用手机给你的机器人发条消息——搞定,值班智能体开始回话。
进入值守后,网页顶部会出现横幅提示"审批已转到手机",点一下即可切回本地。
功能
- 📱 任务闭环:Telegram 消息 → 专属"值班会话"(带标准工具集)→ 最终回复回传手机;长回复自动分段。
- ⏳ 即时反馈:任务消息立即收到"📨 收到,正在生成…",处理期间手机持续显示"正在输入…"动画,出结果自动消失;出错补发"⚠️ 处理出错"。
- 🎯 定向会话:/sessions 列出你工作区的会话(在线 + 离线,与网页侧边栏一致,空壳草稿不显示)并带编号按钮——点编号后后续消息都发给该会话;消息前加 #编号 只单发这一条;/duty 回默认值班路由;离线会话在第一条定向消息时自动唤醒。
- 🔐 白名单:只服务你自己的 chat id,其他人仅记日志。
- ✅ 全局审批转发:值守模式下,所有会话的审批都发到手机,带 [✅ 同意] [⛔ 拒绝] 按钮(点按钮即答,打字 3 同意 / 3 拒绝 仍兼容);超时(默认 10 分钟)按拒绝处理(保守安全)。/away 会提醒网页上还挂着的审批,/unblock 可取消被审批卡住的回合。
- ❓ telegram_ask 提问工具:智能体需要您选择方案、确认事项或补充信息时,把问题推送到手机(每个选项一个按钮,点选即答);值班智能体已被提示优先使用它。
- 📣 telegram_notify 推送工具:任何会话的智能体都能主动把消息推到你手机(汇报、提醒、通知),不用你发消息。
- 🔀 值守/本地切换:手机发任意消息或 /away 进入值守;网页任意会话发消息或 /back 回到本地(本地模式审批走网页弹窗)。
- 🚩 值守横幅:值守期间网页顶部显示"审批已转到手机"横幅,一键切回本地(v0.4.0 起加大一档)。
- 📱 侧边栏"值班"按钮:网页左下角 Settings 旁一键打开值班会话(不存在时自动创建/唤醒),并带实时状态点(值守=橙色,本地=灰色)。
- 🗂 持久化:消息游标与值守状态跨重启保持;仅首次运行跳过历史积压。
- 🌐 中英双语:所有手机消息跟随 language 配置(zh | en,默认 en)。
- 🌍 直连友好:默认直连 Telegram;仅当网络封锁 Telegram(如中国大陆)时才需配置 proxy。
配置(telegram-duty 命名空间)
网页设置页可见可改,也可写在补丁行的 config: 下。
| 字段 | 默认 | 说明 |
| token | — | 机器人 token(secret,界面不展示);也可用 credentialsFile 提供 |
| chatId | — | 白名单 chat id |
| proxy | (空) | Bot API 代理地址。⚠ Telegram 可直连的网络请保持留空(默认直连);仅当网络封锁 Telegram(如中国大陆)时才填本地代理(如 Clash 的 http://127.0.0.1:7890),并保持代理软件开着 |
| sessionId | telegram-duty | 值班会话 id,首次消息自动创建 |
| dutyCwd | 进程 cwd | 值班会话工作目录 |
| approvalTimeoutMinutes | 10 | 审批超时(分钟),超时按拒绝 |
| watchMode | local | local / duty |
| language | en | 手机消息语言:en / zh |
| dataDir | /storages/telegram-duty | 游标持久化目录 |
| credentialsFile | — | 可选凭据 JSON 文件 {token, chat_id, proxy} |
| replyChunkChars | 3800 | 长回复分段阈值 |
手机命令
- /help — 使用说明
- /sessions — 列出工作区会话(在线 + 离线)带编号按钮,点编号后消息定向到该会话
- #编号 消息 — 只把这一条消息发给指定会话(编号以最近一次 /sessions 为准,30 分钟有效)
- /duty — 回到默认值班会话路由
- /away — 进入值守模式(审批转到手机);若网页还挂着未处理审批会提醒你
- /unblock — 取消被审批卡住的回合(之后重发任务即可,审批会正确推到手机)
- /back — 回到本地模式
- 3 同意 / 3 拒绝 — 回答第 3 条审批;仅一条待批时直接回"同意/拒绝";提问点选项按钮或直接回复选项文字。
常见问题(FAQ)
- 机器人不回消息? 按顺序排查:① token、chatId 是否填对;② 是否给机器人发过 /start(机器人不能主动发起对话);③ DSH 日志里有没有 telegram-duty 报错;④ 消息是否被当作命令(/away 等不产生回复)。
- chat id 怎么查? 给 @userinfobot 发任意消息,它会回复你的数字 id。
- 需要代理吗? 默认不需要,直连 Telegram。国内网络才填 proxy(如 Clash 的 http://127.0.0.1:7890),并且 DSH 运行期间代理软件要一直开着。
- 空闲时耗 token 吗? 不耗。插件只做长轮询,消息到达才唤醒智能体。
- 电脑关机还能用吗? 不能,插件随 DSH 一起运行;但重启不丢消息(游标持久化到磁盘)。
- 手机上能收到什么? 任务结果(含即时"收到"提示与输入中动画)、任意会话的审批请求(值守模式下)、智能体的提问(telegram_ask)、智能体主动推送的消息(telegram_notify)。
- 为什么 /sessions 没列出我所有会话? 它只列你工作区的会话(和网页侧边栏一致):空壳草稿隐藏;在线显示空闲/忙碌,离线显示"💤 离线"(首条定向消息自动唤醒)。内部值班会话永不出现——默认路由本来就是它。
- 机器人在群里会回话吗? 不会,白名单只服务你自己的 chat id,群消息一律忽略。
- 怎么更新插件? 执行 dsh plugin --profile web add @luzhengyangtx/dsh-telegram-duty@,或在 profile 的 package.json 里改依赖版本。
路线图(Roadmap)
| 状态 | 内容 | 版本性质 |
| ✅ 已发布(v0.4.0) | 定向会话(/sessions、#编号、/duty)· 即时收到提示 + 输入中动画 · telegram_notify 主动推送 · /unblock 审批自救 · 侧边栏值班按钮 · 横幅加大 · 中英双语 | 免费 |
| 🚧 计划中(v1.x) | 语音消息笔记、更多实用小功能 | 免费 |
| 🔭 仅预告 | 多平台接入(飞书/WhatsApp 等)、团队/多用户模式、云托管、优先支持 | 专业版(未来) |
永远免费:Telegram 值班、全局审批转发、值守/本地切换、网页横幅、中英双语。专业版一行只是预告,目前没有任何专业版代码——它标记的是未来商业版的方向。
定制服务
需要接入帮助、配置指导、接入其它平台或定制功能?发邮件到 dsh-telegram-duty@outlook.com。常规接入起步价 500 元/单(接入 + 配置 + 答疑),复杂功能按工作量单独报价;开工前会先明确交付范围(跑通 + 文档 + 基础答疑)。
社区与支持
- 💬 Telegram 用户群:https://t.me/+w8w7kAnGniRhZTJk
- 💝 Ko-fi 打赏:https://ko-fi.com/luzhengyangtx
- 💝 爱发电打赏:https://afdian.com/a/luzhengyangtx
- ⭐ GitHub 仓库:https://github.com/luzhengyangtx/dsh-telegram-duty
开发
pnpm --filter "@luzhengyangtx/dsh-telegram-duty" run typecheck
node_modules\.bin\vitest.cmd run packages/interaction/telegram-duty/tests
通道自检:$env:TG_CREDS='配置文件路径'; node --import tsx/esm packages/interaction/telegram-duty/scripts/check-telegram.ts
许可证
MIT。会话驱动模式(resume/create + summarize)参考 @kriskwok/dsh-feishu-gateway(MIT),见 LICENSE。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
luzhengyangtx/dsh-telegram-duty
用手机 Telegram 收发任务,让智能体随时待命干活
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,778已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,110已汉化DeepSeek 客户端
70.9
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,031已汉化DSH
70.7