omdsh-plugins/omdsh-remctrl0

@omdsh-plugins/omdsh-remctrl

DeepSeek Harness 的远程控制插件:在独立端口上提供第二个入口,支持设备配对和分级方法白名单,允许通过尾网(如手机)查看会话、审批请求并派发新任务。

AI 分析

实现通过手机等移动设备远程监控、审批和控制 DSH 任务。适合需要离开电脑时仍能把控 AI 智能体工作进度的用户。建议配合 Tailscale 使用。

套件
@omdsh-plugins/omdsh-remctrl
版本
0.1.0
授權
MIT
最近更新
2026年8月17日

安裝

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:omdsh-plugins/omdsh-remctrl

Configuration

Settings namespace omdsh-remctrl, editable from omdsh-plughub.

FieldDefaultWhat it does
enabledtrueWhether the door opens at all
bindHost127.0.0.1Loopback, or a tailnet address this machine holds
port3081The phone's port — not the harness's 3080
defaultTierdriveWhat a newly paired device may do
pairingTtlSeconds300How long a code lives
maxPairingAttempts5Wrong guesses a code survives
devicesWritten by the plugin; holds token hashes, never tokens

Every field is applies: 'live'. Moving bindHost, port or enabled rebinds the listener where it stands; a tier change and a revocation are in force on the next request. Nothing here asks for a restart.

Two behaviours are worth knowing before editing:

  • A bindHost this machine does not hold is refused as you save it, not at the next boot. The namespace validates a write by running the same bind policy the listener runs, so a laptop whose Tailscale is down cannot store an address it would then fail to listen on — the panel reports the refusal and the stored value stays as it was.
  • The device table is authoritative in memory. Mirroring it back into settings can fail — a read-only provider, a disk that will not take the write — and when it does, this plugin logs a line and carries on: pairings hold until the process ends rather than taking the whole agent host down with them.

Tiers

Each admits everything below it.

TierMay
observeList and read sessions, subagents, workspaces, skills, presets
respond…and cancel a run or interrupt a subagent
drive…and send messages, steer, edit the queue, start and rename sessions
full…and fork, pick models, edit workspaces and goals

cancel sits in respond rather than drive on purpose: somebody trusted to watch a run should be able to end one going wrong without being trusted to launch another.