DeepSeek Harness plugin

dsh-telegram-bridge

将 Telegram 私聊与 DeepSeek Harness(dsh)Agent 会话连接起来的桥接插件。

Jump to install

Source facts

Repository
JxaMe/dsh-telegram-bridge
Latest update
Aug 18, 2026
Category
Remote & Mobile
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/JxaMe/dsh-telegram-bridge
Plugin: dsh-telegram-bridge
Author: JxaMe

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.en.mdSource · read only
README language

dsh-telegram-bridge

English | 中文

A plugin that bridges Telegram private chats to DeepSeek Harness (dsh) agent sessions. Talk to your dsh agent directly from Telegram: send messages, get replies, switch models and reasoning effort, choose agent presets, and manage context and sessions.

<p align="center"> <a href="https://github.com/JxaMe/dsh-telegram-bridge/releases"><img alt="Release" src="https://img.shields.io/github/v/release/JxaMe/dsh-telegram-bridge?style=flat-square"></a> <a href="https://github.com/JxaMe/dsh-telegram-bridge/actions"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/JxaMe/dsh-telegram-bridge/ci.yml?branch=main&style=flat-square"></a> <img alt="License" src="https://img.shields.io/github/license/JxaMe/dsh-telegram-bridge?style=flat-square"> <img alt="TypeScript" src="https://img.shields.io/badge/TypeScript-strict-3178C6?style=flat-square"> </p>

> Current version: v1.2.0 · Actively maintained

✨ Features

Conversation

  • 💬 Private chat bridge — one-on-one conversation between Telegram and a dsh session.
  • ⏱️ Live status line — shows real activity (tool calls / commands); falls back to rotating neutral phrases every 3s during long turns.
  • 🧵 Queue & interrupt — messages are queued with a limit; /interrupt cancels the current task and clears the queue.
  • 🔄 Regenerate — re-sends the last user message in the same session, preserving context.
  • 🔁 Per-message retry — every failed message can be retried independently.

Reply Rendering

  • 🎛️ Structured output — supports dsh-ui keyvalue / callout / list / steps / table / todo / section.
  • 📝 Rich text — bold, italic, headings, lists, quotes, inline code and links.
  • 📐 Smart splitting — splits at paragraph/sentence boundaries; code blocks split by line and auto-truncate; structured blocks stay intact.

Sessions & Settings

  • 📂 Lightweight sessions — keep the N most recent conversations per chat; switch via /sessions; each session keeps its own model / reasoning / preset.
  • 🧠 Model & reasoning controls — dynamically list and switch models and reasoning effort.
  • 🎛️ Agent preset switching — blank sessions only.
  • 🖥️ dsh Web UI settings panel — manage token, owner, proxy, defaults, queue limit, status line, and more.

Stability

  • 🗂️ Queue persistence — pending and in-flight messages are written to queue.json and recovered on restart (at-least-once).
  • 📄 File logginglogs/dsh-telegram-bridge.log, auto-rotated after 5MB, tokens redacted.
  • 💾 State backupstate.json.bak / settings.json.bak, auto-recovered when corrupted.
  • 🛡️ Global guards — unhandled rejections / exceptions are logged without stopping the plugin when possible.
  • 🚀 Startup self-check — validates Telegram API and dsh API on boot.
  • 🩺 Health check/health reports uptime, messages, replies, and errors.
  • 🚦 Rate-limit protection — Telegram 429 responses are retried after the requested wait.

🖥️ Settings Panel

The dsh Web UI settings page includes a dedicated Telegram Bridge section for connection, defaults, and behavior options.

![dsh-telegram-bridge settings](./set.png)

🔧 How It Works

Telegram Bot API
      │ long polling (grammY)
      ▼
dsh-telegram-bridge (dsh profile plugin)
      │
      ├── dsh apiProxy (sessions, models, presets)
      ├── dsh agents (interrupt)
      └── dsh session events (replies / status)
      │
      ▼
dsh agent session

The plugin runs inside a dsh profile (usually web) and uses dsh native services — no separate server or webhook required.

📦 Requirements

  • DeepSeek Harness (dsh) installed
  • pnpm available
  • A Telegram bot token from @BotFather
  • Your Telegram numeric user ID

🚀 Installation

From GitHub:

dsh plugin --profile web add github:JxaMe/dsh-telegram-bridge

Local development:

cd ~/Projects/dsh-telegram-bridge
pnpm install
pnpm build
dsh plugin --profile web add /home/los/Projects/dsh-telegram-bridge

Verify:

dsh --profile web --dump-config | grep dsh-telegram-bridge

Then restart dsh web.

⚙️ Configuration

~/.dsh/dsh-telegram-bridge/config.json (generated on first start):

{
  "botToken": "123456:ABC-YOUR-REAL-BOT-TOKEN",
  "ownerId": 123456789,
  "projectRoot": "/home/you"
}
FieldDescriptionDefault
botTokenTelegram bot token
ownerIdAllowed Telegram user ID
projectRootWorking directory for new sessionsprocess.cwd()
proxyEnabled / proxyUrlProxy switch and URLfalse / http://127.0.0.1:7890
defaultProvider / defaultModel / defaultReasoningEffortDefault model settings''
defaultAgentPresetDefault agent preset''
errorDisplayModeraw or friendlyraw
htmlFormattingTelegram HTML formattingtrue
typingIndicatorTyping indicatortrue
statusLineLive status linetrue
queueLimitMax queued messages per chat20
maxSessionsPerChatRecent sessions kept per chat5
debugLoggingDebug loggingfalse

📟 Commands

CommandDescription
/startShow main menu
/newStart a new conversation (needs confirmation)
/interruptInterrupt the current task and clear the queue (/cancel alias)
/statusSession, queue, model, token & runtime stats
/healthUptime, messages, replies, errors
/sessionsView and switch recent sessions
/menuOpen settings panel
/compactCompact context
/commandsOpen the in-chat command menu
/versionCurrent version & updates
/helpCommand help

🧪 Development

pnpm install
pnpm typecheck
pnpm build
pnpm test

TypeScript strict mode is used. After editing src/, run pnpm build to regenerate lib/, then restart dsh web.

🛣️ Roadmap

  • [x] V1 conversation bridge (messages, queue, cancel, compact, persistence)
  • [x] V2 full dsh Web UI settings panel
  • [x] UX polish (status line, rich rendering, quick actions, sessions)
  • [x] Stability (logging, backup, queue persistence, self-check, rate limits, health)

📄 License

[MIT](./LICENSE)