deepseek-harness-tui

45Star4Fork1Issue0Watching

给 DeepSeek Harness 提供的终端原生交互界面,基于 ACP 协议连接 agent 并支持主题、命令、插槽等客户端插件扩展。

机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
Rust
License
MIT
分支
main
agentagentsdeepseek-harnessdeepseek-harness-plugindeepseek-harness-plugin-devdeepseek-harness-pluginsdsh-plugindsh-plugins

安装

$ dsh plugin --profile web add github:openma-ai/deepseek-harness-tui

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 openma-ai/deepseek-harness-tui:先查看仓库 https://github.com/openma-ai/deepseek-harness-tui.git 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

这是给 DeepSeek Harness (DSH) 准备的一套终端原生交互界面(终端里的"客户端"),通过 ACP 协议与 agent 通讯,把流式推理、工具调用、Skills、多图 prompt 和持久会话都画进终端。它本身是 DSH 生态的 terminal surface 插件,推荐装到 tui profile 后用 dsh --profile tui 启动。

核心能力

  • 实时呈现 agent 时间线:流式推理、回复、工具参数与结果、subagent 生命周期,以及本回合 token 与 cache 用量
  • 读取 ACP agent 自身声明的模型、权限、认证方式、可用命令,与内置命令合并到一个可搜索、可滚动的 / 斜杠菜单
  • 多图 prompt:从文件、剪贴板或粘贴暂存最多 8 张图片,发送时以可编辑的 [image n] chip 内联在草稿里
  • 终端友好的 Markdown 渲染:标题、列表、引用、代码块、行内代码、强调、删除线、链接、图片,并保留 CJK/Latin 混排
  • 高密度工具视图:长结果默认只保留末四行可点击展开,状态(进行中/成功/失败)一目了然
  • 长会话控制:回合中可排队 follow-up,也能立即 steer 当前回合;持久 JSONL 会话通过 /new/resume--session-id 管理
  • 跨平台输入:readline 编辑、上下文快捷键、macOS 的物理 ⌘/⌥、Linux/Windows 的 ctrl 组合键统一手感
  • 终端原生界面:明暗主题、窄屏自适应、鼠标选择、原生/tmux/OSC 52 剪贴板,支持 kitty graphics protocol 的图片预览与可选的 /liang 像素宠物

