dsh-dispatch

DSH PLUGIN通知与集成

仓库 alextangson/dsh-dispatch

通知与集成 L4 · 沙盒安装通过 安全审查:低风险 可信度:银 可安装插件
安装这个插件

dsh-dispatch 是 alextangson 维护的 通知与集成 类 DSH 可安装插件, 仓库为 alextangson/dsh-dispatch,许可证 MIT。 下面按「装什么、怎么装、验没验过、跑起来要注意什么」逐项列出。

一句话选型结论

按资料字段整理

dsh-dispatch 是通知与集成类的 DSH 可安装插件,验证等级 L4 · 沙盒安装通过,安全审查为低风险,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类通知与集成 收录类型可安装插件 验证等级L4 · 沙盒安装通过 安全审查低风险
验证等级 L4 L4 · 沙盒安装通过
GitHub 星标 1 复刻 未标注 · 未关闭 issue 未标注
最近更新 2026-08-25 创建于 未标注
README 13.7 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add dsh-dispatch@0.4.0
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

通知与集成
字段来自项目仓库与公开索引,中文说明由本站标注

适用场景

终端命令通知GitHub 集成

验证等级与安全审查

L4 · 沙盒安装通过
自动化流程结论,不是人工审核
验证等级L4 · 沙盒安装通过安装命令在隔离沙盒内真实执行成功,无依赖错误
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度稳定按仓库活跃度与最近更新时间给出
可信度银综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✕ 未通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 插件目录树加载失败
  • L5.3_HTTP_SERVED HTTP 服务响应
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L4:在沙盒里真实装过,依赖能装上,不是纸面声明。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在通知与集成场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-dispatch当前 L4 · 沙盒安装通过 低风险 1 未标注 有
treg L3 · 安装规范通过 低风险 4,976 未标注 无
dsh-purge 未做沙盒验证 未标注 3,412 未标注 有
dsh-im L5 · 运行验证通过 低风险 1,837 0.1.7-rc.2 等 10 个 有
dsh-dafeiyu L5 · 运行验证通过 低风险 425 0.1.7-rc.2 等 10 个 有
dsh-trading L3 · 安装规范通过 低风险 235 未标注 无

仓库档案

通知与集成
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方alextangson仓库 dsh-dispatch · 默认分支 未标注
分类通知与集成notify
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue1 / 未标注 / 未标注收录时的数值,非实时
创建 / 更新未标注 · 2026-08-25最后推送 未标注
本站收录2026-10-14首次进入本站目录的时间

README 全文

13.7 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-dispatch

Dispatch tasks to DeepSeek Harness from your phone. Approve tool calls with one tap. Command every machine you own.

从手机给 DeepSeek Harness (dsh) 派任务、审批一键批、一部手机指挥所有机器。中文说明 →



> Like Claude Code's Dispatch + Remote Control, but for dsh — open source, end-to-end encrypted, self-hostable.

<!-- TODO: demo GIF -->

Why this exists

dsh web binds to 127.0.0.1 with no auth — by design. Every existing remote tool wraps that web page in a WebView. dsh-dispatch is not a mirror. It is a command center:

