DSH Telegram Channel (todayer)
Мобильный Telegram-канал (бот) для DeepSeek Harness (dsh): управляйте локальными сессиями, топиками и медиа прямо из Telegram. Основан на hi-wenw/dsh-telegram-channel и расширен механизмами Telegram-гейта агента Hermes.
Быстрый старт: dsh plugin --profile web add github:todayer/todayer-dsh-telegram-channel
Возможности
- 🧵 Сессии per chat/topic — каждый топик (форум / DM-topic) = отдельная сессия; ответы бота уходят в ту же ветку.
- 📌 Топики —
message_thread_id, корректная отправка в General (1), createForumTopic/editForumTopic/deleteForumTopic; авто-переименование топика по заголовку сессии.
- 💬 DM Topics (Bot API 9.4) — топики прямо в личке, каждый = изолированная сессия; лобби-режим корня. (
DSH_TELEGRAM_DM_TOPICS)
- 👥 Гейтинг групп —
require_mention, allowed_chats, allowed_topics, free_response_chats/topics, guest_mode, ignored_threads.
- 🖼 Медиа-вход/выход — приём фото/видео/голосовых/файлов/стикеров; нативная отправка файлов по тегам
MEDIA:/путь.
- ⌨️ Команды —
/new /reset /stop /sessions /last /model /status /unbind /help.
- ✅ Статус-индикатор Online/Offline (
setMyShortDescription).
- 🛡 Фильтр тулов —
<tool_calls> не утекают в Telegram.
- 🔥 Поллинг-устойчивость (конфликт 409 + экспоненциальный backoff).
- 🔘 Choice/clarify —
ask_user_question → инлайн-кнопки (при доступном userQuestions).
- 🌐 Русский текст всех сообщений бота.
Установка/подключение
Требуются: Node ≥ 22, dsh web с моделью, бот от @BotFather.
# с этой машины (локально)
dsh plugin --profile web add ./dsh-telegram-channel-local
# из репозитория
dsh plugin --profile web add github:todayer/todayer-dsh-telegram-channel
# или tarball
dsh plugin --profile web add ./dsh-telegram-channel-0.3.5.tgz
Настройка (~/.dsh/telegram.env)
# обязательные
DSH_TELEGRAM_TOKEN=123456789:AA... # от @BotFather
DSH_TELEGRAM_ALLOWED_USER_IDS=123456789 # ваш user id (от @userinfobot)
# опционально — топики/группы
DSH_TELEGRAM_REQUIRE_MENTION=false
DSH_TELEGRAM_ALLOWED_CHATS=
DSH_TELEGRAM_ALLOWED_TOPICS=
DSH_TELEGRAM_FREE_RESPONSE_CHATS=
DSH_TELEGRAM_FREE_RESPONSE_TOPICS=
DSH_TELEGRAM_GUEST_MODE=false
DSH_TELEGRAM_IGNORED_THREADS=
# топики в личке (JSON)
DSH_TELEGRAM_DM_TOPICS=[{"chatId":1212123,"topics":[{"name":"Общее"}]}]
# статус-индикатор
DSH_TELEGRAM_STATUS_INDICATOR=1
DSH_TELEGRAM_STATUS_ONLINE=🟢 Online
DSH_TELEGRAM_STATUS_OFFLINE=🔴 Offline
Пропишите в EnvironmentFile сервиса dsh.service и перезапустите:
sudo systemctl restart dsh.service
Команды бота
| Команда | Назначение |
|---|
/start | Справка |
/sessions | Список сессий по рабочим областям + прикрепление |
/new | Создать новую сессию (force-new) |
/reset | Алиас /new |
/last | Прошлый диалог привязанной сессии |
/model | Сменить модель |
/status | Текущая привязка |
/stop | Остановить и отвязать |
/unbind | Отвязаться (без удаления) |
/help | Полный список |
Структура
lib/
bridge.js — основная логика (обработка сообщений, топики, сессии, команды)
client.js — Telegram Bot API клиент (поллинг, файлы, топики)
catalog.js — каталог сессий/рабочих областей
commands.js — команды и сообщения
format.js — форматирование/очистка (в т.ч. stripToolCalls)
history.js — «прошлый диалог»
index.js — регистрация плагина (Config/inject)
...
Лицензия
MIT
Оригинал
Основано на hi-wenw/dsh-telegram-channel. Механика расширена по мотивам Telegram-гейта Hermes Agent.