技术实现

  • 语言: TypeScript / Node.js(npm 端的 Cordis client 树)+ Rust / ratatui(终端绘制与状态机)
  • 关键依赖: @deepseek-ai/cordis(Cordis 插件容器)、@openma/deepseek-harness-acp(运行时携带的 ACP 客户端,作为 agent 端点)、agent-client-protocol Rust crate(与 agent 通信)、ratatui + tui-markdown(终端渲染)
  • 架构模式: 双进程 Cordis 架构。Host 进程在自己的 Base Cordis 树挂 ACP plugin,再由它启动独立的 TUI Client 子进程;两棵树只通过子进程的标准 stdin/stdout 上的 ACP 协议通信,Client 进程的 fd 3/4 仅承载用户 TTY(Unix)或带随机 token 的 loopback TCP(Windows)。插件通过 Cordis service(tuiThemetuiSlotstuiCommandstuiOverlayacpSessionConfig/Plan/Stats)扩展;主题与视图能力协商后走 _dsh/cordis/*_dsh/cordis/tui/* 扩展点
  • 入口文件: npm/bin/dsh-tui.js(CLI shim)、npm/lib/index.jsdsh-tui-shell Cordis 插件,负责 spawn Rust painter 并 mux ACP + compositor)、src/main.rs(Rust 入口)

适用场景

想在终端而不是浏览器里使用 DeepSeek Harness 的用户,特别是依赖 tmux/ssh、需要快速键鼠操作、想脚本化调用或不喜欢开浏览器窗口的开发者。它也适合做 demo:单独跑 --demo 不需要配置 API key 就能浏览 UI 体验;带 --demo-skin 还能换上内置的 ember 配色包看主题切换效果。

前置依赖与兼容性

依赖最低版本说明
Node.js>= 18npm 端的 Cordis client tree 与 CLI shim 需要 Node 18 及以上
DeepSeek Harness0.1.0-rc.6+安装命令自动处理;本插件在 devDependencies 中声明 @deepseek-ai/dsh@0.1.0-rc.6
ACP 客户端(dsh-acp0.4.13+作为运行时依赖携带,profile 主路径自动挂载;standalone 模式下也可指定别的 ACP server
操作系统macOS arm64/x64、Linux arm64/x64、Windows x64Linux x64 自 0.2.x 起改为静态 musl 链接,不依赖宿主 glibc 版本
原生模块Rust 二进制预编译并随包发布到 npm/vendor/<platform>-<arch>/,不走 node-gyp

安装方式

dsh plugin --profile web add github:openma-ai/deepseek-harness-tui

配置项

本插件无需额外配置。/auth/model/agent/effort/plan/permission/theme/keys/help/image/clip/liang/new/resume!cmd 等行为由 agent 自身能力、运行时状态或运行时命令直接驱动。

下列环境变量只在开发与排障时使用,普通用户无需关心:

环境变量用途
DSH_TUI_BIN覆盖 Rust painter 路径,本地用 cargo build 产物调试时使用
DSH_TUI_AGENT覆盖 standalone 入口默认查找的 ACP agent 命令
DSH_TUI_FORCE_TCP=1在 Unix 上强制走带 token 的 loopback TCP(默认 Windows 才走 TCP)
DSH_HOME覆盖 DSH profile 与 home 目录查找路径

常见问题

Q: 装好后还需要额外配置吗?

A: 不需要。安装命令会自动创建 profile 并把 TUI、ACP 依赖一并装上,直接 dsh --profile tui 就能用;只有调试本地 Rust 编译产物时才需要 DSH_TUI_BIN 环境变量。

Q: 没装 DSH Harness 也能跑吗?

A: 可以。独立入口 dsh-tui 可以 --agent dsh-acp--agent dsh --agent-arg --profile --agent-arg acp 接任意支持 ACP 协议的 agent;--demo 模式不需要任何 agent 或 API key 就能看 UI。

Q: 支持哪些操作系统?

A: macOS(arm64 / x64)、Linux(arm64 / x64)、Windows(x64)。Linux x64 包从 0.2.x 起改为静态 musl 链接,能直接在老发行版(如 Ubuntu 20.04)上跑,不需要 glibc 兼容层。

Q: 不支持 DSH 私有扩展的 ACP agent 也能用吗?

A: 可以。当 agent 在 initialize_meta.dsh.cordis 里没声明该扩展时,TUI 只走标准 ACP(prompt、session、auth、update),不会出现兼容性问题。

Q: 输入框旁边的小难梁宠物不显示怎么办?

A: 只有 Ghostty、Kitty、WezTerm 等支持 kitty graphics protocol 的终端才会显示 RGBA 像素精灵;其他终端退回半块字符鲸鱼,且宽度低于 60 列时会自动隐藏。主界面功能不受影响。

Q: 怎么卸载?

A: 通过 dsh plugin --profile tui remove @openma/deepseek-harness-tui 即可,会同时撤销 profile 里的 TUI bundle 与配套的 ACP/Host rows。

Q: 报 spawn dsh-acp ENOENT 怎么办?

A: 没找到默认 agent 二进制。可以装 DSH 官方 ACP 客户端(dsh-acp),或者用 --agent 显式指向另一个 ACP server,例如 --agent <其它 ACP 命令>

Q: 安装包提示 no native binary for ... 怎么办?

A: 当前安装版本没覆盖你的平台(darwin-arm64/x64、linux-arm64/x64、win32-x64 之外)。确认装的是最新版,或在本地跑 scripts/build-npm.sh 自己编译打包。

上手难度

入门 — 安装一行命令即可使用,进阶用户再去读 docs/plugins.md 写客户端插件扩展主题、插槽、命令等。

已知问题与限制

  • 对话时间线插槽(conversation.chat)尚未开放;当前插件只能贡献 chrome.rightconversation.input.dockconversation.composer.dock,ACP session/update 仍是 transcript 唯一真源,插件节点不能替换 composer 或伪装成会话事件
  • "完全插件化"仍是目标架构,form 控件、更多 shell/conversation slot、运行时诊断面板与独立的 ViewPreset 仍在迁移路线图上,详见 docs/migration.md
  • 第三方插件严格被限制只能拿到 tuiTheme/tuiSlots/tuiCommands/tuiOverlay/ACP session services 这些语义 API;TTY、raw mode、ratatui、kitty 转义、绝对行列坐标与 JSON-RPC 方法表不对插件开放,强行通过运行时直接读 stdin 或 ratatui 状态的写法会被新版本破坏
  • 输入框旁的 /liang 像素宠物只在支持 kitty graphics protocol 的终端上以 RGBA 像素显示,其他终端退回半块字符鲸鱼;终端宽度低于 60 列时直接隐藏(README.md:312-314)
  • 安装包如果提示 no native binary for ...,是因为该平台不在打包矩阵内(darwin-arm64/x64、linux-arm64/x64、win32-x64),需要本地用 scripts/build-npm.sh 自编译,或换装匹配平台的包

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/openma-ai/deepseek-harness-tui)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录