voyager
Nagi-ovo
Enhancement suite for Gemini, AI Studio, Claude & ChatGPT — plus a prompt manager for any web UI, DeepSeek Harness included. / 面向 Gemini、AI Studio、Claude 与 ChatGPT 的增强套件;提示词管理器可用于任意 Web UI,含 DeepSeek Harness。
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:luzhengyangtx/dsh-telegram-duty
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
Turn DeepSeek Harness (DSH) into your always-on pocket duty office: message a Telegram bot from your phone, the duty agent gets to work, and the result comes back to your phone. Idle cost is zero tokens — the plugin long-polls getUpdates and only wakes an agent when a message arrives.
Create a bot — chat with @BotFather, send /newbot, and copy the token (looks like 123456:ABC...).
Find your chat id — send any message to @userinfobot (or to your new bot) and read the numeric id.
Install the plugin — from inside a DeepSeek Harness checkout:
dsh plugin --profile web add @luzhengyangtx/dsh-telegram-duty
Configure — add to C:\Users\<you>\.dsh\profiles\web\cordis.patch.yml:
- id: telegram-duty
config:
token: '123456:YOUR-BOT-TOKEN' # step 1
chatId: 123456789 # step 2 (whitelist)
language: zh # or en
Restart dsh web and send any message to your bot from the phone. Done — the duty agent answers.
While on duty, the web UI shows a banner telling you approvals are forwarded to your phone, with a one-click switch back.
/sessions lists your workspace sessions (live and offline, matching the web sidebar; blank drafts are hidden) with numbered buttons: tap one to route following messages there. Prefix one message with #N to send just that one to session N. /duty returns to the default duty route. Offline sessions are woken automatically on the first targeted message.3 approve / 3 reject still works). Unanswered approvals time out to rejected (fail-closed, 10 minutes by default). /away warns when the web UI still holds unanswered approvals, and /unblock cancels turns stuck on them./away, or flip watchMode in the web settings./back.getUpdates cursor and the watch mode persist across restarts; backlog is fast-forwarded on the very first run only.language setting (zh | en, default en).proxy only when Telegram is blocked in your network (see the table below).All fields live in the telegram-duty settings namespace (the web Settings page shows it, or put them under the patch row's config:).
| Field | Default | Meaning |
|---|---|---|
token |
— | Bot token (marked secret; never shown in settings UIs). Alternatively set credentialsFile to a JSON file with token / chat_id / proxy. |
chatId |
— | Whitelisted chat id. |
proxy |
(empty) | HTTP proxy used for Bot API calls. Leave empty for a direct connection — only set a local proxy (e.g. http://127.0.0.1:7890) when Telegram is blocked in your network, and keep that proxy running. |
sessionId |
telegram-duty |
Stable DSH session id; created on first message. |
dutyCwd |
process cwd | Workspace directory of the duty session. |
approvalTimeoutMinutes |
10 |
Unanswered approvals are rejected after this. |
watchMode |
local |
local (web popups) or duty (approvals to Telegram). |
language |
en |
Language of all Telegram messages: en or zh. |
dataDir |
<DSH_HOME>/storages/telegram-duty |
Offset persistence directory. |
credentialsFile |
— | Optional JSON file { token, chat_id, proxy } for credentials defaults. |
replyChunkChars |
3800 |
Split threshold for long replies (Telegram limit 4096). |
/help — usage/sessions — list your workspace sessions (live + offline) with numbered buttons; tap a number to route following messages there#N message — send just this one message to session N (numbering from the latest /sessions; expires after 30 minutes)/duty — back to the default duty-session route/away — enter duty mode (approvals go to the phone); warns about approvals the web UI still holds/unblock — cancel turns stuck on unanswered web approvals (resend the task afterwards)/back — return to local mode3 approve / 3 reject — answer approval #3; with a single pending approval, bare approve/reject works too./start to the bot at least once (bots cannot message first); ③ the DSH log shows no telegram-duty errors; ④ watchMode/language behave as expected.proxy (e.g. http://127.0.0.1:7890 for Clash) only when your network blocks Telegram, and keep that proxy running while DSH is up.getUpdates; an agent is woken only when a message arrives.telegram_ask), and proactive agent messages (telegram_notify)./sessions not list all my sessions? It lists your workspace sessions exactly like the web sidebar: blank drafts are hidden, and sessions appear live (空闲/忙碌) or offline (离线 — woken on the first targeted message). The internal duty session is never listed; the default route is the duty session anyway.dsh plugin --profile web add @luzhengyangtx/dsh-telegram-duty@<version> (or bump the dependency in your profile's package.json).| Status | Item | Tier |
|---|---|---|
| ✅ shipped (v0.4.0) | targeted sessions (/sessions / #N / /duty) · instant ack + typing · telegram_notify · approval recovery (/unblock) · sidebar duty button · bigger banner · zh/en |
free |
| 🚧 planned (v1.x) | voice-message notes, more handy utilities | free |
| 🔭 preview only | multi-platform (Feishu / WhatsApp / …), team & multi-user mode, cloud hosting, priority support | pro (future) |
Free forever: Telegram duty, global approval forwarding, duty/local toggle, web duty banner, zh/en. The pro row is only a preview — no pro code exists yet; it marks the direction of a future commercial edition.
Need help onboarding, configuration, connecting other platforms, or bespoke features? Email dsh-telegram-duty@outlook.com. Typical engagements start at ¥500 (integration + configuration + Q&A); complex work is quoted case by case. Scope of delivery (working setup + docs + basic Q&A) is agreed before the work starts.
pnpm --filter "@luzhengyangtx/dsh-telegram-duty" run typecheck
node_modules\.bin\vitest.cmd run packages/interaction/telegram-duty/tests
# channel self-check against a real bot:
$env:TG_CREDS='C:\path\to\config.json'
node --import tsx/esm packages/interaction/telegram-duty/scripts/check-telegram.ts
MIT. The session-driving pattern (resume/create + summarize) follows @kriskwok/dsh-feishu-gateway (MIT) — see LICENSE.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: telegram、telegram-bot。