Skip to content

Add DeepSeek Harness as a coding agent - #14455

Open
stjohn668-openclaw wants to merge 10 commits into
omacom:quattrofrom
stjohn668-openclaw:add-deepseek-harness
Open

stjohn668-openclaw wants to merge 10 commits into
omacom:quattrofrom
stjohn668-openclaw:add-deepseek-harness

Conversation

@stjohn668-openclaw

@stjohn668-openclaw stjohn668-openclaw commented Oct 7, 2026 •

Copy link
Copy Markdown

DeepSeek Harness becomes a selectable default coding agent through dsh, deepseek, or deepseek-harness. Its official npm developer-preview release is pinned to 0.2.0-rc.2, because mise’s normal npm version selection excludes prereleases.

Omarchy opens the harness’s browser UI with DeepSeek’s no-approval permission preset. The web profile listens on loopback and uses the launch directory as its default workspace. omarchy agent prompt instead runs the supplied task once through DeepSeek’s headless profile, keeping option-like prompt text literal.

Provisioning and Refresh Applications recreate the lazy wrapper. The migration preserves existing commands and respects Remove Preinstalls; removal deletes only Omarchy’s recognized wrapper. The menu carries DeepSeek’s monochrome mark at U+E90F, distributed through an omarchy-settings release. It adds no region-specific configuration or usage collector.

Related: #9777 proposes the same harness through a different integration.

No separate issue is closed.

Testing

Reran the following against 727f8e7 in the Omarchy VM on 2026-10-14; all passed:

  • bash test/shell.d/dsh-agent-test.sh
  • bash test/shell.d/mise-provision-test.sh
  • bash test/shell.d/default-agent-test.sh
  • bash test/shell.d/menu-test.sh
  • ./test/cli

These cover the aliases and pinned lazy installer, ordinary web launches, one-shot headless tasks with literal option-like prompts and the two separators, migration idempotence and the preinstall opt-out, preservation of user-managed launchers during migration/removal, removal of Omarchy's own wrapper, and menu ordering/font coverage. Shell syntax checks also passed for the launch, selection, provisioning, migration, and removal scripts.

The full ./test/all suite and graphical acceptance suite were not rerun in this validation pass.

@greptile-apps

greptile-apps Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no actionable issue remains from this review.

Summary

Adds DeepSeek Harness as a selectable coding agent, with aliases, a pinned lazy installer, and a menu mark.

  • Fresh installs and updates receive the dsh wrapper.
  • Updates respect the preinstall opt-out, and removing preinstalls removes the wrapper.
  • The latest change documents that prompts are not passed to dsh and explains its workspace choice.
  • All three earlier, unnumbered findings are addressed. No new actionable issues were found.

Reviews (5) · Last reviewed commit: "Document where the DeepSeek Harness take..." · Reviewed by Greptile

Comment thread manual/17-ai.md
@jandrusk

jandrusk commented Oct 8, 2026

Copy link
Copy Markdown

Thanks for the research behind the version pin. A few things:

  • As Greptile noted, there's no lazy launcher. install/user/mise.sh installs a stub for the other mise-backed agents, but dsh only gets installed when someone picks it as the default, so typing dsh on a fresh install finds nothing. Adding omarchy-mise-install npm:@deepseek-ai/dsh@0.2.0-rc.2 dsh there, plus a migration for existing installs, would match the others.
  • Add DeepSeek Harness to the agent roster and Install > AI #9777 ("Add DeepSeek Harness to the agent roster and Install > AI", now conflicting) adds the same agent. Linking the two would let a maintainer pick one.
  • U+E90F is the next free slot in the icon font, so other open agent PRs that add a glyph may claim the same codepoint. Worth checking before merge.
  • dsh web serves a UI on a local port. Does it bind to 127.0.0.1 only? A line about that in the manual would help.

@stjohn668-openclaw

Copy link
Copy Markdown
Author

Thanks — pushed an update.

Comment thread migrations/1791520761.sh Outdated
Comment thread install/user/mise.sh
@stjohn668-openclaw

Copy link
Copy Markdown
Author

Both Greptile findings are fixed:

  • ee2896d — the migration now skips when ~/.local/state/omarchy/preinstalls-removed is set, matching the Muse migration.
  • 6c4a244 — omarchy-remove-preinstalls now deletes ~/.local/bin/dsh as well.

Each has a regression assertion in test/shell.d/default-agent-test.sh.

DSH boots a named profile, and the web profile its installer ships serves the
harness's UI on a local port instead of running a terminal UI, so there is no
permission flag to add and no prompt to seed: omarchy-agent boots `dsh web`.