WebView mirrors dsh-dispatch
See sessions from the couch ✅ ✅
Dispatch a new task from your phone ❌ ✅ into an isolated git worktree
Approval push notifications, tap to allow/deny ❌ ✅ for every session, even desk-started ones
Many machines on one screen ❌ one tunnel each ✅ one board
Relay can read your traffic usually never — zero-knowledge, E2E encrypted
  • 📤 Dispatch — type a prompt on your phone; the machine creates a git worktree, spins up a fresh dsh session, and reports the final answer back with a push notification.
  • ✅ Approvals on your lock screen — the plugin joins dsh's approval/request waterfall. Phone and desktop race; first decision wins; nothing is ever auto-approved.
  • ❓ Questions forwarded — ask_user_question choices show up on your phone; answer from anywhere and the session continues (also rescues the upstream no-answerer hang).
  • 💬 Keep talking — a finished session is not a dead end: reply from the card and the machine picks the same session back up.
  • 👀 See what it's doing, and what it did — the card names the tool in flight and keeps the turn's trail, so a tool that returns in 200ms leaves a trace instead of a blink.
  • 📖 Read the conversation — open any session's transcript on the phone, page back through it, and reply from the same card.
  • 📁 Pick the directory, don't type it — the machine publishes the roots it allows and the phone offers them as a choice; no absolute path recalled from memory, no rejection after you hit send.
  • ⚡ Optional full-access tier — dispatch under dsh's danger-full-access to skip approvals for fully-trusted tasks; off by default, machine-gated, permanent red badge on every such session.
  • 🌏 English or Chinese — switch in Settings, including the sentences the machine writes.
  • 🖥️ Multi-machine — one phone, N machines, one board with live session states.
  • 🔒 Zero-knowledge relay — routes ciphertext it cannot read. The 32-byte pairing secret travels only inside the QR code. Self-host the relay with one command.

How it works

┌────────────┐  E2E encrypted   ┌───────┐  E2E encrypted   ┌──────────┐
│ dsh plugin │ ───── wss ─────► │ relay │ ◄──── wss ────── │ PWA      │
│ (machine)  │                  │ (dumb │                  │ (phone)  │
│            │                  │ pipe) │                  │          │
└────────────┘                  └───────┘                  └──────────┘
approval/request waterfall      sees only                approve / dispatch
ctx.agents.create + worktree    ciphertext               web push alerts
package npm what it is
dsh-dispatch the dsh plugin — event-bus listener, approval race, worktree dispatch
dsh-dispatch-relay stateless ciphertext router + Web Push, Docker/npx one-liner
@dsh-dispatch/pwa — installable phone app (PWA) — no app store needed

Quickstart

On the machine that runs dsh:

# 1. Run a relay — yours, or any you trust (it can&#x27;t read your traffic)
npx dsh-dispatch-relay            # listens on :8787

