Skip to content

v0.2.0 - renamed to dsh-native-codex-cli

Choose a tag to compare

@447662 447662 released this 03 Oct 00:35
· 5 commits to main since this release

v0.2.0 — renamed to dsh-native-codex-cli

Renamed from dsh-codex. That name is already used on npm and on GitHub by an unrelated plugin (Yan-Zero/dsh-codex, a ChatGPT-subscription provider for DSH) which also carries the dsh-plugin topic — two different plugins would have appeared under the same name in the plugin hub. The old repository URL redirects here, but the package name, plugin id, HTTP routes, storage directory and log file all changed, so v0.1.0 should not be installed any more.

DSH owns the chat interface; the Codex CLI owns task execution and native thread history. Tasks go straight to Codex — no second AI paraphrases them, and no chat archive is replayed to fake continuity.

What it does

  • Old conversations — list Codex threads from thread/list, restore the selected one with thread/resume
  • New task — create a native thread with an explicit working directory, model, approval policy and sandbox
  • Send — the message goes verbatim into turn/start; follow-ups during a run use turn/steer
  • Streaming — item/*/delta frames accumulate live, with tool cards for command execution (output, exit code, duration), file changes (with diff), MCP / dynamic tool calls, and errors
  • Stop — turn/interrupt, a real interrupt; pending approvals are refused first so it is not queued behind an unanswered prompt
  • Approvals & questions — command / file-change / permission requests and request_user_input become UI cards, and the choice is sent back to Codex
  • Refresh & restart — the session⇄thread binding is persisted, clientMessageId makes resends idempotent, and SSE reconnects re-read a snapshot
  • Images — paste or pick a screenshot; it is staged on disk and sent as a localImage input, and the transcript shows a thumbnail you can click to enlarge
  • Markdown — Codex's replies render properly (headings, lists, quotes, code, links)

Where it appears

A standalone Codex panel in the sidebar, a Codex view inside any session, a composer takeover for bound sessions, an @codex hand-off button in the native composer, and a main-page dock showing the Codex conversation plus its context (directory / model / approval / sandbox).

@codex is case-insensitive and also accepts the full-width @.

Verified

Check Result
npm run check:utf8 every tracked file is clean UTF-8
npm run check:load green — bundle preamble, slot declarations, event shapes, Markdown renderer
npm run check:smoke 25/25 against a real codex app-server, including a real approval round-trip and a real interrupt
npm run check:http 22/22 over the exact RPC + SSE surface the browser uses

Tested against Codex CLI 0.153.4 and the DSH Desktop desktop profile.

Install

dsh plugin --profile desktop add git+https://github.com/447662/dsh-native-codex-cli.git

Then restart DSH (a profile's bundle list is not hot-reloaded).

Requirements

  • DeepSeek Harness with the Web GUI (desktop or dsh web)
  • Codex CLI on PATH, logged in (codex --version)
  • Node 18+ for the self-checks only

Known limitations

transport: daemon is still a reserved adapter; Codex threads are process-scoped (auto-resumed on demand); thread/turns/list is unimplemented in Codex 0.153.4 so history comes from thread/resume; and assistant/message cannot be authored by a plugin (it embeds the provider stream), so the DSH session log mirrors the user side and Codex's answers render in the main-page dock. See the README for the full list.

Full documentation: README (中文) · README (English) · Protocol reference