Every release DSH has published so far is a prerelease, and mise's npm backend
lists only stable versions, so the package names 0.2.0-rc.2 outright. Drop the
pin once a stable release exists.

The menu mark is a new U+E90F glyph traced from simpleicons.org.
install/user/mise.sh only runs during provisioning, so the agent roster
entry on its own left `dsh` failing as a command: on a fresh install, and
on every install that predates it, until the user picked the agent, which
installs it. Add the stub to user setup and to a migration.

Name the version: every DSH release so far is a prerelease and mise's npm
backend lists only stable versions.
`dsh web` serves the harness UI on a local port. Record that the port
binds 127.0.0.1, so the manual answers whether the UI is reachable from
the network.
The migration installed the stub for anyone missing it, which included a
user who had removed Omarchy's preinstalls. Match the Muse migration and
skip when ~/.local/state/omarchy/preinstalls-removed is present.
install/user/mise.sh now writes ~/.local/bin/dsh, so removing the
preinstalls has to delete it too, the way it does for every other shipped
agent wrapper.
@stjohn668-openclaw

Copy link
Copy Markdown
Author

Rebased onto quattro (c352b62) to pick up the 15 commits since the branch point. No content changes — the same five commits, replayed.

Heads up on the local test suite, both pre-existing on quattro and unrelated to this PR:

  • test/shell.d/default-agent-test.sh fails at "Grok registry migration drops the npm tool after opt-out": migrations/1790863209.sh calls mise unuse -y -g, while the test matches unuse -g exactly with grep -Fx. It fails the same way with the unmodified quattro test file.
  • The two new background-*-test.sh files need a live Quickshell and fail identically with the unmodified quattro files.

`omarchy agent prompt` has no place to seed a task when the agent's UI is
the harness's own web page, and the harness chooses its workspace there
rather than from the directory it was launched in, so the `~/Work` start
the other agents get does not decide what `dsh` can reach.
@stjohn668-openclaw

Copy link
Copy Markdown
Author

One more commit, covering two launch differences I hit while running dsh end to end on a real install:

  • omarchy agent prompt drops the prompt: the task goes into the harness's own UI, so there is nothing to seed.
  • The harness takes its workspace from that UI rather than from the launch directory, so the ~/Work start the other agents get does not limit what dsh can reach.

Both are noted in the same manual/17-ai.md paragraph as the port note.

dhh and others added 4 commits October 14, 2026 08:46
Preserve current agent and panel integrations while merging quattro. Provision wrappers unconditionally, respect existing commands and the preinstall opt-out in migrations, and remove only owned wrappers. Allocate distinct brand glyphs across the three independent integrations.

Co-Authored-By: GPT-6 in Codex <noreply@openai.com>
Co-Authored-By: Codex Medium (GPT-6.1-sol) <noreply@openai.com>
Co-Authored-By: GPT-6 in Codex <noreply@openai.com>
Co-Authored-By: Codex Medium (GPT-6.1-sol) <noreply@openai.com>
Follow the existing Kimi and Crush one-shot pattern when a prompt is supplied; ordinary launches still open the browser UI. Bind task arguments after -- so option-like text stays literal instead of being treated as CLI flags.

Co-Authored-By: GPT-6 in Codex <noreply@openai.com>
DSH consumes the first -- before passing its argument tail to the profile app. The headless app needs a second separator; otherwise an initial task such as --help opens profile help instead of running the task. Verified against the installed 0.2.0-rc.2 CLI with networking disabled.

Co-Authored-By: GPT-6 in Codex <noreply@openai.com>
@stjohn668-openclaw

Copy link
Copy Markdown
Author

Thanks for bringing this up to date with quattro and fixing prompted launches, including the extra separator for the profile app. I've fast-forwarded my local checkout to 727f8e7 and rerun dsh-agent-test.sh, mise-provision-test.sh, default-agent-test.sh, menu-test.sh, and ./test/cli; all passed. The PR description now includes the Testing details.

Keeping 0.2.0-rc.2 pinned: the npm package still has no stable release.

dhh added a commit that referenced this pull request Oct 15, 2026
DeepSeek Harness (dsh) joins the default agent picker, installed through
mise as npm:@deepseek-ai/dsh pinned to 0.2.0-rc.2, since every release so
far is a prerelease that mise's npm backend would skip. The launcher opens
its browser UI with the danger-full-access permission preset, and runs a
supplied prompt once through the headless profile, which is the only way
dsh accepts one. The manual names its session-log and feedback uploads
and how to turn them off.

From #14455, superseding #9777.

Co-authored-by: john st <njtoronto668@gmail.com>
Co-authored-by: T2816 <zhangjf@tongtech.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@omarchybot omarchybot added the enhancement New feature or request label Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants