AprilCrystal/dsh-remote ↗★ 0

dsh-openai-bridge

OpenAI-compatible HTTP endpoint plus a mobile panel for the DeepSeek Harness: drive a session from a phone, read any session's transcript, browse and stage files, answer approvals, switch the model, watch and compact the context, and change the sandbox preset behind a code that is shown on the desktop. 适合需要用手机远程驱动会话、查看状态和管理文件的用户。

패키지
dsh-openai-bridge
호환성
미검증
Cordis peer 범위
~4.0.4
버전
0.1.0
최근 업데이트
2026. 10. 6.

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:AprilCrystal/dsh-remote

Configuration

Set through the bundle patch (cordis.patch.yml), each with an environment override:

KeyEnv overrideDefaultMeaning
tokenDSH_OPENAI_BRIDGE_TOKEN''Empty disables the bridge entirely. Fails closed.
cwdDSH_OPENAI_BRIDGE_CWDprocess.cwd()Workspace root for bridge-created sessions.
permissionPresetDSH_OPENAI_BRIDGE_PERMISSIONread-onlyPreset pinned onto each newly created session. It is deliberately not re-pinned on later turns: doing that would silently reset a preset you changed.
agentPresetDSH_OPENAI_BRIDGE_PRESETstandardAgent preset each session is composed from.
panelPath—/bridgeWhere the mobile panel mounts.
fileRootDSH_OPENAI_BRIDGE_FILEROOTcwdBrowse roots for the panel. A string is one root, a list is several, '*' is every fixed drive. See Browsing beyond the workspace.
approvalScope—allall lets the panel answer approvals for any session; bridge narrows it to sessions in cwd.
permissionSwitch—truefalse removes the phone's permission switch entirely — no button, and the API 404s.
permissionPresets—['read-only','workspace-write']Which presets the phone may request. danger-full-access is excluded on purpose.
authorizationCode—''Non-empty switches the handshake to a fixed code you choose. Empty means the server mints a one-time code that is displayed on the desktop only.
authorizationTtlMs—180000How long a pending authorization stays confirmable.
desktopPopup—trueWhether to auto-open the authorization popup on this PC.
ipAllowlist—trueRefuse every peer that has not been approved, whatever token it holds. Loopback never pairs. See The per-client allowlist.
pairingPath—/pairWhere a not-yet-approved device posts its code. The only route reachable from the LAN without approval.
pairingTtlMs—600000How long a minted pairing code stays valid.
pairingAttempts—5Wrong codes tolerated per code before it is dead for the rest of its TTL.
pairingPopup—trueOpen the setup page on this machine by itself when a device starts waiting.
pairingPopupCooldownMs—15000Shortest gap between automatic popups, so a LAN sweep cannot spray windows.
pairingMaxPending—16Waiting devices kept; past this the oldest is dropped.