READMESource: main@67f0cf1e
@blue/dsh-telegram-bot
A minimal single-purpose DeepSeek Harness (dsh) plugin: connect a Telegram bot to your dsh agent via long polling — no public endpoint needed.
Inspired by dsh-im-hub, but reduced to Telegram only: one adapter, no web settings card, no HTTP webhook surface.
- One agent per chat (
telegram:<chatId>), multi-turn context retained. - Agent-preset mounting: set
agent.presetand the bot's sessions mount that preset, getting the same tools (bash, fs, ssh, ...) as a Web GUI session. - Whitelist access control (
allowedUserIds). - Slack-style commands:
/help/reset/status/model. - Long replies split at Telegram's 4096-char limit.
- Idle chats disposed after
agent.idleTimeoutMs.
Install
dsh plugin --profile web add @blue/dsh-telegram-bot
The row is disabled by default. Enable it from the profile's cordis.patch.yml:
- id: dsh-telegram-bot
disabled: false
config:
telegram:
token: '123456:ABC-DEF...' # from @BotFather
allowedUserIds: [6354114195] # your numeric Telegram user id
agent:
preset: standard # mount the standard preset for full tools
Then restart the profile (dsh web).
Configuration
| Key | Default | Description |
|---|---|---|
enabled |
true |
Master switch. |
telegram.token |
'' |
Bot token from @BotFather. |
telegram.allowedUserIds |
[] |
Numeric user ids allowed to talk to the bot; empty = everyone. Set it in production. |
telegram.timeoutSeconds |
50 |
getUpdates long-poll timeout. |
telegram.pollIntervalMs |
500 |
Gap after a poll timeout/error. |
agent.cwd |
'' |
Working directory for agent sessions (defaults to dsh's cwd). |
agent.provider / agent.model |
'' |
Override model; empty = deployment default. |
agent.preset |
'' |
Agent preset id to mount for bot sessions ('' = deployment default). |
agent.maxMessageLength |
4000 |
Max chars per outbound message. |
agent.idleTimeoutMs |
1800000 |
Idle time before a chat's agent is disposed (0 = never). |
agent.instructionPrefix |
'' |
Prefix prepended to every user message. |
Commands
| Command | Effect |
|---|---|
/help |
Show command help. |
/reset |
Clear this chat's context (fresh agent). |
/status |
Show active chats / agents. |
/model |
Show the current model selection. |
Security
- Force a whitelist. An empty
allowedUserIdsmeans anyone with the token can drive your agent — which can execute tools on the host. - The token lives in the profile's
cordis.patch.yml; keep that file private (or reference an environment variable via!!js process.env.TG_BOT_TOKEN).
License
MIT
No comments yet. Be the first to write one.