dsh-telegram-relay:把 DSH 問答、審批與回合摘要接到 Telegram

前言

DeepSeek Harness(DSH)在 Web 桌面裏處理智能體會話時,常會彈出 ask_user_question、工具審批,以及每輪結束後的狀態摘要。人若不在瀏覽器前,就容易錯過交互窗口。社區插件 dsh-telegram-relay(維護者 sflaer)在 DSH 主機側掛一座 Telegram 橋:同一套問題與審批可同時出現在 Web UI 與 Telegram,誰先給出完整答覆誰生效;另帶本機 loopback 控制面板,用於配置 Bot、白名單與子代理通知。插件不改動模型 prompt,也沒有獨立客戶端 UI,屬於 DSH 生態裏的「客戶端」類擴展。

這是什麼

Telegram Relay(包名 dsh-telegram-relay,當前版本 0.1.0,MIT 許可證)是面向 DeepSeek Harness 的 Telegram 橋接插件。加載後它會:

  • 啓動本機控制面板(默認 http://127.0.0.1:7810,端口占用時由系統分配,實際 URL 寫入配置);
  • 通過 Telegram Bot 轉發 agent 提問(內聯按鈕)、工具 Allow/Deny 審批、每輪結束的 turn summary,以及子代理相關通知(均可面板開關)。

答覆可在 Telegram 或 DSH Web UI 任一側完成,先完成的一側獲勝,另一側會被標記爲已解決。

核心功能

與 DSH 的銜接

插件訂閱三條 seam(README 原文):

Seam 行爲
user-questions/request(waterfall,prepend) 把問題發到 Telegram 並等待答覆,同時 next(),Web UI 仍可答題
approval/request(waterfall,prepend) 發送 Allow/Deny 按鈕,並繼續交給 Web UI
session/event(turn/end) 爲結束的回合生成摘要

子代理會話(session.header.origin === 'subagent')默認也會轉發;面板裏 Subagent messages 爲總開關,其下 Completion messages、Questions(含子代理審批)默認均爲開啓。

Telegram 側能力

  • 傳輸方式爲 long polling(getUpdates),無需公網 IP、webhook 或 TLS 證書。
  • 助手最終文本中的 Markdown 會渲染爲 Telegram HTML(粗體、斜體、刪除線、行內/圍欄代碼、鏈接、引用、標題、||spoiler|| 等);文件夾/耗時/工具數行固定在摘要末尾。
  • Bot 命令:/start(綁定會話並顯示狀態)、/status、/help;開放問題時可直接用文字回覆。

語言

控制面板與 Bot 面向用戶的消息支持 俄語、英語、中文;選擇保存在 $DSH_HOME/storages/telegram-relay/config.json 的 language 字段。未顯式選擇時跟隨系統 locale(LC_ALL / LANG / JS locale);僅 ru、en、zh 受支持,其他系統語言回退到英語。已發送消息不會重譯。

環境與依賴

  1. DSH 需啓用 sessions 服務(標準 Web 桌面 profile 已包含)。
  2. DSH 主機需能出站 HTTPS 訪問 api.telegram.org(可走 DSH 全局代理)。
  3. 在 @BotFather 創建 Bot 並取得 token。
  4. 運行環境:node >= 22.19.0,dsh >= 0.2.0(見 package.json)。

安裝與啓用

Desktop profile(Electron 管理)

dsh plugin --profile desktop add 會被拒絕,需通過 GUI:

  1. 打開 DSH → 側欄 Plugins → Add plugin。
  2. 填入 GitHub URL https://github.com/sflaer/dsh-telegram-relay,或本地 checkout 的絕對路徑。
  3. 安裝並重啓 DSH;管理器會自動寫入 dsh.profile.bundles。

其他 profile(例如 web)

dsh plugin --profile web add github:sflaer/dsh-telegram-relay

本地鏈接安裝:

dsh plugin --profile web add link:/absolute/path/to/dsh-telegram-relay

安裝或更新 link 包後需重啓對應 profile。

典型用法:面板與首次綁定

插件加載後,主機日誌會出現類似:

[telegram-relay] control panel: http://127.0.0.1:7810

若 7810 被佔用,實際端口見 $DSH_HOME/storages/telegram-relay/config.json 中的 panelUrl。

  1. 在瀏覽器打開上述控制面板 URL。
  2. 粘貼 Bot token,點擊 Save。token 會寫入 DSH 憑據存儲(鍵名 TELEGRAM_RELAY_BOT_TOKEN,可用 tokenEnv 覆蓋引用),並在 config.json 保留本地副本(權限 0600),便於憑據服務晚於插件掛載時仍能重試啓動。
  3. 在 Telegram 私聊 Bot 發送 /start,會話自動綁定。
  4. 使用 Send test 驗證消息可達。

白名單:面板 Whitelist 可填 @username、t.me/username、數值 id、tg://user?id=… 等,逗號/空格/換行分隔。列表爲空時,首個在私聊發送 /start 的用戶成爲 owner;非空時僅列表內用戶可綁定與操作按鈕,owner 始終有權限。若擔心他人搶先綁定,應在 /start 前填好白名單。綁定羣組時,成員可見通知,白名單仍限制誰可發消息與點按鈕。

子代理通知:白名單下方 Subagent messages 爲總開關;開啓後 Completion messages、Questions 分別控制完成摘要與問答(含子代理審批)。

配置項(cordis.patch.yml)

在 profile 的 cordis.patch.yml 中編輯已有 telegram-relay 行,勿重複添加:

- id: telegram-relay
  config:
    port: 7810
    language: en
    notifyTurnEnd: true
    notifyQuestions: true
    notifyApprovals: true
    notifySubagents: true
    notifySubagentTurnEnd: true
    notifySubagentQuestions: true
    summaryMaxChars: 1500
    minTurnMs: 0

常用字段:port(面板端口)、language(ru/en/zh)、各類 notify* 開關、summaryMaxChars(摘要正文上限,默認 1500)、minTurnMs(短於該毫秒的回合不推摘要)、apiBase(默認 https://api.telegram.org)、tokenEnv(默認 TELEGRAM_RELAY_BOT_TOKEN)。token、chat id、owner、白名單、語言與 update 游標均存於上述 config.json,不應把 token 寫進 cordis.patch.yml。

適用場景與注意

適合需要在手機 Telegram 上響應 DSH 提問與工具審批、並接收回合與子代理通知的開發者或運維。loopback 面板帶 per-process CSRF 保護,僅服務本機配置。

插件以 當前 DSH 進程權限 在主機側運行,可訪問會話事件並向 Telegram 出站;安裝前請自行審閱 源碼與 MIT 許可證,並確認 Bot token 與白名單策略符合你的安全要求。

DSH 社區插件目錄站點 skillhub.cn 與 DeepSeek / 幻方無官方從屬關係;生態理念是「一切皆插件」,本插件是其中一條可選的客戶端擴展。

結尾

dsh-telegram-relay 把 DSH 的交互 seam 延伸到 Telegram,並與 Web UI 並行、先到先得,同時用本機面板集中管理 token、語言、白名單與子代理通知。更完整的架構與問答/審批競態說明見倉庫內 visual guide。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