返回目錄

oh-my-dsh

維護狀態: 活躍

agi-fans/oh-my-dsh

基於 DeepSeek Harness 外掛架構、受 oh-my-pi 互動啟發打造的專注鍵盤優先編碼智慧體。

前往 GitHub專案首頁
$ dsh plugin add oh-my-dsh

安裝

dsh 沒有統一的安裝指令 —— 把該外掛 README(見下方)中的設定行加入你的 profile / patch 設定,然後重啟即可。

查看安裝教學

33

星數

4

Fork

TypeScript

語言

MIT

授權條款

2026-08-15

建立於

2026-10-02

最近推送

README

oh-my-dsh

Into the Unknown

omdsh is a focused, keyboard-first DeepSeek coding agent built on the plugin architecture of DeepSeek Harness and inspired by the interaction quality of oh-my-pi and the original Pi agent harness.

CI npm version npm downloads Node.js ^22.19 or >=24 MIT License

Documentation · English · 简体中文

Hello Oh My DSH — v0.19.0 terminal recording

Quick start

Requirements: Node.js 22.19 or later in the 22.x line, or Node.js 24 or newer, plus a DeepSeek API key for live model turns.

npm install --global @agi-fans/oh-my-dsh
omdsh

Run /login once inside omdsh to validate and save your DeepSeek API key, then start a conversation. To try it without a global installation, run npx @agi-fans/oh-my-dsh.

Highlights

  • Durable conversations: search, pin, rename, and resume sessions in /sessions; rewind, retry, compact, and export complete transcripts as Markdown or standalone HTML.
  • Three real session controls: choose a Harness Agent preset (Standard, PTC, Minimal, or Cordis), Workflow (Default or Plan), and Access (Read only, Workspace write, or Full access). Each Agent preset owns its tool exposure; PTC uses the generated TypeScript SDK automatically.
  • Rich terminal input: mention project files and other sessions with @, paste clipboard images, reuse persistent prompt history, edit multiline prompts externally, and retrieve queued follow-ups.
  • Readable turns: follow thinking, replies, and tool previews while the agent works. Completed work folds to a duration summary and the full final answer; Ctrl+O restores the process view. Scroll through either view, keep the current prompt pinned, and jump back to the latest message with End.
  • Inspectable work: press Alt+O for full tool inputs and results in the current turn, use /trajectory for event details, see the files changed by each turn, and let the model search its earlier sessions in the same workspace. Open the Agent Hub with Alt+A to follow child agents and steer continuable tasks.
  • Live operational context: see Agent, Workflow, Access, model, reasoning effort, workspace, Git state, context pressure, tokens, TTFT, throughput, cache, timings, turns, and steps without leaving the composer; use /context for an inline projection-backed breakdown that remains in the transcript.
  • Responsive by design: retain settled transcript layout, coalesce scroll updates, emit row-level terminal diffs, and preserve correct display-cell alignment for CJK text and emoji.

Documentation

The full documentation is published at omdsh.agi.fans, and the Markdown under apps/site/content/ is its source of truth.

Start here

  • Tutorials — complete a first task, give the agent precise context, guide queued work, recover long sessions, customize the environment, and write an installable plugin.
  • Commands — every slash command with its arguments and aliases.
  • Keyboard and keys — editing, transcript, overlay keys, and keybindings.json.

Reference

Extend and integrate

Internals

  • Architecture — plugin boundaries and runtime data flow.
  • Performance — benchmarks, methodology, and rendering optimizations.

Report a bug or request a feature with a guided form for the version, environment, reproduction steps, and sanitized context.

Why oh-my-dsh

DeepSeek Harness provides a capable agent runtime and a strong architectural idea: everything is a plugin. oh-my-dsh brings that runtime into a calm, keyboard-driven terminal experience without creating a second agent core or hiding Harness behind a parallel abstraction.

The TUI remains a presentation and interaction layer. Sessions, tools, permissions, models, Skills, MCP servers, commands, and telemetry come from Harness services and plugins; omdsh composes them into a terminal application and adds the interface behavior needed to use them comfortably. /trajectory opens a keyboard-driven event ledger with Turn/Step grouping, live following, search, folding, timing, token usage, tool payloads, results, and schemas. /context reads the same client-visible Harness projections as the status footer and distinguishes provider-anchored occupancy from heuristic prompt composition.

