dsh
OpenPetsHQ/openpets将 DeepSeek Harness 的生命周期状态、错误与审批请求,桥接到本地运行的 OpenPets 桌面伙伴。
Telegram 值班网关:手机消息任务闭环(专属值班会话)、值守模式全局审批转发(内联同意/拒绝按钮)、telegram_ask 选项提问、值守/本地切换与网页横幅、中英双语消息、空闲零 token。
把 DeepSeek Harness(DSH)变成随身值班室:手机 Telegram 发消息 → 值班智能体干活 → 结果回复到手机。空闲时零 token(长轮询 getUpdates,消息到达才唤醒智能体)。
要求 DeepSeek Harness ≥ 0.1.2-rc.1。 v0.5.0 起插件通过
session.snapshotEvents()读取会话历史,该接口在 0.1.1-rc.2 及更早版本中不存在(于dsh-v0.1.2-rc.1引入)。如果您仍在使用 0.1.1-rc.2 或更早版本,请继续使用 npm0.4.0——最新版在那上面无法加载。
创建机器人:在 Telegram 里找 @BotFather,发送 /newbot,按提示取名,拿到 token(形如 123456:ABC...)。
查自己的 chat id:给 @userinfobot(或你刚建的机器人)发任意消息,它会回复你的数字 id。
安装插件:在 DeepSeek Harness checkout 目录里执行:
dsh plugin --profile web add @luzhengyangtx/dsh-telegram-duty
填写配置:在 C:\Users\<你>\.dsh\profiles\web\cordis.patch.yml 中加上:
- id: telegram-duty
config:
token: '123456:你的机器人token' # 第 1 步
chatId: 123456789 # 第 2 步(白名单)
language: zh # 或 en
重启 dsh web,用手机给你的机器人发条消息——搞定,值班智能体开始回话。
进入值守后,网页顶部会出现横幅提示"审批已转到手机",点一下即可切回本地。
/sessions 列出你工作区的会话(在线 + 离线,与网页侧边栏一致,空壳草稿不显示)并带编号按钮——点编号后后续消息都发给该会话;消息前加 #编号 只单发这一条;/duty 回默认值班路由;离线会话在第一条定向消息时自动唤醒。3 同意 / 3 拒绝 仍兼容);超时(默认 10 分钟)按拒绝处理(保守安全)。/away 会提醒网页上还挂着的审批,/unblock 可取消被审批卡住的回合。/away 进入值守;网页任意会话发消息或 /back 回到本地(本地模式审批走网页弹窗)。language 配置(zh | en,默认 en)。proxy。网页设置页可见可改,也可写在补丁行的 config: 下。
| 字段 | 默认 | 说明 |
|---|---|---|
| token | — | 机器人 token(secret,界面不展示);也可用 credentialsFile 提供 |
| chatId | — | 白名单 chat id |
| proxy | (空) | Bot API 代理地址。⚠ Telegram 可直连的网络请保持留空(默认直连);仅当网络封锁 Telegram(如中国大陆)时才填本地代理(如 Clash 的 http://127.0.0.1:7890),并保持代理软件开着 |
| sessionId | telegram-duty | 值班会话 id,首次消息自动创建 |
| dutyCwd | 进程 cwd | 值班会话工作目录 |
| approvalTimeoutMinutes | 10 | 审批超时(分钟),超时按拒绝 |
| watchMode | local | local / duty |
| language | en | 手机消息语言:en / zh |
| dataDir | <DSH_HOME>/storages/telegram-duty | 游标持久化目录 |
| credentialsFile | — | 可选凭据 JSON 文件 {token, chat_id, proxy} |
| replyChunkChars | 3800 | 长回复分段阈值 |
/help — 使用说明/sessions — 列出工作区会话(在线 + 离线)带编号按钮,点编号后消息定向到该会话#编号 消息 — 只把这一条消息发给指定会话(编号以最近一次 /sessions 为准,30 分钟有效)/duty — 回到默认值班会话路由/away — 进入值守模式(审批转到手机);若网页还挂着未处理审批会提醒你/unblock — 取消被审批卡住的回合(之后重发任务即可,审批会正确推到手机)/back — 回到本地模式3 同意 / 3 拒绝 — 回答第 3 条审批;仅一条待批时直接回"同意/拒绝";提问点选项按钮或直接回复选项文字。/start(机器人不能主动发起对话);③ DSH 日志里有没有 telegram-duty 报错;④ 消息是否被当作命令(/away 等不产生回复)。proxy(如 Clash 的 http://127.0.0.1:7890),并且 DSH 运行期间代理软件要一直开着。dsh plugin --profile web add @luzhengyangtx/dsh-telegram-duty@<版本号>,或在 profile 的 package.json 里改依赖版本。| 状态 | 内容 | 版本性质 |
|---|---|---|
| ✅ 已发布(v0.4.0) | 定向会话(/sessions、#编号、/duty)· 即时收到提示 + 输入中动画 · telegram_notify 主动推送 · /unblock 审批自救 · 侧边栏值班按钮 · 横幅加大 · 中英双语 | 免费 |
| 🚧 计划中(v1.x) | 语音消息笔记、更多实用小功能 | 免费 |
| 🔭 仅预告 | 多平台接入(飞书/WhatsApp 等)、团队/多用户模式、云托管、优先支持 | 专业版(未来) |
永远免费:Telegram 值班、全局审批转发、值守/本地切换、网页横幅、中英双语。专业版一行只是预告,目前没有任何专业版代码——它标记的是未来商业版的方向。
需要接入帮助、配置指导、接入其它平台或定制功能?发邮件到 dsh-telegram-duty@outlook.com。常规接入起步价 500 元/单(接入 + 配置 + 答疑),复杂功能按工作量单独报价;开工前会先明确交付范围(跑通 + 文档 + 基础答疑)。
pnpm --filter "@luzhengyangtx/dsh-telegram-duty" run typecheck
node_modules\.bin\vitest.cmd run packages/interaction/telegram-duty/tests
# 通道自检:$env:TG_CREDS='配置文件路径'; node --import tsx/esm packages/interaction/telegram-duty/scripts/check-telegram.ts
MIT。会话驱动模式(resume/create + summarize)参考 @kriskwok/dsh-feishu-gateway(MIT),见 LICENSE。