# 2. Install the plugin into your dsh profile
dsh plugin --profile web add dsh-dispatch
# 3. Configure it — ~/.dsh/profiles/web/cordis.patch.yml
- id: dsh-dispatch
config:
relay: &#x27;ws://localhost:8787/ws&#x27;          # wss:// for anything non-local
allowedRoots: [&#x27;/path/you/allow&#x27;]        # dispatch stays OFF until you set this
pwaUrl: &#x27;https://alextangson.github.io/dsh-dispatch&#x27;   # where the pairing link points
# 4. Boot dsh, then run /dispatch-pair and open the printed link on your phone
dsh web

The phone app is hosted at **** — no install, no app store; add it to your Home Screen so Web Push can reach the lock screen. It is a static page that talks only to the relay you configured, so self-host it from packages/pwa if you would rather not load it from GitHub Pages.

Your phone reaches the relay directly, so a relay on localhost only works from the same machine. For a real phone, put the relay somewhere reachable over wss:// — a $5 VPS, or a tunnel in front of it.

Approval forwarding works immediately after pairing; dispatch activates once allowedRoots is set. Relay self-hosting (Docker, VAPID push keys) and every config key: see packages/relay and packages/plugin.

Security model

  • Pairing = trust. The QR/pairing code contains a 32-byte secret; whoever scans it controls the machine within allowedRoots. Treat it like an SSH key. Rotate anytime with /dispatch-repair.
  • E2E encryption (nacl.secretbox, per-message nonce). The relay stores room presence and push endpoints — never plaintext, never keys.
  • No timeout-approve exists anywhere in this codebase. Unanswered approvals stay pending and re-remind. The one way a tool call runs unreviewed is the full-access tier you switch on yourself, per machine and per dispatch — and every such session carries a permanent red badge.
  • Dispatch is allowlisted. Requests outside allowedRoots are rejected visibly. Worktrees are never auto-deleted.

Status & roadmap

v0.4.0 on npm — developer preview tracking dsh 0.1.x (upstream warns of breaking changes; every harness API touchpoint is isolated in one adapter layer). Everything below is verified end-to-end against dsh 0.1.1-rc.2 with the real DeepSeek API, not in mocks: phone dispatch → worktree session → real tool execution → sandbox-escalation approval pushed to the phone → allow → command runs; a question answered from the phone flows back into the running session; a follow-up typed on the phone reopens a finished session, the card names the tool it runs and keeps the turn's trail, and the session's transcript reads back on the phone; a full-access dispatch runs under danger-full-access and writes outside the workspace with no approval prompts.

The hosted PWA tracks main and the plugin is released from it, so the two line up at 0.4.0. An older machine degrades visibly rather than silently: the directory step says the plugin is too old and falls back to a text field, no reply box appears, and a transcript that the machine cannot serve says so instead of spinning.

dsh-dispatch-relay stays at 0.2.0 — it has not changed since, and a version bump with no diff behind it is a lie about what you are installing.

Known limitations:
- A full-access session runs under dsh's danger-full-access preset, which sets approval: &#x27;never&#x27; — so it raises no approval cards at all. Full access and phone approvals are mutually exclusive per session, by dsh's own preset semantics. That's the trade: speed for no review surface.
- Web Push works through the relay, but lock-screen delivery has only been verified in desktop browsers so far, not on a physical phone over HTTPS.
- Each dispatch gets a fresh worktree from the repo's HEAD — files created by a previous dispatch live in that dispatch's own worktree.
- A pending question doesn't survive a phone reload (no questions.get in the protocol yet); the machine re-reminds until answered.
- Answer on the phone and dsh's own web page keeps showing the card. The decision is applied and the tool proceeds — the stale card is inert, and clicking it changes nothing (the race is settled once, late answers are discarded). Nothing in the plugin can withdraw it: the waterfall hands answerers next: () =&gt; Promise with no argument, and the only withdrawal path is ApprovalRequest.signal, which belongs to the asker. dsh does log approval/decided with the outcome when the phone claims a request, so the web app has what it needs to dismiss its own card.
- The two halves do not list the same sessions. The phone lists live sessions — including ones you started at your desk — and can read any of their transcripts, but it never lists cold history, so it is a board of what is running rather than an archive. In the other direction, dsh's web page groups sessions by registered workspace, and a dispatched session lives in a fresh worktree that was never added as one, so phone-dispatched work is invisible on the desktop unless you add that worktree yourself.
- A transcript is the conversation, not the log: tool arguments and tool output never leave the machine. What ran is on the card as the turn's trail; what it printed is not on your phone.
- The approval card's three field labels stay Chinese in English mode. A structured copy of the detail would double a field already capped at 10KB inside a 16KB envelope; halving how much of a command you can read before approving it is a bad trade on that particular screen. The tool name, reason and arguments were never translatable anyway.
- Console diagnostics are Chinese. They are developer output, not UI, and the language switch does not claim them.

Roadmap: real-device push polish → fleet views → session history beyond the live board.

中文

这是什么:dsh 官方没有手机端、没有远程方案。现有第三方全是"把 localhost:3080 套壳进 WebView"。dsh-dispatch 走的是 Claude Code Dispatch 那条路——一个指挥中心:

  • 手机派任务:输入一句话,机器自动开独立 git worktree 跑一个新会话,跑完推送结果。目录不用手打——机器把白名单目录报给手机,你点选就行。
  • 审批推送:任何会话(包括你在电脑上开的)的工具审批都会推到手机,锁屏一键允许/拒绝;手机和桌面竞速,先答先赢,永不超时自动批准。
  • 提问转发:模型调 ask_user_question 时,选项直接出现在手机上,答完会话继续跑。
  • 接着聊:会话跑完不是终点,在卡片下面直接追问,机器会把同一个会话拉起来继续。
  • 看得见在干嘛、干过啥:卡片显示此刻正在跑的工具,并保留这一轮用过的工具轨迹——几百毫秒返回的工具不再一闪而过。
  • 能读对话:任何会话都能在手机上展开完整聊天记录,往上翻页,在同一张卡片里接着问。
  • 多机看板:一部手机管 N 台机器,会话状态实时同屏。
  • 中英双语:设置里一键切换,连机器发来的报错也会跟着翻译。
  • 零知识中继:relay 只转发密文(端到端加密,密钥只存在于配对二维码里),一条命令自托管。

快速开始:npx dsh-dispatch-relay → dsh plugin --profile web add dsh-dispatch → 在 profile 的 cordis.patch.yml 里配 relay 和 allowedRoots → dsh 里执行 /dispatch-pair,手机打开 扫码即配对。手机是直连 relay 的,所以 localhost 上的 relay 只有本机能用;真要用手机,relay 得放在 wss:// 能访问到的地方。

版本:插件与托管 PWA 都在 0.4.0。机器上如果还是 0.2.0,降级是看得见的——目录选择器会提示"这台机器的插件较旧"并退回手填,追问输入框不出现;升级插件即可。

已知限制:手机先答审批后,dsh 网页版那张卡片会残留——决定已生效、卡片是死的(点了会被丢弃,不会重复执行),但插件没有 API 能撤下它。另外两边看到的会话不是同一批:手机只列活着的会话(包括你在电脑上开的),不含历史;而手机派的任务跑在新建 worktree 里,没被注册成工作区,所以在 dsh 网页版侧栏里看不到。

安全:配对码即信任边界(当 SSH 私钥对待,可随时 /dispatch-repair 轮换);派任务只进你白名单的目录;审批永不自动通过(唯一例外是你主动开启的完全访问模式,那类会话在看板上永久标红)。

Contributing

Issues and PRs welcome. The wire protocol is frozen in docs/PROTOCOL.md; product boundaries in docs/PRODUCT.md; every dsh API claim is sourced in docs/dsh-plugin-groundtruth.md.

Keywords: DeepSeek Harness plugin, dsh-plugin, dsh remote control, mobile approvals, phone dispatch, agent remote control, E2E encrypted relay, Claude Code Dispatch alternative, DeepSeek 手机远程控制, 手机审批, 远程派任务.

License

MIT

常见问题

5 问
答案由本站依据条目字段整理,不引用上游原文
dsh-dispatch 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add dsh-dispatch@0.4.0` 即可。

dsh-dispatch 的验证等级是什么意思?

L4 · 沙盒安装通过。安装命令在隔离沙盒内真实执行成功,无依赖错误

dsh-dispatch 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-dispatch 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-dispatch 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

同名或近似条目

1 条
不同作者的仓库分开列,请确认你要装的是哪一个
通知与集成
按星标排序,可作替代方案

treg

treg

Treg 是面向 Agent 工具的 OpenRouter,聚合 60 个提供商的 2896 个端点,按调用计费,统一令牌访问,无需注册各供

L3 · 安装规范通过 4,976 星

dsh-purge

dsh-purge

dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚

未标注验证等级 3,412 星

dsh-im

dsh-im

将IM机器人接入DeepSeek Harness,支持飞书、微信、钉钉等九种渠道,通过扫码或凭据配置,统一管理多机器人连接。

L5 · 运行验证通过 1,837 星

dsh-dafeiyu

dsh-dafeiyu

DSH 大肥鱼是一款由 DeepSeek Harness 真实工作状态驱动的桌面伴侣插件,以始终置顶的透明窗口实时展示 Agent 的思考、

L5 · 运行验证通过 425 星

dsh-trading

dsh-trading

L3 · 安装规范通过 235 星

alextangson 的其它插件

1 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。