前言¶
DeepSeek Harness (DSH) 的核心理念是“一切皆插件”。當需要在即時通訊渠道中訪問智能體時,開發者通常需要搭建額外的 Web 服務或配置 HTTP Webhook。下面介紹的 @blue/dsh-telegram-bot 是一個單功能插件,它利用長輪詢機制,直接將 Telegram 機器人連接到 DSH 智能體,省去了公開端點配置和外部服務的依賴。
插件信息¶
- 名稱:
@blue/dsh-telegram-bot - 維護者:Blue-2571
- 許可證:MIT
- 定位:一個單功能的 DSH 插件,通過長輪詢將 Telegram 機器人連接到你的 dsh 智能體。
核心功能¶
- 長輪詢連接:不依賴 Webhook,使用長輪詢保持連接。
- 會話管理:一個聊天對應一個智能體(標識爲
telegram:<chatId>),支持多輪對話上下文。 - 工具掛載:支持將 Agent 預設掛載到機器人會話,使其具備與 Web 界面相同的工具(如 bash、fs、ssh)。
- 權限控制:通過
allowedUserIds實現白名單訪問控制。 - 命令支持:支持
/help、/reset、/status、/model等 Slack 風格命令。 - 消息處理:長回覆會自動分割(遵循 Telegram 4096 字符限制),空閒會話會根據超時配置自動清理。
安裝與啓用¶
安裝插件:
dsh plugin --profile web add @blue/dsh-telegram-bot
安裝後,插件默認處於禁用狀態。需要在 cordis.patch.yml 中啓用並配置:
- id: dsh-telegram-bot
disabled: false
config:
telegram:
token: '123456:ABC-DEF...' # 從 @BotFather 獲取的 Token
allowedUserIds: [6354114195] # 你的數字 Telegram 用戶 ID
agent:
preset: standard # 掛載標準預設以獲取完整工具
保存文件後,重啓 Web Profile (dsh web)。
配置項¶
| 配置項 | 默認值 | 說明 |
|---|---|---|
enabled |
true |
主開關。 |
telegram.token |
'' |
Bot Token,從 @BotFather 獲取。 |
telegram.allowedUserIds |
[] |
允許交互的用戶 ID 列表(數字)。如果爲空數組,則任何持有 Token 的人均可操作。 |
telegram.timeoutSeconds |
50 |
getUpdates 長輪詢的超時時間。 |
telegram.pollIntervalMs |
500 |
輪詢超時或出錯後的間隔時間。 |
agent.cwd |
'' |
智能體會話的工作目錄(默認爲 dsh 的 cwd)。 |
agent.provider / agent.model |
'' |
覆蓋模型選擇;留空則使用部署默認值。 |
agent.preset |
'' |
掛載的 Agent 預設 ID(留空則使用部署默認值)。 |
agent.maxMessageLength |
4000 |
單條輸出消息的最大字符數。 |
agent.idleTimeoutMs |
1800000 |
會話空閒超時時間(毫秒),0 表示永不清理。 |
agent.instructionPrefix |
'' |
每條用戶消息前綴。 |
可用命令¶
/help:顯示命令幫助信息。/reset:清空當前聊天的上下文,重置智能體。/status:顯示當前活躍的聊天/智能體狀態。/model:顯示當前選擇的模型。
安全與注意事項¶
- 默認禁用:安裝後必須手動在
cordis.patch.yml中啓用。 - 白名單強制:如果
allowedUserIds爲空數組,則任何持有 Token 的人都可以執行工具(包括 bash、fs 等),這在生產環境中存在風險。 - Token 保護:
cordis.patch.yml包含敏感的 Bot Token,請確保該文件權限私有,或通過環境變量引用(如!!js process.env.TG_BOT_TOKEN)。 - 長度限制:長回覆會被 Telegram 的 4096 字符限制截斷。
適用場景¶
- 需要在 Telegram 中通過命令行或文件系統工具操作 DSH 的開發者。
- 想要避免部署 Webhook 服務,直接利用現有 DSH 進程進行 IM 交互的場景。