← Back to home@dexwebcode

dsh-plugin-telegram-bot

Telegram bot for DeepSeek Harness. Runs on your machine and connects to the local DSH agent (tools, files, sessions) or straight to the DeepSeek API, so you can drive DSH from any Telegram chat on any network — no domain, no VPS, with per-chat model/effort/permissions, MarkdownV2, live progress and approval buttons.

Stars
1
Language
Python
Created
Oct 16, 2026
Updated
Oct 22, 2026

Introduction

DeepSeek Telegram Bot

Telegram-бот на aiogram 3 к DeepSeek и DeepSeek Harness. Принимает сообщение, отправляет его «мозгу» и возвращает ответ в чат с сохранением контекста. Ответы приходят в MarkdownV2.

Telegram ──long polling──▶ bot.py ──▶ DeepSeek API / DSH-агент ──▶ ответ в чат

Что умеет

  • Два режима:
    • agent (по умолчанию) — запускает DSH-агента (dsh headless --json): инструменты, файлы, рабочая папка, сессии — как в веб-интерфейсе DSH;
    • fast — прямой запрос к api.deepseek.com, без инструментов и файлов.
  • Модель и усилие на каждый чат: Flash/Pro, Low/High/Max — запоминаются в state.json.
  • Права на каждый чат: read-only, workspace-write, danger-full-access; в режимах с подтверждением бот присылает кнопки «Разрешить» / «Отменить».
  • Живой ответ: карточка действий (последние 5 операций), таймер, кнопка «Остановить».
  • Автозапуск и сторож: супервизор поднимает бота после падения, задача планировщика проверяет /health каждые 5 минут.

Требования

ТребованиеЗачем
Python 3.12бот
aiogram 3 и зависимости из requirements.txtбот
DeepSeek Harness (dsh в PATH)режим agent
ключ DeepSeek (platform.deepseek.com)режим fast и агент

Установка

$bot = 'C:\Users\<Имя>\...\dsh-plugin-telegram-bot\Telegram Bot'

uv venv "$bot\.venv" --python 3.12
uv pip install --python "$bot\.venv\Scripts\python.exe" -r "$bot\requirements.txt"

Copy-Item "$bot\config.example.json" "$bot\config.json"
# впишите botToken (из @BotFather) и deepseekApiKey
python "$bot\bot.py" --check

Запуск

Start-Process wscript.exe -ArgumentList "`"$bot\bot.vbs`""

Бот работает в скрытом окне. Панель состояния: http://127.0.0.1:8099/ (и /health для JSON).

Автозапуск и сторож

ЗвеноЧто делает
bot.vbs + start.ps1супервизор: запускает bot.py и поднимает его через 10 с после падения
ensure-bot.vbs + ensure-bot.ps1сторож: проверяет /health; если бот молчит дольше 10 минут — убивает процесс
задача DshTelegramBotзапускает сторожа при входе и каждые 5 минут
telegram-bot.vbs в автозагрузкеподнимает супервизор при входе
$a = New-ScheduledTaskAction -Execute 'wscript.exe' `
  -Argument "`"$bot\ensure-bot.vbs`""
$t1 = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
$t2 = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(2) `
  -RepetitionInterval (New-TimeSpan -Minutes 5)
Register-ScheduledTask -TaskName 'DshTelegramBot' -Action $a -Trigger @($t1, $t2) -Force

Кнопки и команды

Внизу чата: Модель, Доступ, Новая сессия, Статус, Обновить. Печатать /… не нужно, но команды работают.

КомандаЧто делает
/flash, /proмодель deepseek-flash / deepseek-v4-pro
/low, /high, /maxусилие рассуждений
/full, /write, /readправа агента
/newновая сессия агента
/statusсостояние бота, модель, усилие, доступ
/cancelостановить текущий ход
/updateперезапуск бота

Права агента

ПресетЧто разрешено
read-onlyтолько чтение, изменения — через запрос
workspace-writeзапись в рабочую папку; выход за неё — через запрос
danger-full-accessвся машина, без подтверждений (по умолчанию)

Смена прав начинает новую сессию агента: пресет закрепляется за сессией при её создании.

Файлы

ФайлНазначение
bot.pyточка входа: aiogram 3, команды, потоковая правка сообщения, панель
backends.pyагент DSH и прямой DeepSeek API
formatting.pyMarkdown → MarkdownV2
approval_bridge.mjsмост approval-запросов DSH в Telegram
config.jsonтокен бота, ключ DeepSeek, модель/усилие/права, панель
state.jsonвладелец, сессии чатов, выбранные настройки (создаётся сам)
start.ps1, bot.vbsсупервизор в скрытом окне
ensure-bot.ps1, ensure-bot.vbsсторож по /health
logs/bot.log, stdout.log, stderr.log, supervisor.log, watchdog.log

Диагностика

СимптомПричина / что делать
409 Conflictэтого бота поллит кто-то ещё — остановите лишние процессы
бот молчит, /health не отвечаетпроцесс упал: сторож поднимет в течение 5 минут, лог — logs/watchdog.log
EPERM … cordis.ymlбот запущен venv-исполнителем, а не базовым python — см. start.ps1
can't parse entitiesMarkdownV2 не принят; сообщение уйдёт простым текстом
бот молчит, /status отвечаетзапрос ещё выполняется: дождитесь ответа или /cancel

Безопасность

  • config.json содержит токен бота и ключ DeepSeek — не коммитьте его (он в .gitignore); в репозитории лежит обезличенный config.example.json.
  • danger-full-access даёт боту доступ к компьютеру: для чужих чатов ставьте workspace-write или read-only.

Лицензия

MIT © 2026 DEXWEBCODE