deepseek-harness-tui
by openma-ai
Rust/ratatui 终端客户端,直接使用 DSH SDK JSON-RPC 协议,支持独立运行或作为 profile bundle 加载。
A Rust/ratatui terminal client that speaks the DSH SDK JSON-RPC protocol directly and runs standalone or as a profile bundle.
安装
dsh plugin --profile web add github:openma-ai/deepseek-harness-tui#path:/npmGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
目录
Native binaries are packaged for macOS arm64, macOS x64, Linux x64, and Windows x64. Requires Node.js 18+.
Rename note: the project and recommended npm package have moved from DeepSeek Harness TUI /
@openma/deepseek-harness-tuito Martty /martty. Thedsh-tuicommand, configuration, and session data remain compatible. The production profile is nowmartty; legacytuiprofiles continue to work.
Global Agent TUI
npm install --global martty
martty
Martty directly depends on our @openma/deepseek-harness-acp implementation.
It resolves this built-in ACP from its own dependency graph, connects DSH by
default, and requires no separate ACP installation. For another ACP server,
configure DSH_TUI_AGENT; Cordis embedding can instead provide config.agent
or config.stream. --agent is only the standalone CLI override for the same
connection configuration.
Recommended
npm install --global @deepseek-ai/dsh
dsh plugin --profile martty add martty@latest
dsh --profile martty
The profile command is the recommended install and upgrade path. It creates a
missing profile and installs the TUI plus its ACP dependency; no global
martty installation is required.
Migrating from DeepSeek Harness TUI / the scoped package
martty is the recommended package name. Starting with 0.2.13, it and the
legacy @openma/deepseek-harness-tui package are published by the same CI run
with identical versions and artifacts. Existing scoped-package installs remain
supported. To switch package names:
dsh plugin --profile tui remove @openma/deepseek-harness-tui
dsh plugin --profile martty add martty@latest
The recommended profile changes from tui to martty; runtime behavior,
config, and session data remain unchanged. dsh-tui and legacy tui
profiles remain compatible.
The profile Host mounts the ACP plugin on Base, then starts a separate TUI
Client process over standard ACP stdin/stdout. For standalone use, run
martty and use --agent <cmd> plus repeated --agent-arg <arg> for another
ACP server. The Node Client process owns a Cordis tree and starts the Rust painter. A sibling
tui-cordis-client-runner publishes TUI Client capabilities and evaluates
approved code.client packages from dsh-tool-cordis against that client tree.
ACP is a runtime dependency of this package. On a profile that already carries a different version through the standard ACP bundle, the package manager may retain both copies, but the TUI bundle replaces that surface's rows and mounts only the plugin resolved from TUI's own dependency graph. The supported profile shape never runs two ACP surfaces for one TUI.
The package carries ACP as a runtime dependency and exports its Creator Host
overlay internally. The profile bundle mounts both on the Host Base tree;
neither enters the Client tree. Creator adds TUI plugin guidance to the
existing cordis preset and does not use ACP for skill registration.
Creator-authored UI Presets and Theme Plugins preview as process-local dynamic
Packages, then persist explicitly under $MARTTY_HOME/plugins through
tui_plugin_save; tui_plugin_read resumes authoring after restart.
MARTTY_HOME resolves explicitly first, then to $DSH_HOME/.martty, then to
~/.martty. UI choices live in $MARTTY_HOME/settings.json. On first use,
legacy Creator artifacts and settings are copied forward without deleting or
overwriting the old files.
Third-party TUI plugins remain ordinary installed packages. Their Host-side
registrar contributes an absolute Client module entry to tuiClientPlugins;
the Host runner serializes only that directory into the separate Client
process. Package entries and Creator artifacts share one Client lifecycle
manager, with installed packages winning same-id conflicts.
Node and Rust use inherited pipes on Unix and an authenticated loopback TCP socket on Windows. This compositor channel carries theme/render data only; agent traffic remains ACP.
Demo
martty --demo
martty --demo-skin
Without a global installation:
npx --yes martty --demo
The profile path remains recommended for an existing DSH installation that
wants standard plugin management and a durable martty profile. martty is the
primary command; dsh-tui remains a compatibility alias.
Highlights
- Streamed reasoning, replies, tool activity, subagents, run state, and token/cache metrics in one terminal timeline.
- Agent-advertised models, compositions, permissions, authentication methods, and invocable skills in one searchable slash menu.
- Up to eight editable image chips per prompt, with clipboard/file staging and metadata previews on kitty-capable terminals.
- Terminal-aware Markdown for headings, lists, quotes, code, emphasis, links, and mixed CJK/Latin text.
- Durable sessions, queued follow-ups, immediate steering, readline editing, platform-native modifier bindings, mouse selection, and inline-expanded tools.
- Dark/light themes, clipboard routing for local, tmux, and SSH sessions, plus
the optional
/liangpixel companion. - Persistent UI Presets selected with the native
/uipicker (or/ui <id>): builtin Martty and the classic DeepSeek Harness composition, both assembled from independent welcome Hero and information slots without writing to the transcript. - A root
chrome.rightplugin rail for validated TuiNode trees, with live update/unload and Client inspect support for Creator-authored plugins. - Lifecycle-owned local commands and native slider overlays, plus transactions
over the current Session's standard ACP
configOptions. - Dynamic
code.host+code.clientPackages with inspect/run lifecycle and package-private Host/Client RPC over a negotiated_dsh/cordis/*ACP extension. Ordinary ACP agents remain usable when they do not advertise it.
Plugin surface
TUI extensions are ordinary Cordis plugins on the Node Client tree. A single
plugin may register a theme, chrome.right nodes, slash commands, overlays,
timers, Session config transactions, and Host/Client RPC; all contributions
leave together when its fiber stops or /theme replaces the selected Theme
Plugin. Plugins submit semantic data and never receive the TTY, Ratatui,
absolute coordinates, compositor fds, or private transport methods.
The versioned contract and examples live in the repository's plugin API.
The demo needs no API key or agent. Run martty --help for agent, model,
credential, session, theme, and demo options.
Supported platforms
| Node platform key | Binary |
|---|---|
darwin-arm64 |
vendor/darwin-arm64/martty |
darwin-x64 |
vendor/darwin-x64/martty |
linux-x64 |
vendor/linux-x64/martty |
linux-arm64 |
vendor/linux-arm64/martty |
win32-x64 |
vendor/win32-x64/martty.exe |
If installation succeeds but launch reports no native binary for ..., confirm
that you installed the latest version and that your platform appears above.
Uninstall
npm uninstall --global martty
Use npm uninstall --global @openma/deepseek-harness-tui instead for a legacy
global installation.
Source, screenshots, development commands, and architecture notes live in the GitHub repository.
MIT.
原始 README: https://github.com/openma-ai/Martty/blob/main/npm/README.md ↗
同类插件
查看全部 →
dsh-web-ui-all
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

dsh-web-ui
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。

dsh-TUI
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。

DSH-better-sidebar
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。

working-activity
让 agent 的"工作状态行"活过来——实时工具动态与进度、俏皮文案、模型自述、上下文预警。同一套想法,适配两个平台: pi CLI 与 DeepSeek Harness(DSH) 。

deepseek-idesign
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。