The project follows four principles:

  • Harness-native: use published DeepSeek Harness packages as the source of truth for agent behavior, state, and lifecycle.
  • Real plugin boundaries: create plugins for independently owned lifecycles and contribution points, not for every source file.
  • One terminal owner: keep raw input, cursor state, viewport management, and atomic rendering inside the local TUI Provider.
  • Progressive disclosure: keep the default view concise while making tools, telemetry, settings, and session detail discoverable on demand.

Reference checkouts under refs/ remain read-only research material. Runtime code depends only on published packages and oh-my-dsh workspace packages.

Architecture

DeepSeek Harness plugins and services
                │
                ▼
  @agi-fans/dsh-tui — terminal capability seam
                │
                ▼
  @agi-fans/oh-my-dsh — boot and plugin composition

The TUI package is split into a service definition, local terminal Provider, session and interaction adapters, tool-presentation bridge, command contributions, and interactive Runner. This isolates terminal ownership from Harness domain state and exposes plugin seams only where a capability has an independent lifecycle or owner. See the architecture overview for the current boundaries and data flow.

Performance

Performance is part of the TUI architecture: durable sessions replay in linear time, Harness Projections avoid repeated history scans, settled transcript blocks retain formatted layout, and the terminal writer emits row-level diffs. The documented Apple M5 Pro measurements from August 2026 recorded a median 2.62 ms for restoring 10,000 conversation turns, 22.71 ms for 10,000 tool calls, and 0.35 ms per cached frame over a 5,000-turn surface. These are historical measurements, not a benchmark of the latest version.

See the reproducible TUI performance report or run pnpm benchmark:tui locally.

Configuration

Run /login to configure a provider. DeepSeek still opens the official key dashboard, validates the key, and prefers the stored credential over an inherited DEEPSEEK_API_KEY. When a mounted provider registers a Harness authorization flow, /login lists that flow and its methods and the terminal only renders the notices and prompts the flow asks for. The same command can also activate a catalog API-key provider or add a custom provider with its own id, base URL, protocol, and model ids. /model then lists every live route. /logout removes an omdsh-managed choice and, for DeepSeek, falls back to the environment when available.

Model settings and the rest of the plugin config persist into the active Profile's Cordis patch, $OMDSH_HOME/profiles/omdsh/cordis.patch.yml; a settings.yaml left by an earlier release is imported once at startup and renamed to settings.yaml.imported. Use /model favorite and /model unfavorite to maintain a small local cycle list, then use Ctrl+P/Alt+P to move through it and Ctrl+T to change reasoning effort. Skills and MCP configuration are documented in Skills and MCP.

After an upgrade, omdsh can show release notes once at startup. Use /changelog for recent entries or /changelog full for the complete packaged history. A cached daily npm check reports newer versions without installing anything automatically; both behaviors can be customized in /settings. Terminal notifications for completed long turns and human prompts are also configured there and remain off by default. Every setting, its allowed values, and its default are listed in Settings.

Generate shell integration without starting the TUI or making network requests:

omdsh completions bash
omdsh completions zsh
omdsh completions fish

Development

pnpm install
pnpm omdsh "list files"  # run from source
pnpm typecheck           # check TypeScript
pnpm test                # unit and pipe-mode tests
pnpm build               # build all workspace packages
pnpm smoke               # interactive PTY smoke test
pnpm smoke:happy         # mock-LLM happy path

The checkouts in refs/deepseek-harness, refs/oh-my-pi, and refs/pi are read-only references. Do not use them as runtime dependencies or modify them while developing omdsh.

Changelog

User-visible changes and release history are tracked in CHANGELOG.md.

Acknowledgements

oh-my-dsh exists because of these projects:

  • DeepSeek Harness provides the runtime foundation, plugin architecture, and the conviction that agent capabilities should be composable rather than embedded in one application.
  • Pi is the original open agent harness whose terminal interaction, differential rendering, and compact coding-agent craft still set the standard this community builds on.
  • oh-my-pi continues that lineage and shows how thoughtful terminal interaction, compact information design, and careful keyboard workflows can make an agent feel fast and approachable.

Thank you to these projects and their contributors. omdsh is an independent community project: it is built on DeepSeek Harness and learns from Pi and OMP, but is not an official distribution of any of them.

License

oh-my-dsh is available under the MIT License.

DSH Plugins 是獨立的 DeepSeek Harness 外掛市集,與 DeepSeek 官方無關,也不代表官方背書。第三方外掛未經安全稽核,安裝前請審查原始碼。

每週取得最新的 DeepSeek Harness 外掛,絕不濫發。