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. 适合需要用手机远程驱动会话、查看状态和管理文件的用户。
Install
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:AprilCrystal/dsh-remoteREADME
Read the full README ↗Configuration
Set through the bundle patch (cordis.patch.yml), each with an environment
override:
| Key | Env override | Default | Meaning |
|---|---|---|---|
token | DSH_OPENAI_BRIDGE_TOKEN | '' | Empty disables the bridge entirely. Fails closed. |
cwd | DSH_OPENAI_BRIDGE_CWD | process.cwd() | Workspace root for bridge-created sessions. |
permissionPreset | DSH_OPENAI_BRIDGE_PERMISSION | read-only | Preset pinned onto each newly created session. It is deliberately not re-pinned on later turns: doing that would silently reset a preset you changed. |
agentPreset | DSH_OPENAI_BRIDGE_PRESET | standard | Agent preset each session is composed from. |
panelPath | — | /bridge | Where the mobile panel mounts. |
fileRoot | DSH_OPENAI_BRIDGE_FILEROOT | cwd | Browse roots for the panel. A string is one root, a list is several, '*' is every fixed drive. See Browsing beyond the workspace. |
approvalScope | — | all | all lets the panel answer approvals for any session; bridge narrows it to sessions in cwd. |
permissionSwitch | — | true | false 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 | — | 180000 | How long a pending authorization stays confirmable. |
desktopPopup | — | true | Whether to auto-open the authorization popup on this PC. |
ipAllowlist | — | true | Refuse every peer that has not been approved, whatever token it holds. Loopback never pairs. See The per-client allowlist. |
pairingPath | — | /pair | Where a not-yet-approved device posts its code. The only route reachable from the LAN without approval. |
pairingTtlMs | — | 600000 | How long a minted pairing code stays valid. |
pairingAttempts | — | 5 | Wrong codes tolerated per code before it is dead for the rest of its TTL. |
pairingPopup | — | true | Open the setup page on this machine by itself when a device starts waiting. |
pairingPopupCooldownMs | — | 15000 | Shortest gap between automatic popups, so a LAN sweep cannot spray windows. |
pairingMaxPending | — | 16 | Waiting devices kept; past this the oldest is dropped. |