前言¶
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 受支持,其他系統語言回退到英語。已發送消息不會重譯。
環境與依賴¶
- DSH 需啓用
sessions服務(標準 Web 桌面 profile 已包含)。 - DSH 主機需能出站 HTTPS 訪問
api.telegram.org(可走 DSH 全局代理)。 - 在 @BotFather 創建 Bot 並取得 token。
- 運行環境:
node>= 22.19.0,dsh>= 0.2.0(見package.json)。
安裝與啓用¶
Desktop profile(Electron 管理)¶
dsh plugin --profile desktop add 會被拒絕,需通過 GUI:
- 打開 DSH → 側欄 Plugins → Add plugin。
- 填入 GitHub URL
https://github.com/sflaer/dsh-telegram-relay,或本地 checkout 的絕對路徑。 - 安裝並重啓 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。
- 在瀏覽器打開上述控制面板 URL。
- 粘貼 Bot token,點擊 Save。token 會寫入 DSH 憑據存儲(鍵名
TELEGRAM_RELAY_BOT_TOKEN,可用tokenEnv覆蓋引用),並在config.json保留本地副本(權限0600),便於憑據服務晚於插件掛載時仍能重試啓動。 - 在 Telegram 私聊 Bot 發送
/start,會話自動綁定。 - 使用 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。